// Site General JS Document

//#### NUMBER AND ARRAY UTILITIES ####
function formatNumber(num, dec) {
		var result = Math.ceil(num*Math.pow(10,dec))/Math.pow(10,dec);
		
		var result2 = result.toFixed(2);
			
		return result2;
	}

function checkAjax() {
	
	if (!document.getElementById){
		return false; 
	}
				
	//document.getElementById(target).innerHTML = 'please_wait';

	if (window.ActiveXObject) {
		link = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest) {
		link = new XMLHttpRequest();
	}

	if (link == undefined) {
		alert("error");
		return false;
	}	

} 

//shake image

function initShake(){
	
  rector=1;
  stopit=0;
  cycles = 0;
  
  shake = document.getElementById('cartBoxData');	
  
  prevColor = shake.style.color;  
  
  rattleimage();

}

function rattleimage(){
	
	if ((!document.all&&!document.getElementById)||stopit==1) {
		return;
	} 
	
	if(cycles % 2 == 1) {
		changeVar = "#F00";	
	} else {
		changeVar = prevColor;		
	}

	shake.style.color = changeVar;

	cycles++;
	
	if(cycles < 25) {
		setTimeout("rattleimage()",50)
	} else {
		setTimeout("stoprattle()",50)
	}
}

function stoprattle(){
  stopit=1;
  shake.style.color = prevColor;
}


function detectWindowSize(page) {
	width = screen.width;
	height = screen.height;
	
	switch(page) {
	
		case "home":
			if(height <= 768) {
				document.getElementById('homeLeft').style.marginTop = "20px";
				document.getElementById('homeLeft').style.marginBottom = "15px";
				document.getElementById('homeRight').style.marginTop = "20px";
				document.getElementById('homeRight').style.marginBottom = "15px";
			}
		break;
		
	}
	
	//alert("w -"+width+" h -"+height);
} 

// #### Shop Checkout Page ####

function duplicateAddress(value) {
		
		var check = document.getElementById('sameShipping').checked;
		
		//alert(check);
		
		if(check == true) {
			
			document.getElementById('shipping_address').value = document.getElementById('address').value;
			document.getElementById('shipping_city').value = document.getElementById('city').value;
			document.getElementById('shipping_state').value = document.getElementById('state').value;
			document.getElementById('shipping_zip').value = document.getElementById('zip').value;
			
			//document.getElementById('shipping_address').readOnly = true;
			//document.getElementById('shipping_city').readOnly = true;
			//document.getElementById('shipping_state').readOnly = true;
			//document.getElementById('shipping_zip').readOnly = true;
			
			generateShippingCosts();
			
			
		} else {
			document.getElementById('shipping_address').value = "";
			document.getElementById('shipping_city').value = "";
			document.getElementById('shipping_state').value = "";
			document.getElementById('shipping_zip').value = "";
		}
}

function checkHearAbout(val) {
	
	if(val == "Other") {
		document.getElementById('hearAboutFields').innerHTML = "<input name='hear_about_other'>";
	} else {
		document.getElementById('hearAboutFields').innerHTML = "";
	}
	
}

function checkAccount(val) {
		
	if(val == 1) {
		document.getElementById('checkAccountField').innerHTML = 'Create a Password: <input type="password" name="password" id="password" size="12">';
	} else {
		document.getElementById('checkAccountField').innerHTML = '';	
	}
	
	
}


function generateShippingCosts() {
	
	var url = "/wp-content/plugins/shop/ups-shipping.php";
	var funct = "getShippingRates";
						 
	checkAjax();
	
	var shipping_state = document.getElementById('shipping_state').value;
	var shipping_zip = document.getElementById('shipping_zip').value;
	var weight = document.getElementById('totalWeight').value;
	var shipping_option = document.getElementById('shippingOption').value;
	
	if(document.getElementById('shipping_state').value != "" && document.getElementById('shipping_zip').value != "") {
		
		//alert('fire ajax');
		
		checkAjax();
		 
		link.onreadystatechange = function() {
			returnShippingData();
		}
		
		link.open("POST", url+"?funct="+funct+"&shipping_state="+shipping_state+"&shipping_zip="+shipping_zip+"&shipping_option="+shipping_option+"&weight="+weight, true);
		link.send(null);
		
		
	} else {
		return false;	
	}
	
}

function returnShippingData() {
		if (link.readyState == 4) {
			
			var rawoutput = (link.status == 200) ? link.responseText : "Error! Data Unavailable. Errorcode: " + link.status;
						
				//prompt("",rawoutput); 
				
				var shippingAmount = parseFloat(rawoutput);
				
				var currentAmount = parseFloat(document.getElementById('amount').value);
				
				document.getElementById('shippingOutput').innerHTML = '<b>Estimated UPS Shipping</b>: $'+rawoutput+' <input type="hidden" name="totalShipping" id="totalShipping" value="'+rawoutput+'"/>';
				
				var newAmount = formatNumber(currentAmount+shippingAmount,2);
				
				document.getElementById('totalCostOutput').innerHTML = '<h2>Total Cost: $'+newAmount+'</h2>';
				
			 
			}
}



function validateCheckOutForm() {
	
	var errors = 0;

	var nameRegEx = /^[a-zA-Z ]+$/;
	var creditRegEx = /^[0-9]+$/;	
	
		if(document.getElementById('totalItems').value == 0){
			alert("Please choose at least [1 Item]");
			errors++;
			return false;
		}
	
		if(!nameRegEx.test(document.getElementById('fname').value)) {
			alert("Please Enter Your [First Name] (alpha only)");
			document.getElementById('fname').select(this);
			errors++;
			return false;
		} 
		
		if(!nameRegEx.test(document.getElementById('lname').value)) {
			alert("Please Enter Your [Last Name] (alpha only)");
			document.getElementById('lname').select(this);
			errors++;
			return false;
		} 
	
		if(document.getElementById('email').value =="") {
			alert("Please Enter Your [Email Address]");
			document.getElementById('email').select(this);
			errors++;
			return false;
		} else {
			if(document.getElementById('email').value.indexOf("@") == -1 || document.getElementById('email').value.indexOf(".") == -1) {
			  alert("Please Enter A Valid [Email Address]");
			  document.getElementById('email').select(this);
			  errors++;
			  return false;
			}
		}
		
		if(document.getElementById('phone').value =="") {
			alert("Please Enter Your [Phone Number]");
			document.getElementById('phone').select(this);
			errors++;
			return false;
		}
		
		if(document.getElementById('createAccountY').checked == false && document.getElementById('createAccountN').checked == false){
			alert("Please Choose Whether or Not You Want Store Your Info]");
			document.getElementById('createAccountY').focus();
			errors++;
			return false;
		}
		
		if(document.getElementById('createAccountY').checked == true && document.getElementById('password').value ==""){
			alert("Please Enter Your [Password]");
			document.getElementById('createAccountY').focus();
			errors++;
			return false;
		}
		
		if(document.getElementById('address').value =="") {
			alert("Please Enter Your [Billing Address]");
			document.getElementById('address').select(this);
			errors++;
			return false;
		}
		
		if(document.getElementById('city').value =="") {
			alert("Please Enter Your [Billing City]");
			document.getElementById('city').select(this);
			errors++;
			return false;
		}
		
		if(document.getElementById('state').value =="") {
			alert("Please Select Your [Billing State]");
			document.getElementById('state').focus();
			errors++;
			return false;
		}
		
		if(document.getElementById('zip').value =="") {
			alert("Please Enter Your [Billing Zip Code]");
			document.getElementById('zip').select(this);
			errors++;
			return false;
		}
		
		if(document.getElementById('sameShipping').checked == false) {
			  
		 if(document.getElementById('shipping_address').value =="") {
			  alert("Please Enter Your [Shipping Address]");
			  document.getElementById('shipping_address').select(this);
			  errors++;
			  return false;
		  }
		  
		  if(document.getElementById('shipping_city').value =="") {
			  alert("Please Enter Your [Shipping City]");
			  document.getElementById('shipping_city').select(this);
			  errors++;
			  return false;
		  }
		  
		  if(document.getElementById('shipping_state').value =="") {
			  alert("Please Select Your [Shipping State]");
			  document.getElementById('shipping_state').focus();
			  errors++;
			  return false;
		  }
		  
		  if(document.getElementById('shipping_zip').value =="") {
			  alert("Please Enter Your [Shipping Zip Code]");
			  document.getElementById('shipping_zip').select(this);
			  errors++;
			  return false;
		  }
			
			
		}
				
		if(!creditRegEx.test(document.getElementById('credit_card_number').value)) {
			alert("Please Enter Your [Credit Card Number] (numbers only)");
			document.getElementById('credit_card_number').select(this);
			errors++;
			return false;
		}
			  
		if(!creditRegEx.test(document.getElementById('credit_card_cvs').value)) {
			alert("Please Enter Your [Credit Card CVS Security Number] (number only, usually on the back of your card)");
			document.getElementById('credit_card_cvs').select(this);
			errors++;
			return false;
		}	
		
				
		if(document.getElementById('agreeTerms').checked == false) {
			alert("Please check that you [AGREE] to our Terms & Conditions - click the link next to the checkbox to read more.");
			document.getElementById('agreeTerms').focus();
			errors++;
			return false;
		}
		
		if(document.getElementById('storeInTestMode')) {
			alert("We are currently running tests on the store and your purchase will NOT be completed- Please come back at a later time to finish your order, we apologize for the inconvenience!");	
		}
		
		
		if(errors == 0) {
			//pleaseWaitScreen('on');
		} else {
			return false;	
		}
		
		//return false;
	
}


// #### Contact Page ####

function validateContact() {
	
	if(document.getElementById('contact_name').value == "") {
		alert("Please enter your [Name]");
		document.getElementById('contact_name').select(this);
		return false;
	}
	
	if(document.getElementById('contact_phone').value == "") {
		alert("Please enter your [Phone Number]");
		document.getElementById('contact_phone').select(this);
		return false;
	}
	
	if(document.getElementById('contact_email').value == "") {
		alert("Please enter your [Email Address]");
		document.getElementById('contact_email').select(this);
		return false;
	} else {
		if(document.getElementById('contact_email').value.indexOf("@")== -1 || document.getElementById('contact_email').value.indexOf(".")== -1) {
		alert("Please enter a [Valid Email Address]");
		document.getElementById('contact_email').select(this);
		return false;
		}
	}
	
	/*
	if(document.getElementById('captchaCode').value == "") {
		alert("Please enter the [Code]");
		document.getElementById('captchaCode').select(this);
		return false;
	}*/ 
	
	//return false;
	
}


