// JavaScript Document
//ajax functions
//var myHttpSocket = false;
var socketTimeout = false;

function createSocket(){
	//set up the socket
	/*if (checkSocket(myHttpSocket)){
		//we got a socket, make sure it's not inuse and then return it
		//we're doing this because of a bug in IE7
		myHttpSocket.abort();
		return myHttpSocket;
	}*/
	//var xmlHttp;
	var myHttpSocket;
	try{ 
		// Firefox, Opera 8.0+, Safari  
		myHttpSocket=new XMLHttpRequest();  
	}catch (e){
		// Internet Explorer
		try{
			myHttpSocket=new ActiveXObject("Msxml2.XMLHTTP");    
		}catch (e){
			try{
				myHttpSocket=new ActiveXObject("Microsoft.XMLHTTP");      
			}catch (e){
				//alert("Sorry, this function is not available");
				return false;
			}
		}
	}
	return myHttpSocket;
}

function checkSocket(obj){
	try
	{
		if (obj == false) return false;
	}catch(e)
	{
		if (e == "[object Error]"){
			//we got the object, continue
		}else{
			return false;
		}
	}
	return true;
}

function ajaxPostRequest(url,parameters,whereTo,sync,onPostComplete){
	if (whereTo == null){
		new Ajax.Request(
			url, {
				parameters: parameters,
				onComplete: onPostComplete
			}
		);
	}else{
		new Ajax.Updater(
			whereTo, 
			url, {
				parameters: parameters,
				onComplete: onPostComplete
			}
		);
	}
}

function expandAndCollapse(el){
	try{
		var closeButton = $(el + '_close_button');
		var openButton = $(el + '_open_button');
		
		if (!isExpanded(el)){
			expandElement(el);
		}else{
			collapseElement(el);
		}
	}catch(e){
		//element does not exist
	}
}

function expandElement(el){
	Effect.BlindDown(el, { duration: 0.2 }); 
	try{
		$(el + '_close_button').style.display='inline';
		$(el + '_open_button').style.display='none';
	}catch(e){
		//the buttons don't exist	
	}
}

function collapseElement(el){
	Effect.BlindUp(el, { duration: 0.2 }); 
	try{
		$(el + '_close_button').style.display='none';
		$(el + '_open_button').style.display='inline';
	}catch(e){
		//the buttons don't exists	
	}
}

function isExpanded(el){
	var obj = $(el);	
	if (obj.style.display == 'none') return false;
	return true;
}

var basketTimer;
var addLoaderHTML = '<img class="ajaxLoaderImage" src="images/ajax-loader-grey.gif" alt="loading..." title="loading..." />';
var removeLoaderHTML = '<img class="ajaxLoaderImage" src="images/ajax-loader-orange.gif" alt="loading..." title="loading..." />';
function addToBasket(el,product){  
	clearTimeout(basketTimer);
	currentYScroll = getYScroll();
	$(el + '_ajax_holder').innerHTML = addLoaderHTML;
	var cp = function(){ completeAddToBasket(el,product); };
	//add the product to the basket
	ajaxPostRequest('ajax_new.php',{ ajax: 'add-product', product_code: product },null,true,cp);
}

function completeAddToBasket(el,product){
	clearTimeout(basketTimer);
	var cp = function(){ completeAddToBasket2(el,product); };
	//update the basket
	ajaxPostRequest('ajax_new.php',{ajax: 'show-basket'},'myBasket',true,cp);
	//update the product bit that got clicked
	
}

function completeAddToBasket2(el,product){
	var additional = '';
	if (isExpanded(el)){
		var vars = 	 { ajax: 'show-basket-page-product', product_code: product, product_expanded: 'yes' };
	}else{
		var vars = 	 { ajax: 'show-basket-page-product', product_code: product };
	}
	ajaxPostRequest('ajax_new.php',vars ,el + '_holder',true, refreshPage);	
}

function removeFromBasket(el,product){
	clearTimeout(basketTimer);
	currentYScroll = getYScroll();
	$(el + '_ajax_holder').innerHTML = removeLoaderHTML;
	var cp = function(){ completeRemoveFromBasket(el,product); };
	//remove the product from the basket
	ajaxPostRequest('ajax_new.php',{ ajax: 'remove-product', product_code: product },null,true,cp);	
}

function completeRemoveFromBasket(el,product){
	clearTimeout(basketTimer);
	var cp = function(){ completeRemoveFromBasket2(el,product); };
	//update the basket
	ajaxPostRequest('ajax_new.php',{ajax: 'show-basket'},'myBasket',true,cp);
}

function completeRemoveFromBasket2(el,product){
	var additional = '';
	if (isExpanded(el)){
		var vars = {ajax: 'show-basket-page-product', product_code: product, product_expanded: 'yes'};
	}else{
		var vars = {ajax: 'show-basket-page-product', product_code: product};
	}
	ajaxPostRequest('ajax_new.php',vars ,el + '_holder',true, refreshPage);	
}


function onBasketTimeout(){
	alert('BASKET TIMEDOUT');	
}

function changeStore(){
	$('store_select_form').submit();
}	

function getYScroll() {
    var x = 0;
	var y = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        // Netscape
        y = window.pageYOffset;
    } else if( document.body && document.body.scrollTop ) {
        // DOM
        y = document.body.scrollTop;
    } else if( document.documentElement && document.documentElement.scrollTop ) {
        // IE6 standards compliant mode
        y = document.documentElement.scrollTop;
    }
    return y;
}
           
function setYScroll(y) {
    window.scrollTo(0, y);
}

function refreshPage(){
	location.reload(true);
}

var currentYScroll = 0;