	function createRequestObject() 
	{
		var ua;
	
		if(window.XMLHttpRequest) {
			try {
				ua = new XMLHttpRequest();
			} catch(e) {
				ua = false;
			}
		} else if(window.ActiveXObject) {
			try {
				ua = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				ua = false;
			}
		}
		return ua;

	}

	global_option_id = "";
	global_option_id2 = "";
	
	function sndReq2(action,divObj) 
	{	
		var xhReq = createRequestObject();
 		xhReq.open("get", action, true);
 		xhReq.onreadystatechange = function() {
   			if (xhReq.readyState != 4)  { return; }
   			var serverResponse = xhReq.responseText;
			document.getElementById(divObj).innerHTML = serverResponse;
			validateForm2();
 			}
 		xhReq.send(null);
 	}
 	
 	function sndReq(action,divObj) 
	{	
		var xhReq = createRequestObject();
 		xhReq.open("get", action, true);
 		xhReq.onreadystatechange = function() {
   			if (xhReq.readyState != 4)  { return; }
   			var serverResponse = xhReq.responseText;
			document.getElementById(divObj).innerHTML = serverResponse;
 			}
 		xhReq.send(null);
 	}

	
	function sndImgReq(action,imgObj) 
	{	
		var xhReq = createRequestObject();
 		xhReq.open("get", action, true);
 		xhReq.onreadystatechange = function() {
   			if (xhReq.readyState != 4)  { return; }
   			var serverResponse = xhReq.responseText;
			document.getElementById(imgObj).src = serverResponse;
		}
		xhReq.send(null);
	}
	
	function sndReqQuantity(action) 
	{	
		var xhReq = createRequestObject();
 		xhReq.open("get", action, true);
 		xhReq.onreadystatechange = function() {
   			if (xhReq.readyState != 4)  { return; }
   			var serverResponse = xhReq.responseText;
			addToCart2(serverResponse);
 			}
 		xhReq.send(null);
	}
	
	function sndAddCartReq(action) 
	{	
		var xhReq = createRequestObject();
 		xhReq.open("get", action, true);
 		xhReq.onreadystatechange = function() {
   			if (xhReq.readyState != 4)  { return; }
   			var serverResponse = xhReq.responseText;
			var cart_productID = serverResponse;
				
			sndImgReq("ajax.php?action=GetCartProductImage&id="+cart_productID, 'cartproduct_image');
			sndReq("ajax.php?action=GetCartProductName&id="+cart_productID, 'cartproduct_name');
			sndReq("ajax.php?action=GetCartProductSubtotal&id="+cart_productID, 'cartproduct_subtotal');	
			sndReq("ajax.php?action=GetCartProductOptions&id="+cart_productID, 'cartproduct_options');
			sndReq("ajax.php?action=GetCartItemCount", 'itemsincart');
			showCart();
			document.getElementById("cartButton").style.display="inline";
    		document.getElementById("cartButtonOff").style.display="none";
				
		}
		
		xhReq.send(null);	
					
	}
	
	function sndAddCartReq2(action) 
	{	
		var xhReq = createRequestObject();
 		xhReq.open("get", action, true);
 		xhReq.onreadystatechange = function() {
   			if (xhReq.readyState != 4)  { return; }
   			var serverResponse = xhReq.responseText;
			var cart_productID = serverResponse;
				
			//sndImgReq("ajax.php?action=GetCartProductImage&id="+cart_productID, 'cartproduct_image');
			//sndReq("ajax.php?action=GetCartProductName&id="+cart_productID, 'cartproduct_name');
			//sndReq("ajax.php?action=GetCartProductSubtotal&id="+cart_productID, 'cartproduct_subtotal');	
			//sndReq("ajax.php?action=GetCartProductOptions&id="+cart_productID, 'cartproduct_options');
			sndReq("ajax.php?action=GetCartItemCount", 'itemsincart');
			//showCart();
			document.getElementById("cartButton").style.display="inline";
    		document.getElementById("cartButtonOff").style.display="none";
				
		}
		
		xhReq.send(null);	
					
	}
	


function sndItemReq2(action) {
	http3 = createRequestObject();
	http3.open("get", action);
	http3.onreadystatechange = handleItemReqResponse;
	http3.send(null);
	return 1;
}


function handleItemReqResponse() {

	if (http3.readyState == 4) {
		var serverResponse3 = http3.responseText;
		
		//if (IsNumeric(serverResponse3)) { // && document.getElementById("quantity").value != "" && IsNumeric(document.getElementById("quantity").value)
			document.getElementById('selected_item_id').value = serverResponse3;
			
			
			updateOptionStatuses();
			updateCartButton();
			
			
		//} else {
		//	if (document.getElementById("quantity").value != "" && !IsNumeric(document.getElementById("quantity").value)) {
		//		document.getElementById('qtyErr').style.display="inline";
		//	} else {
		//		document.getElementById('qtyErr').style.display="none";
		//	}
		//}
	}
}


function sndAddCartReq_pre(action) {
	var http4 = createRequestObject();
	http4.open("get", action);
	http4.onreadystatechange = function() {
		if (http4.readyState == 4) {
			var serverResponse = http4.responseText;
			
			if (IsNumeric(serverResponse)) { // && document.getElementById("quantity").value != "" && IsNumeric(document.getElementById("quantity").value)
				document.getElementById('selected_item_id').value = serverResponse;
				
				document.getElementById("cartButton").style.display="none";
				document.getElementById("cartButtonOff").style.display="inline";
				
				sndAddCartReq('ajax.php?action=addToCart&quantity='+ document.getElementById("quantity").value + '&prodID='+ document.getElementById("prodID").value + '&itemID='+ document.getElementById("selected_item_id").value);

			} else {
//				alert("invalid item_id for combo: "+action);
				if (document.getElementById("quantity").value != "" && !IsNumeric(document.getElementById("quantity").value)) {
					document.getElementById('qtyErr').style.display="inline";
				} else {
					document.getElementById('qtyErr').style.display="none";
				}
				
	//			document.getElementById('selected_item_id').value = "";
	
			}

			//updateCartButton();
		}
	
	}
	http4.send(null);
	return 1;
}




function sndItemReq3(action) {
	var http4 = createRequestObject();
	http4.open("get", action);
	http4.onreadystatechange = function() {
		if (http4.readyState == 4) {
			var serverResponse = http4.responseText;
			
			if (IsNumeric(serverResponse)) { // && document.getElementById("quantity").value != "" && IsNumeric(document.getElementById("quantity").value)
				document.getElementById('selected_item_id').value = serverResponse;
			} else {
				if (document.getElementById("quantity").value != "" && !IsNumeric(document.getElementById("quantity").value)) {
					document.getElementById('qtyErr').style.display="inline";
				} else {
					document.getElementById('qtyErr').style.display="none";
				}
				
	//			document.getElementById('selected_item_id').value = "";
	
			}

			updateCartButton();
		}
	
	}
	http4.send(null);
	return 1;
}


	
	function sndItemReq(action) 
	{	
		var xhReq = createRequestObject();
 		xhReq.open("get", action, false);
 		xhReq.onreadystatechange = function() {
   			if (xhReq.readyState != 4)  { return; }
				var serverResponse = xhReq.responseText;
				
				if (IsNumeric(serverResponse)) // && document.getElementById("quantity").value != "" && IsNumeric(document.getElementById("quantity").value)
				{
					document.getElementById('selected_item_id').value = serverResponse;
					
					document.getElementById('cartButton').style.display="inline";
					document.getElementById('cartButtonOff').style.display="none";
				}
				else
				{
					//if (document.getElementById("quantity").value != "" && !IsNumeric(document.getElementById("quantity").value))
					//{
					//	document.getElementById('qtyErr').style.display="inline";
					//}
					//else
					//{
					//	document.getElementById('qtyErr').style.display="none";
					//}
//					document.getElementById('selected_item_id').value = "";
					document.getElementById('cartButton').style.display="none";
					document.getElementById('cartButtonOff').style.display="inline";
				}
				
 			}
 		xhReq.send(null);
 	}


function getOptions(action, option_id)  {
	http2 = createRequestObject();
	http2.open("get", action);
	http2.onreadystatechange = function() {
		if (http2.readyState == 4) {
			var serverResponse = http2.responseText;
			UpdateOptions(option_id, serverResponse);
		}
	}
	http2.send(null);
	return 1;
}
 	

function getImageOptions(action, an_option_id) {
	var xhReq1 = createRequestObject();
	xhReq1.open("get", action);
	xhReq1.onreadystatechange = function() {
			if (xhReq1.readyState == 4)  {
				var serverResponse = xhReq1.responseText;
				
				//alert("calling UIO with an_option_id: "+an_option_id);
				
				UpdateImageOptions2(an_option_id, serverResponse);
			}
		}

	
	xhReq1.send(null);
	
// 		return 1;
}

	
	function showCart() {
//		document.getElementById("mycartoverlay").style.top = "0px";
	
		document.getElementById("mycartoverlay").style.display = "block";
		new Effect.SlideDown(document.getElementById("mycart"));
	}
	
	function hideCart()
	{
		document.getElementById("mycartoverlay").style.display= "none";
		new Effect.SlideUp(document.getElementById("mycart"));
	}
	
	
	function getPageSize(){
	
		var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}
	
		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
		return arrayPageSize;
	}
	
	function autotab(original,destination){
		if (original.getAttribute&&original.value.length==original.getAttribute("maxlength")) destination.focus();
	}
	
	function IsNumeric(sText)

	{
	   var ValidChars = "0123456789.";
	   var IsNumber=true;
	   var Char;
	
	 
	   for (i = 0; i < sText.length && IsNumber == true; i++) 
		  { 
		  Char = sText.charAt(i); 
		  if (ValidChars.indexOf(Char) == -1) 
			 {
			 IsNumber = false;
			 }
		  }
	   return IsNumber;
   
   }
   
   