/*
AJAX SCRIPT FOR POSTING WEIGHT VALUES TO UPS
Author: DPC for The Grantsmanship Center
01-November-2009
Dependencies: [publications.php][ajax_ups.php]
UPS RETURNS BACK THE VALUE [str]
*/

function xmlhttpPost(strURL) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
	if (window.XMLHttpRequest) {
	self.xmlHttpReq = new XMLHttpRequest();
// IE
	} else if (window.ActiveXObject) {
	self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	self.xmlHttpReq.onreadystatechange = function() {
		if (self.xmlHttpReq.readyState == 4) {
		updatepage(self.xmlHttpReq.responseText);
		}
	}

// SHOW PROGRESS GRAPHIC WHILE WAITING
document.getElementById("shpchk").innerHTML="<img src=\"../images/ajax-loader.gif\"><img src=\"../images/clearPix.gif\" width=\"20\">";

// MAKE SURE A QUANTITY HAS BEEN ENTERED
var pppw  = document.cart.PPPW.value;
var xpp   = document.cart.XPP.value;
var adapt = document.cart.ADAPT.value;
var pcef  = document.cart.PCEF.value;
//var bgl   = document.cart.BGL.value;
var cfda  = document.cart.CFDA.value;
var eval  = document.cart.EVAL.value;
var mktg  = document.cart.MKTG.value;
var ask   = document.cart.ASK.value;
var af    = document.cart.AF.value;
var ar    = document.cart.AR.value;

//var itotal = (pppw + xpp + adapt + pcef + bgl + cfda + eval + mktg + ask +  + af + ar);	
var itotal = (pppw + xpp + adapt + pcef + cfda + eval + mktg + ask +  + af + ar);		

// MAKE SURE WE HAVE ALL SHIPPING INFORMATION	
snum = 0;
var sFirstName = document.getElementById("sFirstName").value;
	if (sFirstName) snum++;
var sLastName = document.getElementById("sLastName").value;
	if (sLastName) snum++;
var sAddress = document.getElementById("sAddress").value;
	if (sAddress) snum++;
var sCity = document.getElementById("sCity").value;
	if (sCity) snum++;
var sState = document.getElementById("sState").value;
	if (sState) snum++;
var sCountry = document.getElementById("sCountry").value;
	if (sCountry) snum++;
var sZip = document.getElementById("sZip").value;
	if (sZip) snum++;
var sEmail = document.getElementById("sEmail").value;
	if (sEmail) snum++;
var sPhone = document.getElementById("sPhone").value;
	if (sPhone) snum++;
	
	// WE HAVE ERROR-CHECKING ON SUBMIT, BUT WE NEED IT HERE TOO
	if (snum < 9) {
	alert("Please completely fill out all the \"Ship To\" fields.");
	document.getElementById("shpchk").innerHTML="";
	} else if (itotal == 0) {
	alert("Please enter an item quantity.");
	document.getElementById("shpchk").innerHTML="";
	document.getElementById("gTotal").innerHTML = "";
	document.getElementById("gt").value = "";
	document.getElementById("st").value = "";
	document.getElementById("discMsg").innerHTML = "";
	document.getElementById("discount").innerHTML = "";
	document.getElementById("ast").innerHTML = "";
	} else {
	self.xmlHttpReq.send(getquerystring());
	}
}

function getquerystring() {
// CALCULATE WEIGHT IN OUNCES
// NUMBER MULTIPLIED BY IS WEIGHT OF ONE ITEM IN OUNCES
var ozpppw  = (document.cart.PPPW.value * 2);
var ozxpp   = (document.cart.XPP.value * 7);
var ozadapt = (document.cart.ADAPT.value * 4);
var ozpcef  = (document.cart.PCEF.value * 3);
//var ozbgl   = (document.cart.BGL.value * 1);
var ozcfda  = (document.cart.CFDA.value * 2);
var ozeval  = (document.cart.EVAL.value * 5);
var ozmktg  = (document.cart.MKTG.value * 1);
var ozask   = (document.cart.ASK.value * 2);
var ozaf    = (document.cart.AF.value * 3);
var ozar    = (document.cart.AR.value * 3);

//var totaloz = (ozpppw + ozxpp + ozadapt + ozpcef + ozbgl + ozcfda + ozeval + ozmktg + ozask +  + ozaf + ozar);
var totaloz = (ozpppw + ozxpp + ozadapt + ozpcef + ozcfda + ozeval + ozmktg + ozask +  + ozaf + ozar);

var totallb = (totaloz / 16);

// BOX WEIGHT AND HANDLING ADDITIONS
	if (totallb <= 1) {
	hAdd = "1.00";
	} else if ((totallb > 1) && (totallb <= 10)) {
	hAdd = "2.00";
	} else if ((totallb > 10) && (totallb <= 20)) {
	hAdd = "3.00";
	} else if ((totallb > 20) && (totallb <= 30)) {
	hAdd = "4.00";
	} else if ((totallb > 30) && (totallb <= 40)) {
	hAdd = "5.00";
	} else if ((totallb > 40) && (totallb <= 50)) {
	hAdd = "6.00";
	} else if ((totallb > 50) && (totallb <= 60)) {
	hAdd = "7.00";
	} else if ((totallb > 60) && (totallb <= 70)) {
	hAdd = "8.00";
	} else if ((totallb > 70) && (totallb <= 80)) {
	hAdd = "9.00";
	} else if ((totallb > 80) && (totallb <= 90)) {
	hAdd = "10.00";
	} else if ((totallb > 90) && (totallb <= 100)) {
	hAdd = "11.00";
	} else if (totallb > 100) {
	hAdd = "15.00";
	} else {
	hAdd = "0.00";
	}
	
document.getElementById('hadd').value = hAdd;

// SHIPPING METHOD
var selService	   = document.getElementById("selService").value;
var selRate	   = document.getElementById("selRate").value;
var selPackaging   = document.getElementById("selPackaging").value;
var selResidential = document.getElementById("selResidential").value;

var txtPackLength  = document.getElementById("txtPackLength").value;
var txtPackWidth   = document.getElementById("txtPackWidth").value;
var txtPackHeight  = document.getElementById("txtPackHeight").value;

// SHIPPING FROM
var fCity	= document.getElementById("fCity").value;
var fZip	= document.getElementById("fZip").value;
var fCountry	= document.getElementById("fCountry").value;

// SHIPPING TO
var sZip	= document.getElementById("sZip").value;
var sCity	= document.getElementById("sCity").value;
var sCountry	= document.getElementById("sCountry").value;

// BELOW IS THE QUERYSTRING POSTED TO [ajax_ups_return.php]
// IT THEN GETS SENT TO [http://www.ups.com/using/services/rave/qcostcgi.cgi]
// AND THE VALUE RETURNED BACK FROM UPS IS [str]
// NOTE: no '?' before querystring
qstr = 'txtFromZip=' + escape(fZip) + '&selService=' + escape(selService) + '&txtFromCountry=' + escape(fCountry) + '&txtFromCity=' + escape(fCity) + '&txtToZip=' + escape(sZip) + '&txtToCity=' + escape(sCity) + '&txtToCountry=' + escape(sCountry) + '&txtPackWeight=' + escape(totallb) + '&selRate=' + escape(selRate) + '&selPackaging=' + escape(selPackaging) + '&selResidential=' + escape(selResidential) + '&txtPackLength=' + escape(txtPackLength) + '&txtPackWidth=' + escape(txtPackWidth) + '&txtPackHeight=' +escape(txtPackHeight);

return qstr;
}

// [str] IS THE SHIPPING VALUE RETURNED FROM UPS
// VALUE CAN BE AN AMOUNT OR AN ERROR
// BELOW WE TAKE THE VALUE AND USE IT AS A CONDITION
function updatepage(str) {

	if(str == "Missing ServiceLevelCode") {
	str = "Please choose a shipping method.";
	}
	
var regExp = /^\d*[0-9](\.\d*[0-9])?$/;
var result = str.search(regExp);

var shipAddress = document.getElementById('sAddress').value;
var sAddress = shipAddress.toUpperCase();
	
	// NOT A NUMBER
	if (result == -1) {
	document.getElementById("selService").value = "";
	document.getElementById("shpchk").innerHTML = str;
	document.getElementById("shpchk").style.color = "#FF0033";
	document.getElementById("gTotal").innerHTML = "";
	document.getElementById("gt").value = "";
	document.getElementById("st").value = "";
	document.getElementById("discMsg").innerHTML = "";
	document.getElementById("ast").innerHTML = "";
	document.getElementById('selService').value = "";
	} else if ((sAddress.indexOf(" BOX ") >= 0) || (sAddress.indexOf("POST OFFICE") >= 0) || (sAddress.indexOf(" PO ") >= 0) || (sAddress.indexOf(" P.O. ") >= 0)) {
	document.getElementById("selService").value = "";	
	document.getElementById("shpchk").innerHTML = "UPS does not ship to post office boxes, please use a street address for the shipping destination.";
	document.getElementById("shpchk").style.color = "#FF0033";
	document.getElementById("gTotal").innerHTML = "";
	document.getElementById("gt").value = "";
	document.getElementById("st").value = "";
	document.getElementById("discMsg").innerHTML = "";
	document.getElementById("ast").innerHTML = "";
	document.getElementById('selService').value = "";
	// WE HAVE A GOOD RETURN VALUE
	// CALCULATE
	} else {
	var cartTotal = document.getElementById('cart_total').value;
	var reseller = document.getElementById('sTaxId').value
		
		document.getElementById("shpchk").innerHTML = "shpchk goes here";
		
		if ((cartTotal >= 50) && (cartTotal <= 149) && (!reseller)) {
		var thisDisc = .10;
		var showDisc = "10%";
		var discount = (thisDisc * cartTotal);
		document.getElementById("10pct").style.background="#CCFFCC";
		document.getElementById("15pct").style.background="#FFFFCC";
		document.getElementById("20pct").style.background="#FFFFCC";
		document.getElementById("cart_discount").value=discount;
		document.getElementById("resell").style.background="#FFFFCC";
		document.getElementById("resell").innerHTML = "";
		}
		
		if ((cartTotal >= 150) && (cartTotal <= 499) && (!reseller)) {
		var thisDisc = .15;	
		var showDisc = "15%";
		var discount = (thisDisc * cartTotal);
		document.getElementById("15pct").style.background="#CCFFCC";
		document.getElementById("10pct").style.background="#FFFFCC";
		document.getElementById("20pct").style.background="#FFFFCC";
		document.getElementById("cart_discount").value=discount;
		document.getElementById("resell").style.background="#FFFFCC";
		document.getElementById("resell").innerHTML = "";
		}
		
		if (cartTotal >= 500 || (reseller)) {
		var thisDisc = .20;	
		var showDisc = "20%";
		var discount = (thisDisc * cartTotal);
		document.getElementById("20pct").style.background="#CCFFCC";
		document.getElementById("10pct").style.background="#FFFFCC";
		document.getElementById("15pct").style.background="#FFFFCC";
		document.getElementById("cart_discount").value=discount;
		document.getElementById("resell").style.background="#FFFFCC";
		document.getElementById("resell").innerHTML = "";
		}
		
		if ((cartTotal < 50) || (reseller)) {
		document.getElementById("20pct").style.background="#FFFFCC";
		document.getElementById("10pct").style.background="#FFFFCC";
		document.getElementById("15pct").style.background="#FFFFCC";
		}	

var ssn = document.getElementById("sTaxId").value;
var cssn = ssn.replace(/-/g,"");
ssnRegex = /^\d{9}$/;	

		if (reseller) {
		document.getElementById("resell").style.background="#CCFFCC";
		document.getElementById("resell").innerHTML = "20% reseller discount";
		}

		if ((reseller) && (!(ssnRegex.test(cssn)))) {
		document.getElementById("resell").style.background="#FFCCCC";
		document.getElementById("resell").innerHTML = "Invalid Tax ID";
		discount = 0;
		}
		
		if (!reseller) {
		document.getElementById("resell").style.background="#CCFFCC";
		document.getElementById("resell").innerHTML = "";
		}
		
		if (discount > 0) {
		document.getElementById("discount").innerHTML = showDisc + " Discount: -$" + roundAmount(discount);
		document.getElementById("discount").style.background="#CCFFCC";
		} else {
		document.getElementById("discount").innerHTML = " Discount -$" + roundAmount(0);
		document.getElementById("discount").style.background="#FFFFCC";
		}

	str = parseFloat(str) + parseFloat(hAdd);
	str = roundAmount(str);

	document.getElementById("purchase").innerHTML="Purchase Total: $" + roundAmount(cartTotal);
	document.getElementById("shpchk").style.color = "#000000";
	document.getElementById("shpchk").innerHTML = "Shipping & Handling: $" + str;
	var SubTotal = parseFloat(cartTotal) + parseFloat(str);
	
		if (discount) {
		var discTotal = roundAmount(SubTotal) - discount;
		} else {
		var discTotal = roundAmount(SubTotal);
		}

	document.getElementById("gTotal").innerHTML = "Sub Total: $" + roundAmount(discTotal);
	document.getElementById("gt").value = roundAmount(SubTotal);
	document.getElementById("st").value = str;
	}
}

// MAKE PRETTY NUMBER
// CARRY OUT TO TWO DECIMAL POINTS
function roundAmount(n) {
var s = "" + Math.round(n * 100) / 100;
var i = s.indexOf('.');
	if (i < 0) return s + ".00";
	var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3);
	if (i + 2 == s.length) t += "0";
	return t;
}

