var xmlHttp


function reloadpage_ajax(type) {
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	 {
	 alert ("Browser does not support HTTP Request")
	 return
	 }
	 		 
	var frm=document.getElementById("basket");
	//save mode:
	frm.reload_page.value = type;
	if (document.getElementById("ajax_loader")) document.getElementById("ajax_loader").style.display = "block";
	if (document.getElementById("cart_submit")) document.getElementById("cart_submit").style.display = "none";	
	submitFormAjax(frm, "basket_ajax.php", stateChangedInfo);
}


function stateChangedInfo(){
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
	 	var xmlDoc = xmlHttp.responseXML;
		if (xmlDoc) {
			var response = xmlDoc.getElementsByTagName("basket_ajax")[0];
			//if the document requests a redirect, process only that
			if (response.getElementsByTagName("redirect_url")[0]){
			   var redirect_url = response.getElementsByTagName("redirect_url")[0].childNodes[0].nodeValue			   
			   document.location = redirect_url;
			   return;
			}
			
			//execute javascript commands received:
			if (response.getElementsByTagName("javascript")[0]){
			   var command = response.getElementsByTagName("javascript")[0].childNodes[0].nodeValue;
			   eval(command);
			}			
			if (response.getElementsByTagName("basket_tabs")[0]) {
				var tabs = response.getElementsByTagName("basket_tabs")[0].childNodes;
				for (i=0;i<tabs.length;i++){
					if (document.getElementById("tab_"+tabs[i].nodeName))
						document.getElementById("tab_"+tabs[i].nodeName).innerHTML = tabs[i].childNodes[0].nodeValue;
					else
						alert("tab_"+tabs[i].nodeName + " is undefined!");
				}
			}
		} 
		else { 
			alert ("xmldoc is null!") 
		}
			
		if (document.getElementById("ajax_loader")) document.getElementById("ajax_loader").style.display = "none";
		if (document.getElementById("cart_submit")) document.getElementById("cart_submit").style.display = "block";						
	}
} 


function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
	 // Firefox, Opera 8.0+, Safari
	 xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
	 //Internet Explorer
	 try
	  {
	  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	  }
	 catch (e)
	  {
	  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	}
	return xmlHttp;
}


function submitFormAjax(frm, actionUrl, callbackFunction) {
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	 {
		 alert ("Browser does not support HTTP Request")
		 return
	 }
	 		 	
	//create a string with all form's paramters
	var params = "";	
	for (var i=0; i<frm.elements.length; i++)
	{
		var val;
		//TBD: add special code for lists with multiple selections if needed
		if (frm.elements[i].type == "checkbox" || frm.elements[i].type == "radio") {
			//save the value only if it is checked
			if (!frm.elements[i].checked) continue;
			val = (frm.elements[i].checked) ? frm.elements[i].value : "";
		} else {
			val = frm.elements[i].value;
		}
	   params += (params != "" ? "&" : "") + frm.elements[i].name + "=" + encodeURI(val);	   
	}
	
	//set function that will process the results
	xmlHttp.onreadystatechange=callbackFunction
	
	//open connection, set headers and send parameters
	xmlHttp.open("POST", actionUrl, true);
	//Send the proper header information along with the request
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");	 
	xmlHttp.send(params)
}

