var dblSubTotal=0;
var dblShipping=0;
var dblSalesTax=0;
var objShippingRateAJAX;
var objTaxRateAJAX;
var objEmailExist;
var frm=document.getElementById("checkout");

function DoesEmailExist(strEmail) {
		objEmailExist=InitializeAJAX();
		var url="/includes/emailexists.php?email="+strEmail;
		//alert(url);
		//window.location.href=url;
		//return;
		if(objEmailExist!=null) {
			//alert(url);
			objEmailExist.onreadystatechange = ProcessDoesEmailExist;
			objEmailExist.open("GET", url, true);
			objEmailExist.send(null);
		}
}

function ProcessDoesEmailExist() {
	if (objEmailExist.readyState == 4) {
		if (objEmailExist.status == 200) {
			//alert(objTaxRateAJAX.responseText);
			if (objEmailExist.responseText!="") {
				var ary=objEmailExist.responseText.split("&");
				for (i=0;i<ary.length-1;i++) {
					arytmp=ary[i].split("=");
					//alert(arytmp[0]);
					if (document.getElementById(arytmp[0])) {
						document.getElementById(arytmp[0]).innerHTML=arytmp[1];
					}
				}
			}
		}			
	}
}

function ValidatePassword() {
	var Password=document.getElementById('tmpPassword');
	var PasswordConfirm=document.getElementById('tmpPasswordConfirm');
	var tmpUserExists=document.getElementById('tmpUserExists');
	
	if ((Password && PasswordConfirm) && Password.value!="") {
		//alert(tmpUserExists.innerHTML);
		if (document.getElementById('txtBillingEmail')) {
			DoesEmailExist(document.getElementById('txtBillingEmail').value)
		}
		if (tmpUserExists.innerHTML=="true") {
			alert('This Username Already Exists');
			return false;
		}
		else {
			if (Password.value==PasswordConfirm.value && Password.value!="")  {
				return true;
			}
			else {
				if (Password.value=="") {
					alert("Please enter a password");
				}
				else {
					alert("Your passwords do not match");
				}
				Password.focus();
				return false;
			}
		}
	}
	else {
		return true;
	}
}



function UpdateGrandTotal() {
	var drp=document.getElementById('tmpUPSService');
	try {
		var ary=drp.options[drp.selectedIndex].value.split("|");
		if (ary.length==2) {
			dblShipping=parseFloat(ary[1]);	
		}
	}
	catch (e) {
		dblShipping=0;
	}
	document.getElementById('lblShippingRate').innerHTML="$"+FormatNumber(dblShipping,2,false,false,true);
	document.getElementById('lblGrandTotal').innerHTML="$"+FormatNumber((dblSubTotal+dblShipping+dblSalesTax),2,false,false,true);
	document.getElementById('hidSubTotal').value=dblSubTotal;
	document.getElementById('hidSalesTax').value=dblSalesTax;
	document.getElementById('hidShipping').value=dblShipping;
}


function InitializeAJAX() {
	try {
		objAJAX=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e) {
		try {
			objAJAX=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(oc) {
			objAJAX=null;
		}
	}

	if(!objAJAX&&typeof XMLHttpRequest!="undefined") {
		objAJAX= new XMLHttpRequest();
	}
	return objAJAX;
} 

function SendTaxQuery(billingstate,billingzip)	{
	if (billingstate=="OH") {
		objTaxRateAJAX=InitializeAJAX();
		var url="/cart/includes/ohiosalestax-autocomplete.php?subtotal="+parseFloat((dblSubTotal+dblShipping))+"&billingstate="+billingstate+"&billingzip="+billingzip;
		//alert(url);
		//window.location.href=url;
		//return;
		if(objTaxRateAJAX!=null) {
			objTaxRateAJAX.onreadystatechange = ProcessOhioTax;
			objTaxRateAJAX.open("GET", url, true);
			objTaxRateAJAX.send(null);
			
		}
	}
}

function ProcessOhioTax()	{
	if (objTaxRateAJAX.readyState == 4) {
		if (objTaxRateAJAX.status == 200) {
			//alert(objTaxRateAJAX.responseText);
			if (objTaxRateAJAX.responseText!="") {
				var ary=objTaxRateAJAX.responseText.split("&");
				
				for (i=0;i<=ary.length-1;i++) {
					arytmp=ary[i].split("=");
					if (arytmp[0]=="lblSalesTaxCounty") {
						eval("document.getElementById('"+arytmp[0]+"').innerHTML = '"+arytmp[1]+" County Tax: '");
						document.getElementById('hidSalesTaxCounty').value=arytmp[1];
						//frm.txtSalesTax.value=document.getElementById(arytmp[0]).innerHTML;
					}
					else if (arytmp[0]=="lblSalesTax") {
						eval("document.getElementById('"+arytmp[0]+"').innerHTML = '$'+FormatNumber("+arytmp[1]+",2,false,false,true);");
						dblSalesTax=parseFloat(arytmp[1]);
					}
				}
			}
			else {
				eval("document.getElementById('lblSalesTaxCounty').innerHTML = ''");
				eval("document.getElementById('lblSalesTax').innerHTML = ''");
				frm.hidSalesTax.value= '0'
				//frm.txtSalesTaxCounty.value= '';
				dblSalesTax=0;	
			}
			UpdateGrandTotal();
		}			
	}
}



function ToggleShippingInfo(chkbox,pnlID,frmID,strBillingPrefix,strShippingPrefix) {
	var pnl=document.getElementById(pnlID);
	var frm=document.getElementById(frmID);
	var bUseBilling=true;
	if (!chkbox.checked) {
		pnl.style.display = "block";
		bUseBilling=false;
	}
	else {
		pnl.style.display = "none";
		//document.Form1.txtShippingState.selectedIndex = document.Form1.txtBillingState.selectedIndex;
	}
	if (bUseBilling) {
		for (var i=0;i<frm.length;i++) {  //Whole Form
			if (frm.elements[i].name) {
				if (frm.elements[i].name.substr(0,strBillingPrefix.length)==strBillingPrefix) {
					try {
						obj=document.getElementById(frm.elements[i].name.replace(strBillingPrefix,strShippingPrefix));
						if (obj.type=="text") {
								if (bUseBilling)
									obj.value=frm.elements[i].value;
								else 
									obj.value="";
						}
						else if (obj.type=="select-one") {
							obj.selectedIndex = frm.elements[i].selectedIndex;
						}
					}
					catch (e) {
						
					}
					
				}
			}
		}
	}
}

function GetShippingRates(pounds,ounces,state,zip)	{
	//if (pounds!=0 || ounces!=0) {
		objShippingRateAJAX=InitializeAJAX();
		var drpShippingCountry=document.getElementById("txtShippingCountry");
		var country="US" //drpShippingCountry.options[drpShippingCountry.selectedIndex].value;
		
		//var url="/cart/includes/usps-autocomplete-test.php?country=United+States&pounds="+pounds+"&ounces="+ounces+"&zip="+zip;
		var url="/cart/includes/ups-autocomplete.php?country=United+States&pounds="+pounds+"&ounces="+ounces+"&country="+country+"&state="+state+"&zip="+zip;
		//window.location.href=url;
		//return;
		//alert(url);
		if(objShippingRateAJAX!=null) {
			objShippingRateAJAX.onreadystatechange = ProcessShippingRates;
			objShippingRateAJAX.open("GET", url, true);
			objShippingRateAJAX.send(null);
			//alert(url);
		}
	//}
}

function clearList(list) {
var i = 0;
var o = list.options;
//alert(o.length);
for (i = o.length; i >= 0; --i)
	o[i] = null;
list.disabled = true;
}

function addElement(list, text_in, value_in) {
var o = list.options;
var nIdx;
if (o.length < 0) //IE for Mac 4.5 sets length to -1 if list is empty
	nIdx = 0;
else
	nIdx = o.length;
if (text_in!="undefined") {
	o[nIdx] = new Option(text_in, value_in);
}
list.disabled = false;
}

function ProcessShippingRates()	{
	if (objShippingRateAJAX.readyState == 4) {
		if (objShippingRateAJAX.status == 200) {
			//alert(objAJAX.responseText);
			if (objShippingRateAJAX.responseText!="") {
				var drpShippingRates=document.getElementById("tmpUPSService");
				clearList(drpShippingRates);
				var ary=objShippingRateAJAX.responseText.split("&");
				for (i=0;i<ary.length-1;i++) {
					arytmp=ary[i].split("=");
					if (arytmp[0]!="Prohibitions" && arytmp[0]!="Restrictions") {
						addElement(drpShippingRates, arytmp[0]+" ($"+arytmp[1]+")", arytmp[0]+"|"+arytmp[1])
					}
				}
				if (drpShippingRates.options.length==0) {
					alert("There has been a problem getting a shipping rate for information you've provided.\n")
				}
			}
			UpdateGrandTotal();
		}
		
	}
}

function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas) { 
	if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";
	var numReturn = new Number(tmpNumStr);
	return numReturn.toFixed(decimalNum);		// Return our formatted string!
}