var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
try {
	var pageTracker = _gat._getTracker("UA-304590-5");
	pageTracker._trackPageview();
} 
catch(err) {}

ShoppingCart = function(showDiv){
	var cartObj = new Object();
	var utilsObj = new Utils();
	
	function init(showDiv){
		if(showDiv){
			cartObj.div = document.createElement('div');
			cartObj.div.className = "cartDiv";
			cartObj.div.orgClassName = cartObj.div.className;
			cartObj.div.onclick = function(){ document.location.href = "store/cart/"; }
		
			cartObj.div.appendChild(document.createTextNode("Items in cart: "));
			cartObj.itemCountSpan = document.createElement('span');
			cartObj.div.appendChild(cartObj.itemCountSpan);
		
			cartObj.itemCount = document.createTextNode("0");
			cartObj.itemCountSpan.appendChild(cartObj.itemCount);
		
			cartObj.link = document.createElement("a");
			cartObj.link.href = "store/cart/";
			cartObj.link.appendChild(document.createTextNode("View Cart/Checkout"));
			cartObj.div.appendChild(cartObj.link);

		}
		cartObj.counts = new Array();
		utilsObj.addEventListener("onload", cartOnload);
	}
	
	function cartOnload(){
		var inputs = document.getElementsByTagName('input');
		cartObj.items = new Object();
		
		for(var i=0, removeLink, item; item = inputs[i]; i++){
			if(item.className == "itemCount"){
				item.itemIndex = cartObj.counts.length;
				item.itemNumber = parseInt(item.id.substring(4));
				item.priceTotal = document.getElementById('total'+item.itemNumber);
				item.onkeyup = function(){
					addItem(this.itemNumber, this.value);
				}
				cartObj.items["item"+item.itemNumber] = item;
				cartObj.counts.push(0);
				if(removeLink = document.getElementById('remove'+item.itemNumber)){
					removeLink.row = removeLink.parentNode.parentNode;
					removeLink.itemNumber = item.itemNumber;
					removeLink.onclick = function(){ removeItem(this.itemNumber, this.row); }
				}
				setCount(item.itemNumber, item.value);
			}
		}
		
		if(cartObj.div != null){
			document.body.appendChild(cartObj.div);
			positionDiv();
			utilsObj.addEventListener("onscroll", positionDiv);
		}
	}
	
	this.addItem = addItem;
	function addItem(itemNumber, count){
		var url = "ajax/?action=addToCart&item="+itemNumber+"&count="+count+"&ts=" + new Date().getTime();
		new AjaxRequest(url, function(result){ readAddReply(result, itemNumber, count); });
	}
	function removeItem(itemNumber, row){
		var url = "ajax/?action=addToCart&item="+itemNumber+"&count=0&ts=" + new Date().getTime();
		row.style.display = "none";
		new AjaxRequest(url, function(result){ readRemoveReply(result, itemNumber, row); });
	}
	function readAddReply(reply, itemNumber, count){
		try{
			var result = reply.getElementsByTagName('result').item(0).firstChild.nodeValue;
			var priceTotal = reply.getElementsByTagName('priceTotal').item(0).firstChild.nodeValue;
			var total = reply.getElementsByTagName('total').item(0).firstChild.nodeValue;
			var discount = reply.getElementsByTagName('discount').item(0).firstChild.nodeValue;
			if(result.toLowerCase() == "success"){
				setCount(itemNumber, count);
				// alert(cartObj.items["item"+itemNumber]);
				if(cartObj.items["item"+itemNumber]){
				  if(cartObj.items["item"+itemNumber].priceTotal != null)	
				  	cartObj.items["item"+itemNumber].priceTotal.firstChild.nodeValue = priceTotal;
					if(totalElement = document.getElementById('total')) totalElement.firstChild.nodeValue = total;
					if(discountElement = document.getElementById('discount')) discountElement.firstChild.nodeValue = discount;
				}
			}
			else alert(result);
		}
		catch(err){ alert("There was an error while trying to communicate with the server, please try again later."); }
	}
	function readRemoveReply(reply, itemNumber, row){
		try{
			var result = reply.getElementsByTagName('result').item(0).firstChild.nodeValue;
			var total = reply.getElementsByTagName('total').item(0).firstChild.nodeValue;
			var discount = reply.getElementsByTagName('discount').item(0).firstChild.nodeValue;
			if(result.toLowerCase() == "success"){
				var totalCount = setCount(itemNumber, 0);
				if(totalElement = document.getElementById('total')) totalElement.firstChild.nodeValue = total;
				if(discountElement = document.getElementById('discount')) discountElement.firstChild.nodeValue = discount;
				if(totalCount == 0){
					var htmlObj = document.getElementById('cartItems');
					if(htmlObj != null) htmlObj.style.display = "none";
					htmlObj = document.getElementById('cartEmpty');
					if(htmlObj) htmlObj.style.display = "block";
				}
				row.parentNode.parentNode.deleteRow(row.rowIndex);
			}
			else{
				row.style.display = "";
				alert(result);
			}
		}
		catch(err){ alert("There was an error while trying to communicate with the server, please try again later."); }
	}
	function setCount(itemNumber, count){
		count = parseInt(count) || 0;
		cartObj.counts[cartObj.items["item"+itemNumber].itemIndex] = count;
		
		var total = 0;
		for(var i=0; i<cartObj.counts.length; i++) total += cartObj.counts[i];
			
		if(cartObj.div != null){
			cartObj.itemCount.nodeValue = total;
			if(total > 0) cartObj.div.className = cartObj.div.orgClassName;
			else cartObj.div.className = cartObj.div.orgClassName + " empty";
		}

		var htmlObj = document.getElementById('checkoutLink');
		if(htmlObj != null) htmlObj.style.display = (total == 0)? "none" : "";

		return total;
	}
	function incrementCount(item, amt){
		amt = parseInt(amt) || 1;
		setCount(item, parseInt(cartObj.count)+amt);
	}
	function decrementCount(item, amt){
		amt = parseInt(amt) || 1;
		setCount(item, parseInt(cartObj.count)-amt);
	}
	
	var startPos = 255;
	function positionDiv(){
		var scroll = utilsObj.getScroll();
		if(scroll.y > (startPos - 10)){
			if(!document.all){
				cartObj.div.style.top = "10px";
				cartObj.div.style.position = "fixed";
			}
			else{
				cartObj.div.style.top = (scroll.y + 10) + "px";
			}
		}
		else{
			cartObj.div.style.top = startPos + "px";
			cartObj.div.style.position = "absolute";
		}
	}
	
	init(showDiv);
}

AjaxRequest = function(u, cB){
	var http_obj = null;
	var callBack = null;
	
	function sendRequest(url, cB){
		try{
			callBack = cB;
			http_obj = getHTTPObject();
			http_obj.open("GET", url, true);
		  http_obj.onreadystatechange = handleHttpResponse;
		  http_obj.send(null);
		}
		catch(err){ }
	}
	
	function getHTTPObject() {
	  var xmlhttp = null;
	  if (window.XMLHttpRequest) { // Mozilla
	    xmlhttp = new XMLHttpRequest();
	    if (xmlhttp.overrideMimeType) {
	      xmlhttp.overrideMimeType('text/xml');
	    }
	  }
	  else if (window.ActiveXObject) { // IE
	    try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} 
	    catch (e) {
	      try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} 
	      catch (e) {}
	    }
	  }

	  if (!xmlhttp) {
	    throw 'Could not create an XMLHTTP instance';
	    return false;
	  }
	  else return xmlhttp;
	}
	
	function handleHttpResponse() {
	  if (http_obj.readyState == 4) {
	    if (http_obj.status == 200) {
				//alert(http_obj.responseXML.documentElement);
	      if(callBack != null) callBack(http_obj.responseXML.documentElement);
				// callBack(http_obj.responseXML.documentElement);
	    }
	  }
	}
	
	sendRequest(u, cB);
}

Utils = function(){
	this.getScroll = function(){
		var bodyObj = this.getBodyElement(window.document);
  
	  var scroll = {
	    x:bodyObj.scrollLeft || window.pageXOffset || 0, 
	    y:bodyObj.scrollTop || window.pageYOffset || 0
	  };
  
		return scroll;
	}
	this.getDocumentElement = function(element){
		while(element.nodeType != 9) element = element.parentNode;
		return element;
	}
	this.getBodyElement = function(element){
		element = this.getDocumentElement(element);
  
		if(element.documentElement && element.documentElement.clientHeight){
	    element = element.documentElement;
	  } 
		else if(element.body) element = element.body;
	  else element = null;

		return element;
	}
	this.addEventListener = function(eventAction, execFunction, parentObj){
	  parentObj = parentObj || window;
	  if(eventAction == null || execFunction == null || parentObj == null) return;
	  if(parentObj.addEventListener){
	    eventAction = eventAction.replace("on", "");
	    parentObj.addEventListener(eventAction, execFunction, false);
	  }
	  else if(parentObj.attachEvent)
	    parentObj.attachEvent(eventAction, execFunction);
	  else alert("could not add listner for '" + eventAction + "'.");
	}
}

ItemListInterface = function(){
	var lists = [];
	var utilsObj = new Utils();
	
	function init(){
		var itemListSelector = document.getElementById('itemListSelector');
		itemListSelector.linkElements = 	itemListSelector.getElementsByTagName('a');
		
		var fields = document.getElementsByTagName('fieldset');
		for(var i=0, field; field = fields[i]; i++){
			if(field.className.toLowerCase() == "itemlist"){
				if(itemListSelector.linkElements[i]){
					field.selector = itemListSelector.linkElements[i];
					field.selector.fieldId = field.id;
					field.selector.onclick = function(){
						showList(this.fieldId);
					}
					
				}
				else alert("Count missmatch");
				lists.push(field);
			}
		}
		
		if(document.location.href.indexOf("view=") > -1){
			var str = document.location.href.substring(document.location.href.indexOf("view=")+5);
			str = str.split("&");
			showList(str[0]);
		}
		else showList(lists[0].id);
		itemListSelector.className = "initialized";
	}
	
	function showList(listId){
		for(var i=0, field; field = lists[i]; i++){
			if(field.id == listId){
				field.style.display = "block";
				field.selector.className = "selected";
				field.selector.blur();
			}
			else{
				field.style.display = "none";
				field.selector.className = "";
			}
		}
	}
	
	utilsObj.addEventListener("onload", init);
}