// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject(); 
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject() 
{	
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // if running Internet Explorer
  if(window.ActiveXObject)
  {
    try
    {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // if running Mozilla or other browsers
  else
  {
    try 
    {
      xmlHttp = new XMLHttpRequest();
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // return the created object or display an error message
  if (!xmlHttp)
 
    alert("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
}

// make asynchronous HTTP request using the XMLHttpRequest object 
function process() {

 // if (xmlHttp.readyState != 4 )

  //alert("Navin");
  // proceed only if the xmlHttp object isn't busy
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {
  	document.getElementById('load').style.display = '';
   
   var con = document.getElementById('ship_country').value;
   	var pin = document.getElementById('ship_zip').value;
	var url = "&ctry=" + con + "&pin=" + pin;
	//alert(url);
	// retrieve the name typed by the user on the form
    //name = encodeURIComponent(document.getElementById("myName").value);
    // execute the quickstart.php page from the server
    xmlHttp.open("GET", "shopping_cart.php?action=shipping&task=add" + url, true);  
    // define the method to handle server responses
	//	alert('hello');

	xmlHttp.onreadystatechange = handleServerResponse;

    // make the server request
    xmlHttp.send(null);
  } else {
    // if the connection is busy, try again after one second  
    setTimeout('process()', 1000);
  }

}

// executed automatically when a message is received from the server
function handleServerResponse() 
{
  // move forward only if the transaction has completed
  if (xmlHttp.readyState == 4) 
  {
    // status of 200 indicates the transaction completed successfully
    if (xmlHttp.status == 200) 
    {

		// retrieve the element clicked by the user
		//var hidImageId = document.getElementById('imageId');

		//var imageId = 'img' + hidImageId.value;
		//alert(imageId);
		var divElement = document.getElementById("shipping");
		// extract the XML retrieved from the server
		xmlResponse = xmlHttp.responseText;
		//alert(xmlResponse + ' - ' + img);
		// if order have bad status
		if(xmlResponse == 'UN') {
			//alert(xmlResponse);
			divElement.innerHTML = 'Problem in update!!!';
		} else {
			divElement.innerHTML = xmlResponse;
	//		alert('Problem in update!');
		}

		document.getElementById('load').style.display = 'none';

		  //document.getElementById("divMessage").innerHTML = '<strong>' + helloMessage + '</strong>';
		  // restart sequence
		 //setTimeout('process()', 1000);
    } 
	// a HTTP status different than 200 signals an error
	 else 
    {
      alert("There was a problem accessing the server: " + xmlHttp.statusText);
    }
	
  } else  {
		//document.getElementById("awl").innerHTML = "Working...";
		//document.getElementById("awlImg").style.display = '';
  	} 
}




/* process shipping */

// make asynchronous HTTP request using the XMLHttpRequest object 
function processShipping(val) {

 // if (xmlHttp.readyState != 4 )

  //alert("Navin");
  // proceed only if the xmlHttp object isn't busy
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {
  	document.getElementById('load').style.display = '';
   
   // storing the currect shipping value to hidden field
   // for future use
   document.getElementById('txtShipping').value = val;

	var url = "&shipping=" + val;
	//alert(url);
	// retrieve the name typed by the user on the form
    //name = encodeURIComponent(document.getElementById("myName").value);
    // execute the quickstart.php page from the server
    xmlHttp.open("GET", "shopping_cart.php?action=updateshipping&task=add" + url, true);  
    // define the method to handle server responses
	//	alert('hello');

	xmlHttp.onreadystatechange = handleServerResponseShipping;

    // make the server request
    xmlHttp.send(null);
  } else {
    // if the connection is busy, try again after one second  
    setTimeout('processShipping(val)', 1000);
  }

}

// executed automatically when a message is received from the server
function handleServerResponseShipping() 
{
  // move forward only if the transaction has completed
  if (xmlHttp.readyState == 4) 
  {
    // status of 200 indicates the transaction completed successfully
    if (xmlHttp.status == 200) 
    {

		// retrieve the element clicked by the user
		//var hidImageId = document.getElementById('imageId');

		//var imageId = 'img' + hidImageId.value;
		//alert(imageId);
		var ship = Array(3);
		var shipping = document.getElementById('txtShipping').value;
		ship = shipping.split("_");
		
		var subtotalAmt = document.getElementById('txtSubtotal').value;

		var divElementType = document.getElementById("shippingType");
		var divElementSAmt = document.getElementById("shippingAmt");
		var divElementOAmt = document.getElementById("orderAmt");
 
 		// extract the XML retrieved from the server
		xmlResponse = xmlHttp.responseText;
		//alert(xmlResponse + ' - ' + img);
		// if order have bad status
		if(xmlResponse == 'UN') {
			//alert(xmlResponse);
			divElement.innerHTML = 'Problem in update!!!';
		} else if( xmlResponse == 'SUCCESS' ) {
			var orderTotal = parseFloat(subtotalAmt) + parseFloat(ship[2]);
			divElementType.innerHTML = '(' + ship[1] + ')';
			divElementSAmt.innerHTML = '$' + ship[2];
			divElementOAmt.innerHTML = '$' + orderTotal.toFixed(2);
		} else {
			alert('Problem in update!');
		}

		document.getElementById('load').style.display = 'none';

		  //document.getElementById("divMessage").innerHTML = '<strong>' + helloMessage + '</strong>';
		  // restart sequence
		 //setTimeout('process()', 1000);
    } 
	// a HTTP status different than 200 signals an error
	 else 
    {
      alert("There was a problem accessing the server: " + xmlHttp.statusText);
    }
	
  } else  {
		//document.getElementById("awl").innerHTML = "Working...";
		//document.getElementById("awlImg").style.display = '';
  	} 
}
