// this script is dependent on the prototype library, more info on prototype is available at http://prototype.conio.net/

// used for executing javascript returned in the xmlHttpRequest content
function execJS(node)
{	
	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');
	var st = node.getElementsByTagName('SCRIPT');
  	var strExec;
  	for(var i=0;i<st.length; i++) 
  	{     
    	if (bSaf) 
		{
      		strExec = st[i].innerHTML;
    	}
    	else if (bOpera) 
		{
      		strExec = st[i].text;
    	}
    	else if (bMoz) 
		{
      		strExec = st[i].textContent;
    	}
    	else 
		{
      		strExec = st[i].text;
    	}
		try 
		{
      		eval(strExec);
    	} 
		catch(e) 
		{
      		alert(e);
    	}
  	}
}
var showCart = 0;

//browser sniffing
var supportedBrowser = (navigator.userAgent.indexOf('MSIE 5.2') == -1);

function hideCart()
{
	Element.hide('minicart');
	toggleSelects('showSelects');
	
	if(document.getElementById('showCheckout'))
	{
		document.getElementById('showCheckout').style.visibility = 'visible';
		document.getElementById('showCheckout').style.display = 'block';
	}
	if((document.getElementById('selectSizeMinicart') && document.getElementById('selectSizeMinicart').style.visibility == 'hidden') || (!document.getElementById('selectSizeMinicart')))
	{
		var formName = '';
		if(document.orderForm)
		{
			formName = document.orderForm;
		}
		else if(document.cyo_form)
		{
			formName = document.cyo_form;
		}
		else if(document.color_form)
		{
			formName = document.color_form;
		}
		if(formName != '')
		{
			for(i = 0; i < formName.elements.length; i++)
			{
				if(formName.elements[i].type == "select-one")
				{
					formName.elements[i].selectedIndex = 0;
				}
			}
		}
		if(document.getElementById('showCartMessages'))
		{
			document.getElementById('showCartMessages').style.visibility = 'visible';
			document.getElementById('showCartMessages').style.display = 'block';
		}
		if(document.getElementById('showCartMessages2'))
		{
			document.getElementById('showCartMessages2').style.visibility = 'visible';
			document.getElementById('showCartMessages2').style.display = 'block';
		}
	}
	if(document.getElementById('showCheckout0'))
	{
		document.getElementById('showCheckout0').style.visibility = 'hidden';
		document.getElementById('showCheckout0').style.display = 'none';
	}
	if(document.getElementById('errorMessagingDiv'))
	{
		document.getElementById('errorMessagingDiv').style.visibility = 'hidden';
		document.getElementById('errorMessagingDiv').style.display = 'none';
	}
	if(document.getElementById('showCheckout2'))
	{
		document.getElementById('showCheckout2').style.visibility = 'visible';
		document.getElementById('showCheckout2').style.display = 'block';
	}
	if(document.getElementById('searchbox'))
	{
		document.getElementById('searchbox').style.visibility = 'visible';
		document.getElementById('searchbox').style.display = 'block';
	}
	if(document.getElementById('s'))
	{
		document.getElementById('s').style.visibility = 'visible';
	}	//location.reload();
}

function ajaxAddToCart(formObject,prodDisplay)
{
	// first stab at handling browsers that don't support AJAX
	if (!supportedBrowser)
	{
		if (document.getElementById("expressShop"))
		{
			hideExpressShop();
		} 
		formObject.submit();
	}
	else
	{
		var url = "";
		if(prodDisplay == "giftCertificate" || prodDisplay == "giftCard")
		{
			url = "/customHandler/customHandler.jsp";
		}
		else
		{
			
			url = "/cartHandler/index.jsp";
		}
		var pars = "";
		for(var i=0;i < formObject.elements.length;i++)
		{
			var elem = formObject.elements[i];
			if (elem.type != 'checkbox' || (elem.type == 'checkbox' && elem.checked == true))
			{	
				pars = pars + elem.name + "=" + elem.value + "&";
				
			}
		}
		// make sure the carthandler knows its getting an async call.
		pars = pars + 'async=true'; 
		
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: handleStateChange }); 
		if (document.getElementById("expressShop"))
		{
			hideExpressShop();
		} 		
	}
}


function handleStateChange(req)
{
	scroll(0,0);

	if(req.status == 200)
	{
		var txt = req.responseText;
		
		if (txt.indexOf("AJAX_SUCCESS") > -1)
		{	
			var count = getXmlValue(txt,'itemCount');
			var value = getXmlValue(txt,'itemTotValue');
			var errTxt = getXmlValue(txt,'errorMessage');
			updateCartItemDisplay(count,value);
			updateErrMsgDisplay(errTxt);
			getOrderItemDetails();
		}
		else
		{
			window.location = getXmlValue(txt, 'rdir');
		}
	}
	else
	{
		alert("Unable to retrieve a response from the server .");
	}
}

function getOrderItemDetails()
{
	// Append a timestamp to prevent caching of the response.
	var myAjax = new Ajax.Request( '/minicart/index.jsp', { method: 'get', parameters: 't=' + new Date().getTime(), onComplete: updateCart });
}

function toggleSelects(toggleMode)
{
	if (navigator.appVersion.indexOf("MSIE")!=-1)
	{
		var s = document.getElementsByTagName('select');
		if (toggleMode == "hideSelects")
		{
  			for (var i=0; i<s.length; i++) 
			{
    			s[i].style.visibility = "hidden";
  			}
		}
		else
		{
			for (var i=0; i<s.length; i++) 
			{
    			s[i].style.visibility = "visible";
  			}
		}
	}
}

function updateCart(req)
{
	if(req.status == 200)
	{
		Element.update('minicart', req.responseText);
		if(document.getElementById('searchbox'))
		{
			document.getElementById('searchbox').style.visibility = 'hidden';
			document.getElementById('searchbox').style.display = 'none';
		}
		if(document.getElementById('s'))
		{
			document.getElementById('s').style.visibility = 'hidden';
		}
		Element.show('minicart');
//		toggleSelects("hideSelects");
		clearTimeout('hideCart()');
		// run any scripts that might be in the minicart html, mainly this ensures that omniture reporting works

		execJS($("minicart"));
	}
	else
	{
		alert("Unable to retrieve a response from the server    .");
	}
}

function updateCartItemDisplay(itemCount,itemValue)
{
	var n = $("cartQtyId");
	// this document node might not exist everywhere
	if (n)
	{
		var newText = '';
		if (itemCount == 0 || itemCount > 1)
		{
			newText = itemCount + ' Items';
		}
		else
		{
			newText = itemCount + ' Item';
		}
		n.innerHTML = newText + " : $" + itemValue;
	}
}

function updateErrMsgDisplay(errTxt)
{
	//var n = $("errMessageDivMinicart");
	var n = document.getElementById('errMessageDivMinicart');
	var n2 = document.getElementById('errMessageDivMinicart2');
	if (n)
	{
		var newText = '';
		newText = errTxt;
		n.innerHTML = newText;
		n.style.display = 'block';
		n.style.visibility = 'visible';
	}
	if (n2)
	{
		var newText = '';
		newText = errTxt;
		n2.innerHTML = newText;
		n2.style.display = 'block';
		n2.style.visibility = 'visible';
	}
}

//returns the value of an xml node "nodeName" within "inText"
function getXmlValue(inText, nodeName)
{
	var ret = '';
	var n = '<' + nodeName + '>';
	var n2 = '</' + nodeName + '>';
	var f = inText.indexOf(n);
	if (f > -1)
	{
		ret = inText.substring(f + n.length, inText.indexOf(n2));
	}
	return ret;
}