// AJAX Shopping Cart Functions

//#### BROWSER DETECT ####
// to use, call : browser = "", OS = "", etc
var detect = navigator.userAgent.toLowerCase();
	var OS,browser,version,total,thestring;

	if (checkIt('konqueror'))
	{
		browser = "Konqueror";
		OS = "Linux";
	}
 else if (checkIt('netscape')) browser = "Netscape Navigator";
	else if (checkIt('safari')) browser = "Safari";
	else if (checkIt('omniweb')) browser = "OmniWeb";
	else if (checkIt('opera')) browser = "Opera";
	else if (checkIt('webtv')) browser = "WebTV";
	else if (checkIt('icab')) browser = "iCab";
	else if (checkIt('msie')) browser = "Internet Explorer";
	else if (checkIt('firefox')) browser = "Mozilla Firefox";
	else if (!checkIt('compatible'))
	{
		browser = "Mozilla"
		version = detect.charAt(8);
	}
	else browser = "An unknown browser";

	if (!version) version = detect.charAt(place + thestring.length);

	if (!OS)
	{
		if (checkIt('linux')) OS = "Linux";
		else if (checkIt('x11')) OS = "Unix";
		else if (checkIt('mac')) OS = "Mac"
		else if (checkIt('win')) OS = "Windows"
		else OS = "an unknown operating system";
	}

	function checkIt(string)
	{
		place = detect.indexOf(string) + 1;
		thestring = string;
		return place;
	}


function validateRecurringDonation() {
	
var numRegEx = /^((\$\d*)|(\$\d*\.\d{2})|(\d*)|(\d*\.\d{2}))$/;
var exptDateRegEx = /^[0-9\/]+$/;	
	
	
  if(document.getElementById('fname').value == "") {
	alert("Please enter your [FIRST NAME]");
	document.getElementById('fname').select(this);
	return false;
  }
  
   if(document.getElementById('lname').value == "") {
	alert("Please enter your [LAST NAME]");
	document.getElementById('lname').select(this);
	return false;
  }
  
  if(document.getElementById('phone').value == "") {
	alert("Please enter your [PHONE NUMBER]");
	document.getElementById('phone').select(this);
	return false; 
  }
  
  if(document.getElementById('email').value == "" || document.getElementById('email').value.indexOf('@') == -1 || document.getElementById('email').value.indexOf('.') == -1) {
	alert("Please enter a valid [EMAIL ADDRESS]");
	document.getElementById('email').select(this);
	return false; 
  }
  
  if(document.getElementById('address').value == "") {
	alert("Please enter your [ADDRESS]");
	document.getElementById('address').select(this);
	return false; 
  }
   
 if(document.getElementById('city').value == "") {
	alert("Please enter your [CITY]");
	document.getElementById('city').select(this);
	return false; 
  }
  
   if(document.getElementById('state').value == "") {
	alert("Please select your [STATE]");
	document.getElementById('state').focus();
	return false; 
  }
  
 if(document.getElementById('zip').value == "") {
	alert("Please enter your [ZIP CODE]");
	document.getElementById('zip').select(this);
	return false; 
  }
  
   if(!numRegEx.test(document.getElementById('amount').value)) {
	   alert("Please enter the [AMOUNT] you want to donate continously");
	   document.getElementById('amount').select(this);
	   return false;
   }
   
   var freqs = document.getElementsByName('freq');
   var freqsErrors = 0;

   for(x=0;x<freqs.length;x++) {
      var id = freqs[x].id; 
	  if(document.getElementById(id).checked == false) {
		freqsErrors++;   
	   }
   }
  
  if(freqsErrors == freqs.length) {
	alert("Please choose how often you want to donate [FREQUENCY]");
	return false;
  }
    
  if(!numRegEx.test(document.getElementById('creditnum').value)) {
	  alert("Please enter your [CREDIT CARD NUMBER] (numeric only)");
	  document.getElementById('creditnum').select(this);
	  return false;
  }
  
  if(!exptDateRegEx.test(document.getElementById('expire').value)) {
	  alert("Please enter your [CARD EXPIRATION DATE]");
	  document.getElementById('expire').select(this);
	  return false;
  }
   
}


function addToCart(gid) {
		
	var url = "/cart_functions/cart_ajax.php";
	
	var funct = "addToCart";
	
	var target = "shoppingCart";
		
 	if (!document.getElementById){
 		return false;
 	}
	
	if(document.getElementById('priceSet')) {
		
		if(document.getElementById('priceSet').checked == false && document.getElementById('priceIndiv').checked == false) {
			alert("Please select individual poster or full set");
			return false;
		}
		
		if(document.getElementById('priceSet').checked == true) {
			priceOption = "set";	
		} 
		if(document.getElementById('priceIndiv').checked == true) {
			priceOption = "individual";	
		}
		
		
	} else {
		priceOption = "individual";	
	}
	
	//document.getElementById(target).innerHTML = 'please_wait';

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

 	if (link == undefined) {
 		return false;
 	}
	
 	link.onreadystatechange = function() {
		response(url, target);
	}
 	link.open("POST", url+"?funct="+funct+"&gid="+gid+"&priceOption="+priceOption, true);
	link.send(null);
}

function removeFromCart(cartID) {
			
	var url = "/cart_functions/cart_ajax.php";
	
	var funct = "removeFromCart";
	
	var target = "shoppingCart";
			
 	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) {
 		return false;
 	}
	
	link.onreadystatechange = function() {
		response(url, target);
	}
	
 	link.open("POST", url+"?funct="+funct+"&cartID="+cartID, true);
	link.send(null);
}

function displayCart() {
			
	var url = "/cart_functions/cart_ajax.php";
	
	var funct = "displayCart";
	
	var target = "shoppingCart";
	
	if(document.getElementById('taxOn')) {
		var state = document.getElementById('state').value;	
	} else {
		var state = "";	
	}
			
 	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) {
 		return false;
 	}
	
	link.onreadystatechange = function() {
		response(url, target);
	}
	
 	link.open("POST", url+"?funct="+funct+"&state="+state, true);
	link.send(null);
}

function generateDonateForm(type) {
			
	var url = "/cart_functions/gen_hash.php";
	
	if(document.getElementById('formOutput')) {
	document.getElementById('formOutput').innerHTML = "";
	}
	
	if(type == "single") {
		var funct = "generateDonateSingleForm";
		var checkField = document.getElementById('OneTimeDonate');
		document.getElementById('RecurringDonate').checked = false;
	}
	
	if(type == "recurring") {
		var funct = "generateDonateRecurringForm";
		var checkField = document.getElementById('RecurringDonate');
		document.getElementById('OneTimeDonate').checked = false;
	}

 	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) {
 		return false;
 	}
	
	link.onreadystatechange = function() {
		if (link.readyState == 4) {
			
			document.getElementById('donationFormHolder').innerHTML = (link.status == 200) ? link.responseText : "Error! Data Unavailable. Errorcode: " + link.status;

		}
	}
	
	if(checkField.checked == true) {
	
		link.open("POST", url+"?funct="+funct, true);
		link.send(null);
	} else {
		
		document.getElementById('donationFormHolder').innerHTML = "<em>Please choose how you'd like to make your donation.</em>";
		
	}

}


function generateDonateHash() {
			
	var url = "/cart_functions/gen_hash.php";
	
	var funct = "generateHash";
	
	var amount = document.getElementById('x_amount').value;
			
 	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) {
 		return false;
 	}
	
	link.onreadystatechange = function() {
		if (link.readyState == 4) {
			var returnVals = link.responseText;
			
			var returnArray = returnVals.split("~");
			
			var invoiceNum = returnArray[0];
			var seqNum = returnArray[1];
			var timeNum = returnArray[2];
			var fingerNum = returnArray[3];
			
			document.getElementById('x_invoice_num').value = invoiceNum;
			
			document.getElementById('x_fp_sequence').value = seqNum;
			
			document.getElementById('x_fp_timestamp').value = timeNum;
			
			document.getElementById('x_fp_hash').value = fingerNum;
			
		}
	}
	
	var amntRegEx = /^((\$\d*)|(\$\d*\.\d{2})|(\d*)|(\d*\.\d{2}))$/;
	
	if(!amntRegEx.test(document.getElementById('x_amount').value)) {
		alert("Please enter a [Donation Amount] in dollars");
		document.getElementById('x_amount').select(this);
		return false;
	} else {
		link.open("POST", url+"?funct="+funct+"&amount="+amount, true);
		link.send(null);
	}
}



function response(url, target) {
		
 	if (link.readyState == 4) {
		
			if(document.getElementById(target).style.display == "none") {
				document.getElementById(target).style.display = "block";
			}
		
			//prompt("",link.responseText);
			document.getElementById(target).innerHTML = (link.status == 200) ? link.responseText : "Error! Data Unavailable. Errorcode: " + link.status;
	}
	
}