// JavaScript Document

//////////////////////////////////////////////////////////////////////////////////
//MACROMEDIA GENERATED SWAP IMAGE CODE
//////////////////////////////////////////////////////////////////////////////////
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

///////////////////////////////////////////////////////////////////////////////////////
/// AJAX CODE SECTION
///////////////////////////////////////////////////////////////////////////////////////
var xmlhttp; // used to hold the XML Field returned ASPX C# XML output

///////////////////////////////////////////////////////////////////////////////////////
//METHOD: addToCart
//DESCRIPTION: Add Item to the Session Cart, AJAX accessing ASPX C# File
//MODIFIED: Nicolas, 2005-12-14-13:00
//////////////////////////////////////////////////////////////////////////////////////
	function addToCart(id) {	
		var url = "cartSession.aspx?productno="+id;
		
		// code for Mozilla, etc. non-IE
		if (window.XMLHttpRequest)
  		{
  			xmlhttp=new XMLHttpRequest();
  			xmlhttp.onreadystatechange=changeCartState;
  			xmlhttp.open("GET",url,true);
  			xmlhttp.send(null);
  		}
		// code for IE
		else if (window.ActiveXObject)
  		{
  			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    		if (xmlhttp)
    		{
    			xmlhttp.onreadystatechange=changeCartState;
    			xmlhttp.open("GET",url,true);
    			xmlhttp.send();
    		}
  		} 
	}
	
///////////////////////////////////////////////////////////////////////////////////////
//METHOD: changeCartState
//DESCRIPTION: Add Item to the Session Cart, returned from ASPX C# file
//MODIFIED: Nicolas, 2005-12-14-13:00
//////////////////////////////////////////////////////////////////////////////////////	
	function changeCartState()
	{
		// if xmlhttp shows "loaded"
		if (xmlhttp.readyState==4)
  		{
  			// if "OK"
  		    if (xmlhttp.status==200)
  		    {
				var xmlDoc = xmlhttp.responseXML;
				//alert(xmlhttp.responseText);
				var nds = xmlDoc.getElementsByTagName("product");
		  		var nd = nds[0];
		  		document.getElementById("items").innerHTML = "Item(s): " + nd.attributes[0].nodeValue;
				document.getElementById("balance").innerHTML = "Balance: " + nd.attributes[1].nodeValue;
  			}
  			else
  			{
  				alert("Problem retrieving data:" + xmlhttp.statusText)
  			}
  		}
	}
	
///////////////////////////////////////////////////////////////////////////////////////
//SECTION: Cart Maintenance Methods 
//
//////////////////////////////////////////////////////////////////////////////////////		
	
var xmlhttpCartStatus;
var xmlhttpCartUpdate;
var currentID;
var error=0;

///////////////////////////////////////////////////////////////////////////////////////
//METHOD: updateFromCart
//DESCRIPTION: Update QTY of an Item contained within the Session.
//MODIFIED: Nicolas, 2006-01-14-13:00
//////////////////////////////////////////////////////////////////////////////////////	
function updateFromCart(id)
{ 
		var qtyValue = parseInt(document.getElementById(id).value);
		if (qtyValue > 0){
		var url = "cartUpdate.aspx?productno="+id+"&qty="+document.getElementById(id).value;
		// code for Mozilla, etc. non-IE
		if (window.XMLHttpRequest)
  		{
  			xmlhttpCartUpdate=new XMLHttpRequest();	
			xmlhttpCartUpdate.onreadystatechange=cartUpdateState;		
  			xmlhttpCartUpdate.open("GET",url,true);
  			xmlhttpCartUpdate.send(null);
			
  		}
		// code for IE
		else if (window.ActiveXObject)
  		{
  			xmlhttpCartUpdate=new ActiveXObject("Microsoft.XMLHTTP");			
    		if (xmlhttpCartUpdate)
    		{
    			xmlhttpCartUpdate.onreadystatechange=cartUpdateState;
    			xmlhttpCartUpdate.open("GET",url,true);
    			xmlhttpCartUpdate.send();
    		}
			
  		}
	}else
	{
		document.getElementById(id).value = document.getElementById("h-"+id).value
		alert(" You can't set negative QTY"); 
	}	
}

///////////////////////////////////////////////////////////////////////////////////////
//METHOD: cartUpdateState
//DESCRIPTION: Implementation of Inner Method for C# XML Access
//MODIFIED: Nicolas, 2006-01-14-13:00
//////////////////////////////////////////////////////////////////////////////////////	
function cartUpdateState()
{

		// if xmlhttp shows "loaded"
		if (xmlhttpCartUpdate.readyState==4)
  		{
		  	// if "OK"
  		    if (xmlhttpCartUpdate.status==200)
  		    {

				var xmlDoc = xmlhttpCartUpdate.responseXML;
				//alert(xmlhttpCartStatus.responseText);
				var nds = xmlDoc.getElementsByTagName("product");
								var nds = xmlDoc.getElementsByTagName("product");
		  		var nd = nds[0];
				var tableStruct = "<table width='100%' border='0' cellpadding='0' cellspacing='0'>";
				for(var idx =0; idx < nds.length; idx++)
				{
					var nd = nds[idx];
					tableStruct = tableStruct+"<tr>";
                	tableStruct = tableStruct+"<td width='85' height='24' valign='middle' class='bodyText'>&nbsp;&nbsp;"
								 +nd.attributes[0].nodeValue+"</td>";
					
					tableStruct = tableStruct +"<td width='160' valign='middle' class='bodyText'>"
												+nd.attributes[1].nodeValue+"</td>";
								
					var priceExt = parseFloat(nd.attributes[2].nodeValue) * 0.1;
					priceExt = parseFloat(nd.attributes[2].nodeValue) - priceExt;
								
					tableStruct = tableStruct +"<td colspan='2' width='76'  class='bodyText'>$"+priceExt.toFixed(2)+"</td>";
					tableStruct = tableStruct +"<td width='76' class='bodyText'>$"
								  +parseFloat(nd.attributes[2].nodeValue).toFixed(2)+"</td>";			
                	tableStruct = tableStruct +"<td width='50' class='bodyText'>"
								 +"<input name=\"Input\" id=\""+nd.attributes[0].nodeValue+"\" type=\"text\" size=\"5\" value=\""
								 +nd.attributes[3].nodeValue+
								"\"class=\"bodyText\"  maxlength=\"5\" />"
								+"<input type=\"hidden\" id=\"h-"+nd.attributes[0].nodeValue
								+"\" value=\""+nd.attributes[3].nodeValue+"\" >"
								+"</td>";
							
					var linkPathR = " \"javascript:removeFromCart('"+nd.attributes[0].nodeValue+"');\" ";
					var linkPathU = " \"javascript:updateFromCart('"+nd.attributes[0].nodeValue+"');\" ";
                	tableStruct = tableStruct +"<td width='101' class='bodyText' >"+
									"<a href="+linkPathU+">Update</a>&nbsp;&nbsp;<a href="+linkPathR+">Remove</a> </td>";
              		tableStruct = tableStruct +"</tr>";
			  	}
				tableStruct = tableStruct +"</table>";
		  		document.getElementById("CartProducts").innerHTML =tableStruct;
				cartStatus();
	
			}else
			{
				
				alert("Problem retrieving data Update:" + xmlhttpCartUpdate.statusText);
			}
  	
  		}

}
///////////////////////////////////////////////////////////////////////////////////////
//METHOD: removeFromCart
//DESCRIPTION: Remove an Item contained within the Session.
//MODIFIED: Nicolas, 2006-01-14-13:00
//////////////////////////////////////////////////////////////////////////////////////
function removeFromCart(id)
{
		
		var url = "cartRemove.aspx?productno="+id;
		currentID = id;
		// code for Mozilla, etc. non-IE
		if (window.XMLHttpRequest)
  		{
  			xmlhttp=new XMLHttpRequest();	
			xmlhttp.onreadystatechange=cartRemoveState;		
  			xmlhttp.open("GET",url,true);
  			xmlhttp.send(null);
			
  		}
		// code for IE
		else if (window.ActiveXObject)
  		{
  			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");			
    		if (xmlhttp)
    		{
    			xmlhttp.onreadystatechange=cartRemoveState;
    			xmlhttp.open("GET",url,true);
    			xmlhttp.send();
    		}
			
  		} 
		
}

///////////////////////////////////////////////////////////////////////////////////////
//METHOD: cartRemoveState
//DESCRIPTION: Implementation of Inner Method for C# XML Access
//MODIFIED: Nicolas, 2006-01-14-13:00
//////////////////////////////////////////////////////////////////////////////////////
function cartRemoveState()
{
		// if xmlhttp shows "loaded"
		if (xmlhttp.readyState==4)
  		{
			// if "OK"
  		    if (xmlhttp.status==200)
  		    {
				var xmlDoc = xmlhttp.responseXML;
				//alert(xmlhttp.responseText);
				var nds = xmlDoc.getElementsByTagName("product");
		  		var nd = nds[0];
				var tableStruct = "<table width='100%' border='0' cellpadding='0' cellspacing='0'>";
				for(var idx =0; idx < nds.length; idx++)
				{
					var nd = nds[idx];
					tableStruct = tableStruct+"<tr>";
                	tableStruct = tableStruct+"<td width='85' height='24' valign='middle' class='bodyText'>&nbsp;&nbsp;"
								 +nd.attributes[0].nodeValue+"</td>";
					
					tableStruct = tableStruct +"<td width='160' valign='middle' class='bodyText'>"
												+nd.attributes[1].nodeValue+"</td>";
								
					var priceExt = parseFloat(nd.attributes[2].nodeValue) * 0.1;
					priceExt = parseFloat(nd.attributes[2].nodeValue) - priceExt;
								
					tableStruct = tableStruct +"<td colspan='2' width='76'  class='bodyText'>$"+priceExt.toFixed(2)+"</td>";
					tableStruct = tableStruct +"<td width='76' class='bodyText'>$"
								  +parseFloat(nd.attributes[2].nodeValue).toFixed(2)+"</td>";			
                	tableStruct = tableStruct +"<td width='50' class='bodyText'>"
								 +"<input name=\"Input\" id=\""+nd.attributes[0].nodeValue+"\" type=\"text\" size=\"5\" value=\""
								 +nd.attributes[3].nodeValue+
								"\"class=\"bodyText\"  maxlength=\"5\" />"
								+"<input type=\"hidden\" id=\"h-"+nd.attributes[0].nodeValue
								+"\" value=\""+nd.attributes[3].nodeValue+"\" >"
								+"</td>";
							
					var linkPathR = " \"javascript:removeFromCart('"+nd.attributes[0].nodeValue+"');\" ";
					var linkPathU = " \"javascript:updateFromCart('"+nd.attributes[0].nodeValue+"');\" ";
                	tableStruct = tableStruct +"<td width='101' class='bodyText' >"+
									"<a href="+linkPathU+">Update</a>&nbsp;&nbsp;<a href="+linkPathR+">Remove</a> </td>";
              		tableStruct = tableStruct +"</tr>";
			  	}
				tableStruct = tableStruct +"</table>";
		  		document.getElementById("CartProducts").innerHTML =tableStruct;
				cartStatus();
				error=0;
			}
			else
  			{
				 if(error < 3)
				{
					removeFromCart(currentID);
					error++;
				}else
  					alert("Problem retrieving data Remove:" + xmlhttp.statusText)

					
  			}
  		}
}
///////////////////////////////////////////////////////////////////////////////////////
//METHOD: cartStatus
//DESCRIPTION: Updates the Cart panel, retrieving the current state of the Session.  
//MODIFIED: Nicolas, 2006-01-14-13:00
//////////////////////////////////////////////////////////////////////////////////////
function cartStatus()
{
		var url = "cartStatus.aspx";

		// code for Mozilla, etc. non-IE
		if (window.XMLHttpRequest)
  		{
  			xmlhttpCartStatus=new XMLHttpRequest();	
			xmlhttpCartStatus.onreadystatechange=cartStatusState;		
  			xmlhttpCartStatus.open("GET",url,true);
  			xmlhttpCartStatus.send(null);
			
  		}
		// code for IE
		else if (window.ActiveXObject)
  		{
  			xmlhttpCartStatus=new ActiveXObject("Microsoft.XMLHTTP");			
    		if (xmlhttpCartStatus)
    		{
    			xmlhttpCartStatus.onreadystatechange=cartStatusState;
    			xmlhttpCartStatus.open("GET",url,true);
				xmlhttpCartStatus.send();
    		}
			
  		} 
}

///////////////////////////////////////////////////////////////////////////////////////
//METHOD: cartStatusState
//DESCRIPTION: Implementation of Inner Method for C# XML Access
//MODIFIED: Nicolas, 2006-01-14-13:00
//////////////////////////////////////////////////////////////////////////////////////	
function cartStatusState()
{
		// if xmlhttp shows "loaded"
		if (xmlhttpCartStatus.readyState==4)
  		{
		  	// if "OK"
  		    if (xmlhttpCartStatus.status==200)
  		    {

				var xmlDoc = xmlhttpCartStatus.responseXML;
				//alert(xmlhttpCartStatus.responseText);
				var nds = xmlDoc.getElementsByTagName("product");
		  		var nd = nds[0];
		  		document.getElementById("items").innerHTML = "Item(s): " + nd.attributes[0].nodeValue;
				document.getElementById("balance").innerHTML = "Balance: " + nd.attributes[1].nodeValue;
				document.getElementById("totalGST").innerHTML = " " + nd.attributes[1].nodeValue;
					var priceExt = parseFloat(nd.attributes[2].nodeValue) * 0.1;
					priceExt = parseFloat(nd.attributes[2].nodeValue) - priceExt;
			    document.getElementById("totalEX").innerHTML = " $" +priceExt.toFixed(2) ;		
			}else
			{
				
				alert("Problem retrieving data Cart:" + xmlhttpCartStatus.statusText);
			}
  	
  		}
}


