// -------------------------------------- Make XMLHttpRequest Request Object --------------------------------------
// Build a new Object and check to see what browser it is
var request = null;

try {
 request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
 request = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (othermicrosoft) {
 try {
 request = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (failed) {
 request = null;
 }
 }
}

if (request == null)
alert("Error creating request object!");

var request2 = null;

try {
 request2 = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
 request2 = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (othermicrosoft) {
 try {
 request2 = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (failed) {
 request2 = null;
 }
 }
}

if (request2 == null)
alert("Error creating request object!");

function view_shipping(){
	
	if(document.getElementById('onBlur').value =='true'){
		document.getElementById('total_shipping').innerHTML = 'Please Wait...';
		
		if(document.getElementById('zip').value == '' && document.getElementById('domestic').checked == 1){
			alert('You must enter your shipping destination zip code.');
			document.getElementById('onBlur').value = 'true';					
			
		} else if(document.getElementById('international_dd').value == '' && document.getElementById('international').checked == 1){
			alert('You must choose a country.');
			document.getElementById('onBlur').value = 'true';					
			
		} else {
			
			document.getElementById('mytimer').value = 'true';
			
			setTimeout("mytimer('viewing');",10000);
			
			document.getElementById('onBlur').value = 'false';

			var str = 'weight=' + document.getElementById('total_weight_2').value + '&zip=' + document.getElementById('zip').value + '&country=' + document.getElementById('international_dd').value;
			//alert(str);
			request.open("POST", "/buy/xt-shipping2.php", true);
		 	request.onreadystatechange = function() {
				if(request.readyState == 4) {
					
					if(document.getElementById('mytimer_count').value > 3 || request.responseText){
						
						document.getElementById('mytimer').value = 'false';
						document.getElementById('mytimer_count').value = '0';
						//alert(request.responseText);
					
						document.getElementById('total_shipping').innerHTML = formatCurrency(request.responseText);
						if(document.getElementById('total_shipping').innerHTML == '$0.00'){
							document.getElementById('total_shipping').innerHTML = '<input type="button" onclick="view_shipping()" value="Click to Calculate" />';
							alert('If you experience any difficulty placing your order, please contact us by calling our toll-free number between 8 am - 10 pm CDT. We apologize for any inconvenience and thank you for your business!');
						}
						//document.getElementById('calculate_button').value = 'Click to Calculate';
						document.getElementById('onBlur').value = 'true';					
					}
				}
			}
			request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			request.send(str);
		}
	}
}

function mytimer(product){
	if(document.getElementById('mytimer').value == 'true' &&  document.getElementById('mytimer_count').value < 3){
		request.abort();
		document.getElementById('mytimer_count').value = document.getElementById('mytimer_count').value*1 + 1;
		document.getElementById('onBlur').value = 'true';
		if(product == 'viewing'){
			view_shipping()
		} else {
			get_shipping(product);		
		}
	} else if(document.getElementById('mytimer').value != 'false'){
		request.abort();
		document.getElementById('mytimer_count').value = document.getElementById('mytimer_count').value*1 + 1;
		document.getElementById('onBlur').value = 'true';
		alert('We are experiencing difficulties in communicating with USPS, please contact us by calling our toll-free number between 8 am - 10 pm CDT. We apologize for any inconvenience and thank you for your business!');
	} 		
}

function get_shipping(product){
	
	if(document.getElementById('onBlur').value =='true'){
		
		document.getElementById('onBlur').value = 'false';	
		
		if(document.getElementById('zip').value == '' && document.getElementById('domestic').checked == 1){
			alert('You must enter your shipping destination zip code.');
			document.getElementById('onBlur').value = 'true';					
			
		} else if(document.getElementById('international_dd').value == '' && document.getElementById('international').checked == 1){
			alert('You must choose a country.');
			document.getElementById('onBlur').value = 'true';					
			
		} else if(document.getElementById(product + '_quantity').value == '0'){
			alert(document.getElementById(product + '_quantity').value);
			alert('You must enter a quantity.');
			document.getElementById('onBlur').value = 'true';
		} else {
			document.getElementById(product + '_change_button').innerHTML = 'Preparing...';
			
			document.getElementById('mytimer').value = 'true';
			
			setTimeout("mytimer('"+product+"');",10000);

			
			
			oldweight = document.getElementById('total_weight').value;
		
			document.getElementById('total_weight').value = (document.getElementById('total_weight').value*1) + (document.getElementById(product + '_weight').value*1)*(document.getElementById(product + '_quantity').value*1);
		
		
			var weight = document.getElementById('total_weight').value;
	
			var str = 'weight=' + weight + '&zip=' + document.getElementById('zip').value + '&country=' + document.getElementById('international_dd').value;
			request.open("POST", "/buy/xt-shipping2.php", true);
		 	request.onreadystatechange = function() {
				if(request.readyState == 4) {
					if(document.getElementById('mytimer_count').value > 3 || request.responseText){
						document.getElementById('mytimer').value = 'false';
						document.getElementById('mytimer_count').value = '0';
						
						
						//alert(request.responseText);
						checkit = Formattedtwo(request.responseText);
						//alert(checkit);
						if(checkit == '0.00'){
							//document.getElementById('total_shipping').innerHTML = '<input type="button" onclick="view_shipping()" value="Click to Calculate" />';
					
							document.getElementById(product + '_change_button').innerHTML = '<input type="button" value="Prepare Order" onclick="if(document.getElementById(\'zip\').value == \'\' || document.getElementById(\''+product+'_quantity\').value == \'0\'){alert(\'Please enter shipping destination zip code or enter a quantity.\');} else { get_shipping(\''+product+'\'); }" />';
							document.getElementById('total_weight').value = oldweight;
							alert('If you experience any difficulty placing your order, please contact us by calling our toll-free number between 8 am - 10 pm CDT. We apologize for any inconvenience and thank you for your business!');
					
						} else {
					
							if(document.getElementById('shipping_charged').value == '0'){
								document.getElementById('shipping_charged').value = request.responseText;
								document.getElementById(product + '_shipping').value = request.responseText;
							} else {
								new_charges = (request.responseText*1) - (document.getElementById('shipping_charged').value*1);
					
								new_charges = Formattedtwo(new_charges);
					
								document.getElementById(product + '_shipping').value = new_charges;
								document.getElementById('shipping_charged').value = (new_charges*1) + (document.getElementById('shipping_charged').value*1);
							}
							//document.getElementById(product + '_quantity').value = '0';
							//document.getElementById(product + '_quantity_hidden').value  = '0';	
							//document.getElementById(product + '_total_price').innerHTML = '-';
							document.getElementById(product + '_change_button').innerHTML = '<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" border="0" name="submit" title="Add to Cart" onmouseup="blankit(\''+product+'\');"" />';			
						}
						document.getElementById('onBlur').value = 'true';
					}					
				}
			}
			request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			request.send(str);
		}
	}	
}

function Formattedtwo(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}



function blankit(product){
	
	
	setTimeout(proceed,1500);
	function proceed(){
		document.getElementById(product + '_quantity').value = '0';
		document.getElementById(product + '_quantity_hidden').value  = '0';	
		document.getElementById(product + '_total_price').innerHTML = '-';
		document.getElementById(product + '_change_button').innerHTML = '<input type="button" value="Prepare Order" onclick="if(document.getElementById(\'zip\').value == \'\' || document.getElementById(\''+product+'_quantity\').value == \'0\'){alert(\'Please enter shipping destination zip code or enter a quantity.\');} else { get_shipping(\''+product+'\'); }" />';
		
	}
	
}

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function increase(product){
	if(document.getElementById('onBlur').value =='true'){
		document.getElementById('onBlur').value = 'false';
		
		document.getElementById(product + '_quantity').value = document.getElementById(product + '_quantity').value*1+1;
		document.getElementById(product + '_quantity_hidden').value = document.getElementById(product + '_quantity').value;
		document.getElementById(product + '_quantity_prev').value = document.getElementById(product + '_quantity').value;
		
		document.getElementById(product + '_total_price').innerHTML = formatCurrency(document.getElementById(product + '_price').value * document.getElementById(product + '_quantity').value);
		document.getElementById('total_weight_2').value = (document.getElementById('total_weight_2').value*1) + (document.getElementById(product + '_weight').value*1)
		
		document.getElementById('total_shipping').innerHTML = '<input type="button" onclick="view_shipping()" value="Click to Calculate" />';
		
		document.getElementById('onBlur').value = 'true';	
	}
	
}
function decrease(product){
	if(document.getElementById('onBlur').value =='true'){
		document.getElementById('onBlur').value = 'false';
		if(document.getElementById(product + '_quantity').value != 0){
			document.getElementById(product + '_quantity').value = document.getElementById(product + '_quantity').value*1-1;
			document.getElementById(product + '_quantity_hidden').value = document.getElementById(product + '_quantity').value;
			document.getElementById(product + '_quantity_prev').value = document.getElementById(product + '_quantity').value;			
						
		
		document.getElementById(product + '_total_price').innerHTML = formatCurrency(document.getElementById(product + '_price').value * document.getElementById(product + '_quantity').value);
		document.getElementById('total_weight_2').value = (document.getElementById('total_weight_2').value*1) - (document.getElementById(product + '_weight').value*1)
		document.getElementById('total_shipping').innerHTML = '<input type="button" onclick="view_shipping()" value="Click to Calculate" />';
		}
		document.getElementById('onBlur').value = 'true';	
	}
	
}

function update_quantity(product){
	if(document.getElementById('onBlur').value =='true'){
		document.getElementById('onBlur').value = 'false';
		
		document.getElementById(product + '_quantity_hidden').value = document.getElementById(product + '_quantity').value;			
		
		if(document.getElementById(product + '_quantity').value > document.getElementById(product + '_quantity_prev').value){
			add_more = (document.getElementById(product + '_quantity').value*1) - (document.getElementById(product + '_quantity_prev').value*1);			
			document.getElementById('total_weight_2').value = (document.getElementById('total_weight_2').value*1) + ((document.getElementById(product + '_weight').value*1)*add_more);
		} else {
			subtract = document.getElementById(product + '_quantity_prev').value - document.getElementById(product + '_quantity').value;			
			document.getElementById('total_weight_2').value = (document.getElementById('total_weight_2').value*1) - ((document.getElementById(product + '_weight').value*1)*subtract);
		}
		
		document.getElementById(product + '_quantity_prev').value = document.getElementById(product + '_quantity').value;			
		
		document.getElementById(product + '_total_price').innerHTML = formatCurrency(document.getElementById(product + '_price').value * document.getElementById(product + '_quantity').value);
		document.getElementById('total_shipping').innerHTML = '<input type="button" onclick="view_shipping()" value="Click to Calculate" />';
		
		document.getElementById('onBlur').value = 'true';	
	}
}

function reset_shipping(){
	document.getElementById('total_shipping').innerHTML = '<input type="button" onclick="view_shipping()" value="Click to Calculate" />';
	
}

function change_shipping(type){
	
	switch(type){
		case 'domestic':
			document.getElementById('enter_zip').style.display = 'block';
			document.getElementById('enter_country').style.display = 'none';
			document.getElementById('international_dd').selectedIndex = 0;			
		break;
		case 'international':
			document.getElementById('enter_zip').style.display = 'none';
			document.getElementById('enter_country').style.display = 'block';
			document.getElementById('zip').value = '';
		break;
	}	
}


function validateZIP(field) {
var valid = "0123456789-";
var hyphencount = 0;

if (field.length!=5 && field.length!=10) {
alert("Please enter your 5 digit or 5 digit+4 zip code.");
return false;
}
for (var i=0; i < field.length; i++) {
temp = "" + field.substring(i, i+1);
if (temp == "-") hyphencount++;
if (valid.indexOf(temp) == "-1") {
alert("Invalid characters in your zip code.  Please try again.");
return false;
}
if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
return false;
   }
}

return true;
}

function validateQuantity(field) {
var valid = "0123456789";


for (var i=0; i < field.length; i++) {
temp = "" + field.substring(i, i+1);
if (valid.indexOf(temp) == "-1") {
alert("Invalid characters in your zip code.  Please try again.");
return false;
}

}

return true;
}

function cleanup(){
	document.getElementById('onBlur').value = 'true';
	document.getElementById('total_weight').value = '0';
	document.getElementById('total_weight_2').value = '0';
	document.getElementById('shipping_charged').value = '0';

	document.getElementById('buddy_tow_lite_quantity').value = '0';
	document.getElementById('buddy_tow_lite_quantity_hidden').value = '0';
	document.getElementById('buddy_tow_lite_quantity_prev').value = '0';
	document.getElementById('buddy_tow_lite_shipping').value = '0';
	
	document.getElementById('buddy_tow_lite_kit_quantity').value = '0';
	document.getElementById('buddy_tow_lite_kit_quantity_hidden').value = '0';
	document.getElementById('buddy_tow_lite_kit_quantity_prev').value = '0';
	document.getElementById('buddy_tow_lite_kit_shipping').value = '0';
	
	document.getElementById('buddy_tow_pro_quantity').value = '0';
	document.getElementById('buddy_tow_pro_quantity_hidden').value = '0';
	document.getElementById('buddy_tow_pro_quantity_prev').value = '0';
	document.getElementById('buddy_tow_pro_shipping').value = '0';
	
	document.getElementById('buddy_tow_kit_quantity').value = '0';
	document.getElementById('buddy_tow_kit_quantity_hidden').value = '0';
	document.getElementById('buddy_tow_kit_quantity_prev').value = '0';
	document.getElementById('buddy_tow_kit_shipping').value = '0';
	
	document.getElementById('international_dd').selectedIndex = 0;			
	document.getElementById('domestic').checked = true;
	document.getElementById('mytimer').value = 'false';
	document.getElementById('mytimer_count').value = '0';
	
}