/**************************************************
  APOLLO E-SHOP SYSTEM - JAVASCRIPT FUNCTIONS INC
  Common Javascript Functions for Apollo E-Shop
  Developed by Justin Kercher
  Copyright© 2007 by Apollo Internet Media
  Created: 29/10/2007
**************************************************/

//isnumeric for javascript
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;
   
  }




//AJAX XMLHTTP Creation
function GetXmlHttpObject()
	{ 
		var objXMLHttp=null;
		if (window.XMLHttpRequest)
		{
			objXMLHttp=new XMLHttpRequest();
		}
		else if (window.ActiveXObject)
		{
			objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		return objXMLHttp;
	} 
	
 
 	/* this function is used to pulsatae the cart counter when an AJAX update occurs */
	var minsize = 35;
	var maxsize = 50;
	var speed = 4;
	var i = minsize;
	var direction = 0;
	var adding = false;
	
	function CartCountPulsate() {
		if(i < maxsize && direction == 0) {
			i+=speed;
			if(i>=maxsize ) { direction = 1; }
			document.getElementById("quickcartcounter").style.fontSize=i+"px";
			window.setTimeout("CartCountPulsate()", 2);
		}	
		else if(i > minsize  && direction == 1) {
			i-=speed;
			//if(i==minsize) { direction = 0; }
			document.getElementById("quickcartcounter").style.fontSize=i+"px";
			if(i>minsize) { 
				window.setTimeout("CartCountPulsate()", 2);
			}
			else {
				direction = 0;
			}
		}		
	}
	
	
	/**********************************************************
		AJAX ADD TO CART ROUTINE
	**********************************************************/	
	
	//AJAX to update shopping cart without form submission
	function AddToCart(frmitem) {
		//check that another item is not presently in the process
		//of being added
		if(adding) {
				alert("previous item is still processing. please try again.");
				return false;
		}
		else {
				adding = true;
				//will be reset when fade finishes.
		}
		
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null)
		{
			//browser doesn't support XMLHTTP so we will return 
			//true so that the form submits normally.
			alert("AJAX Failed. Using Manual Cart.");
			return false;
		} 
		
		//check qty is numeric before proceeding
		if(!IsNumeric(frmitem.txtqty.value)) {
			alert("Please enter a valid quantity.");
			adding = false;
			return false;
		}
				
		//url to add page
		var url="ajax_addtocart.asp";
		
		//compile option codes
		var optioncode = "";
		//check if there are any options for the product
		if(frmitem.cboOptionID != null) {
			//we need to loop the option groups
			//but exclude the last one as this 
			//is a dummy element to 
			//force creation of a contrl array.
			for(i = 0; i<frmitem.cboOptionID.length-1; i++) {
				if(i!=0) {
					optioncode = optioncode + "*";
				}
				optioncode = optioncode + frmitem.cboOptionID[i].value;
			}
		}
		
		var nurl;
		nurl = url + "?pID=" + frmitem.pID.value;
		nurl = nurl + "&txtqty=" + frmitem.txtqty.value;
		nurl = nurl + "&cboOptionID=" + optioncode;
		nurl=nurl+"&sid="+Math.random();
		
		xmlHttp.onreadystatechange=AjaxUpdateCartCount;
		xmlHttp.open("GET",nurl,true);
		xmlHttp.send(null);
		
		//fade the layer to indicate addition to cart
		opacOut("divItem" + frmitem.pID.value);
	}
	
	/**********************************************************
		AJAX REMOVE FROMT CART ROUTINE
	**********************************************************/
	function RemoveFromCart(ccode, itemlayer, itemcost) {
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null)
		{
			//browser doesn't support XMLHTTP so we will return 
			//true so that the form submits normally.
			alert("AJAX Failed. Using Manual Cart.");
			return false;
		} 
		
		//url to remove page
		var url="ajax_removefromcart.asp";
		var nurl = url + "?ccode=" + ccode;
		nurl=nurl+"&sid="+Math.random();
		xmlHttp.onreadystatechange=AjaxUpdateCartCount;
		xmlHttp.open("GET",nurl,true);
		xmlHttp.send(null);
		
		//remove layer
		document.getElementById(itemlayer).style.display="none";
		//update cart total cost by subtracting the removed items total cost.
		var totalcost = parseFloat(document.getElementById("divTotal").innerHTML);
		totalcost=totalcost - itemcost;
		document.getElementById("divTotal").innerHTML = totalcost.toFixed(2);
		
	}
	
	
	/**********************************************************
		AJAX UPDATE CART COUNT ROUTINE
	**********************************************************/
	/* Update cart count via javascript after cart items are added or removed */
	function AjaxUpdateCartCount() {
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
		{ 
			document.getElementById("quickcartcounter").innerHTML = xmlHttp.responseText;			
			//now we animate the cart counter to show it has been updated.
			CartCountPulsate();
		}
	}
	
	/**********************************************************
		AJAX INSTANT PRODUCT SEARCH ROUTINE
	**********************************************************/
	function SearchProducts(kw) {
		xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null)
		{
			alert ("Browser does not support HTTP Request");
			return;
		} 
	
		var url="ajax_productsearch.asp";	
		url=url+"?txtsearch="+kw;
		url=url+"&sid="+Math.random();
		xmlHttp.onreadystatechange=displaySearchResults; 
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	} 

	function displaySearchResults() 
	{ 
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete");
		{ 
			try {
				document.getElementById("divResults").innerHTML=xmlHttp.responseText;
			}
			catch(err) {
				//do nothing
			}
			
		} 
	} 
	
	
	
	/* third party scripts */
	
	/* find element position on page */	
	function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
	
	
	/* fading layer technique */
	//fades layer in and out
	ie5  = (document.all && document.getElementById);
	ns6 = (!document.all && document.getElementById);
	opac3 = 100;
	 
	function opacIn(layer) {
	    if(opac3 < 100){
	        opac3+=5;			
		    if(ie5) document.getElementById(layer).filters.alpha.opacity = opac3;
		    if(ns6) document.getElementById(layer).style.MozOpacity = opac3/100;
			document.getElementById(layer).style.KhtmlOpacity  = opac3/100;
			
	        setTimeout('opacIn("' + layer + '")', 1);
	    } 
		else {
				adding = false;
		}
}
 
function opacOut(layer) {
    if(opac3 > 0){
        opac3-=5;
        if(ie5) document.getElementById(layer).filters.alpha.opacity = opac3;
        if(ns6) document.getElementById(layer).style.MozOpacity = opac3/100;
		document.getElementById(layer).style.KhtmlOpacity  = opac3/100;
        setTimeout('opacOut("' + layer + '")', 1);
    }
	else {
			opacIn(layer);
	}
}

