/*======================================================================================================
======			"Ajax Store Helper"																========
======			ASH	v0.1																		========
======			Created by Goran Babic															========
======																							========
======			If you wish to use or develop this code please contact me.						========
======																							========
======			e-mail: mr.babic@gmail.com														========
======																							========
======================================================================================================*/
var xmlHttp;
var xmlDoc;
var state="";
var paymentMethod="";
var over20=false;
var over20Alert="Your order is over 20kg.\n\nUnfortunately we currently can not process orders this heavy. Please contact us via e-mail at info@eco-organic.com.au for bulk orders.\n\nThank you.";//"Your order is over 20kg.\n\nPlease continue with your order and we will notify you of the appropriate postage and handling charges via e-mail.\n\nThank you.";

function stateChanged(){ 
	if (xmlHttp.readyState==4 && xmlHttp.status == 200){
	
		xmlDoc=xmlHttp.responseXML;
		//product list
		var products = xmlDoc.getElementsByTagName("product");
		//box total
		var boxTotal ="$"+Number(xmlDoc.getElementsByTagName("cart_total")[0].childNodes[0].nodeValue).toFixed(2);
		//p+h
		var ph = xmlDoc.getElementsByTagName("cart_postage")[0].childNodes[0].nodeValue;
		if(ph!="TBA"){
			if(state!=""){
				ph="$"+Number(ph).toFixed(2);
				var total="$"+(toFloat(xmlDoc.getElementsByTagName("cart_total")[0].childNodes[0].nodeValue)+toFloat(ph)).toFixed(2);
			}else{
				ph="Select State.";
				var total="TBA";
			}
			
		}else{
			var total="TBA";
		}
		//total
		var weight =Number(xmlDoc.getElementsByTagName("cart_weight")[0].childNodes[0].nodeValue);
		
		
		
		
		var initialHTML = "<div id=\"cart_header\"></div>";
		initialHTML += "<div id=\"cart_contents\">";
		initialHTML += "<div id=\"cart_contents_qty\"></div>";
		initialHTML += "<div id=\"cart_contents_products\"></div>";
		initialHTML += "<div id=\"cart_contents_unitPrice\"></div>";
		initialHTML += "<div id=\"cart_contents_lineTotal\"></div>";
		initialHTML += "</div>";
		initialHTML += "<div id=\"cart_totals\"></div>";
		initialHTML += "<div id=\"cart_checkout\">";
		initialHTML += "<form action=\"processPayments.php\" method=\"get\">";
		initialHTML += "<select name=\"state\" id=\"state\" onchange=\"postage();\">";
		initialHTML += "<option>Please select state for postage.</option>";
		initialHTML += "<option value=\"NSW\">NSW</option>";
		initialHTML += "<option value=\"QLD\">QLD</option>";
		initialHTML += "<option value=\"ACT\">ACT</option>";
		initialHTML += "<option value=\"VIC\">VIC</option>";
		initialHTML += "<option value=\"NT\">NT</option>";
		initialHTML += "<option value=\"WA\">WA</option>";
		initialHTML += "<option value=\"SA\">SA</option>";
		initialHTML += "<option value=\"TAS\">TAS</option>";
		initialHTML += "</select>";
		initialHTML += "<select id=\"paymentMethod\"  name=\"paymentMethod\" onchange=\"payment();\">";
		initialHTML += "<option value\"\">Please Select Payment Method.</option>";
		if(weight>20){
			//paymentMethod="Deposit"
			//initialHTML += "<option value=\"Deposit\">Direct Bank Deposit (Orders Over 20kg)</option>";
		}else{
			//initialHTML += "<option value=\"Deposit\">Direct Bank Deposit</option>";
			initialHTML += "<option value=\"PayPal\">Pay Pal</option>";
			initialHTML += "<option value=\"CreditCard\">Credit Card</option>";
		}
		initialHTML += "</select>";
		initialHTML += "<br /><br />";
		initialHTML += "<button class=\"checkoutBtn\" value=\"submit\"'";
		if(state=="" || paymentMethod==""){
			initialHTML += "disabled=\"disabled\" ";
		}else{
			initialHTML += " onclick='document.forms[0].submit();' ";
		}
		initialHTML += "><span></span></button>";
		initialHTML += "</form>";
		initialHTML += "</div>";
		
		
		document.getElementById("cart").innerHTML=initialHTML;
		document.getElementById("state").value = state;
		document.getElementById("paymentMethod").value = paymentMethod;
		
		
		var cartTotals = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
		cartTotals += "<tr>";
		cartTotals += "<td align=\"right\"><h3>Box Total:&nbsp;</h3></td>";
		cartTotals += "<td align=\"left\"><h3>"+boxTotal+"</h3></td>";
		cartTotals += "</tr>";		
		cartTotals += "<tr>";
		cartTotals += "<td align=\"right\"><h3>P+H:&nbsp;</h3></td>";
		cartTotals += "<td align=\"left\"><h3>"+ph+"</h3></td>";
		cartTotals += "</tr>";
		cartTotals += "<tr>";
		cartTotals += "<td align=\"right\"><h2>Total:&nbsp;</h2></td>";
		cartTotals += "<td align=\"left\"><h2>"+total+"</h2></td>";
		cartTotals += "</tr>";
		cartTotals += "<tr>";
		cartTotals += "<td align=\"right\"><h4>gst incl.</h4></td>";
		cartTotals += "<td>&nbsp;</td>";
		cartTotals += "</tr>";
		cartTotals += "</table>";
		
		
		
		
		//product total quantity counter (used to check for empty cart)
		var quantity = 0;
		//fills cart qty div
		var cartContentsQty="<h3>qty</h3>";
		//fills product names
		var cartContentsNames="<h3>product</h3>";
		//fills product unit price
		var cartContentsPrices="<h3>unit price</h3>";
		//fills product line total
		var cartContentsLineTotals="<h3>line total</h3>";
		
		//document.getElementById("cart_contents").innerHTML="Your box:<br />";
		for(var i=0;i<products.length;i++){
			if(xmlDoc.getElementsByTagName("product_quantity")[i].childNodes[0].nodeValue>0){
				var pId = xmlDoc.getElementsByTagName("product_id")[i].childNodes[0].nodeValue;
				var pPrice = "$"+Number(xmlDoc.getElementsByTagName("product_price")[i].childNodes[0].nodeValue).toFixed(2);
				var pName = xmlDoc.getElementsByTagName("product_name")[i].childNodes[0].nodeValue;
				var lTotal = "$"+Number(xmlDoc.getElementsByTagName("product_total")[i].childNodes[0].nodeValue).toFixed(2);
				var pQty = Number(xmlDoc.getElementsByTagName("product_quantity")[i].childNodes[0].nodeValue);
				
				
				//quantity DIV==========================================================================================================================================
				cartContentsQty+="<select id=\"qty"+pId+"\" name=\"qty"+pId+"\" onchange=\"addToCart("+pId+",document.getElementById('qty"+pId+"').value)\">";
					for(var j=5;j>=-pQty;j--){
						if(j==0){
							cartContentsQty +="<option selected=\"selected\" value=\"0\">"+pQty+"</option>"
						}else{
							cartContentsQty += "<option value=\""+j+"\">"+(j+pQty)+"</option>";
						}
					}
					cartContentsQty+="</select>&nbsp;x&nbsp;<br />"
				//======================================================================================================================================================
				
				
				//products DIV==========================================================================================================================================
				cartContentsNames+=pName+"<br />";
				//======================================================================================================================================================
				
				//products unit price DIV===============================================================================================================================
				cartContentsPrices+=pPrice+"<br />";
				//======================================================================================================================================================
				
				//products unit price DIV===============================================================================================================================
				cartContentsLineTotals+=lTotal+"<br />";
				//======================================================================================================================================================
				
				
				
				quantity+=Number(xmlDoc.getElementsByTagName("product_quantity")[i].childNodes[0].nodeValue);
				//document.getElementById("cart_contents").innerHTML+="$"+xmlDoc.getElementsByTagName("product_price")[i].childNodes[0].nodeValue;
				//document.getElementById("cart_contents").innerHTML+=" "+xmlDoc.getElementsByTagName("product_name")[i].childNodes[0].nodeValue;
				//document.getElementById("cart_contents").innerHTML+=" = $"+Number(xmlDoc.getElementsByTagName("product_total")[i].childNodes[0].nodeValue).toFixed(2);
				//document.getElementById("cart_contents").innerHTML+=", total weight:"+xmlDoc.getElementsByTagName("product_weight")[i].childNodes[0].nodeValue+"kg";
				//document.getElementById("cart_contents").innerHTML+="<button onclick=\"addToCart("+xmlDoc.getElementsByTagName("product_id")[i].childNodes[0].nodeValue+",-1);\"><span>X</span></button>";
				//document.getElementById("cart_contents").innerHTML+="<br />"
			}
		}
		if(quantity<1){
			//document.getElementById("cart_total").innerHTML="";
			//document.getElementById("cart_weight").innerHTML="";
			document.getElementById("cart_contents").innerHTML="Your box is currently empty.";
			var disabledBtn = "<form action=\"http://www.eco-organic.com.au/products/processPayment.php\" method=\"get\">";
			disabledBtn += "<button class=\"checkoutBtn\" value=\"submit\" disabled=\"disabled\"><span></span></button>";
			disabledBtn += "</form>";
			document.getElementById("cart_checkout").innerHTML=disabledBtn;
		}else{
			document.getElementById("cart_contents_qty").innerHTML=cartContentsQty;
			document.getElementById("cart_contents_products").innerHTML=cartContentsNames;
			document.getElementById("cart_contents_unitPrice").innerHTML=cartContentsPrices;
			document.getElementById("cart_contents_lineTotal").innerHTML=cartContentsLineTotals;
			document.getElementById("cart_totals").innerHTML=cartTotals;
		}
		
		if(weight>20 && over20==false){
			alert(over20Alert);
			over20=true;
		}
	}
}

function GetXmlDocObject(){
	var xmlDoc=null;
	try{//Internet Explorer
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e){
		try{//Firefox, Mozilla, Opera, etc.
			xmlDoc=document.implementation.createDocument("","",null);
		}
		catch(e) {
			  alert(e.message)
		}
	}
	return xmlDoc;
}

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;
}


//========================================	ADD TO CART	=======================================================
function addToCart(productKey,quantity){
	xmlHttp = GetXmlHttpObject();
	xmlDoc = GetXmlDocObject();
	if (xmlHttp==null || xmlDoc==null){
		alert ("Your browser does not support AJAX!");
		return;
	}
	
	if (productKey>0 && quantity!=0){
		try{
			var url = 'http://www.eco-organic.com.au/products/products.php?do=addToCart&pID='+productKey+'&quantity='+quantity+'&state='+state;
			xmlHttp.onreadystatechange=stateChanged;
			xmlHttp.open("GET",url,true);
			xmlHttp.setRequestHeader('Content-Type', "text/xml");
			xmlHttp.send(null);
		}catch(e){
		// caught an error
		alert('Request send failed.');
		}
	}else{
		alert ("Error! No product recieved!");
		return;
	}
}
//========================================	GET CART	=======================================================
function getCart(){
	xmlHttp = GetXmlHttpObject();
	xmlDoc = GetXmlDocObject();
	if (xmlHttp==null || xmlDoc==null){
		alert ("Your browser does not support AJAX!");
		return;
	}
	
	
	try{
		var url = 'http://www.eco-organic.com.au/products/products.php?do=getCart&state='+state;
		xmlHttp.onreadystatechange=stateChanged;
		xmlHttp.open("GET",url,true);
		xmlHttp.setRequestHeader('Content-Type', "text/xml");
		xmlHttp.send(null);
	}catch(e){
	// caught an error
	alert('Request send failed.');
	}
	
}
//============================================	parse a string to a floating point ============================
function toFloat(str){
	for(i=0;i<=str.length;i++){
		if(!isNaN(parseFloat(str.substr(i)))){
			return	parseFloat(str.substr(i));
		}
	}
	//no numbers found in string
	return Number.NaN;
}
//============================================================================================================

function postage(){
	var x = document.getElementById("state");
	state = x.options[x.selectedIndex].text;
	getCart();
}
function payment(){
	var x = document.getElementById("paymentMethod");
	paymentMethod = x.options[x.selectedIndex].value;
	getCart();
}