// this script is dependent on the prototype library, more info on prototype is available at http://prototype.conio.net/

function hideLightbox()
{
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');
	if(objOverlay != null)
	objOverlay.style.display = 'none';
	if(objLightbox != null)
	objLightbox.style.display = 'none';
	// disable keypress listener
	document.onkeypress = '';
}

// 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');
//This test to see if we are on RCKP proper, and minicart has more than one item.
	if (document.getElementsByClassName('minicart_rckp_main').length > 0)
	{
		//This code inserts a div up top which will contain the background image
		//  which is a PNG, and therefore get around the IE6 issues
			var holderEl = $("sHdrMiniCartBlk");
			holderEl.hide();
	}
	/* This line was added so that the RCKP specific code within updateCart()
	will function properly for the insert */
	$('minicart').innerHTML="";
	/******************************/

	var orderFormArray = document.getElementsByName("orderForm");
	var fwSearchArray = document.getElementsByName("fwSearch");
	var brandFilterArray = document.getElementsByName("brandFilter");

	var colorFilterArray = document.getElementsByName("colors_0");

	if (orderFormArray && orderFormArray.length > 0)
	{
		if (document.getElementsByName("prod_0"))
		{
			document.orderForm.prod_0.style.visibility = "visible";
		}
		if (document.getElementsByName("qty_0"))
		{
			document.orderForm.qty_0.style.visibility = "visible";
		}
		if (colorFilterArray.length > 0)
		{
			document.orderForm.colors_0.style.visibility = "visible";
		}
	}
 	try {
 		document.orderForm1.cXStoreSzSel.style.visibility = "visible";
 	} catch(err) {}	
 	try {
 		document.orderForm2.cXStoreSzSel.style.visibility = "visible";
 	} catch(err) {}	
 	try {
 		document.sortForm.s.style.visibility = "visible";
 	} catch(err) {
 	}
	if (fwSearchArray && fwSearchArray.length > 0)
	{
		if (document.getElementsByName("fsize"))
		{
			document.fwSearch.fsize.style.visibility = "visible";
		}
		if (document.getElementsByName("fpricesort"))
		{
			document.fwSearch.fpricesort.style.visibility = "visible";
		}
	}

	if (brandFilterArray && brandFilterArray.length > 0)
	{
		if (document.getElementsByName("fpricesort"))
		{
			document.brandFilter.fpricesort.style.visibility = "visible";
		}
		if (document.getElementsByName("fgender"))
		{
			document.brandFilter.fgender.style.visibility = "visible";
		}
	}
	if (fwSearchArray && fwSearchArray.length > 0)
	{
		if (document.getElementsByName("fsize"))
		{
			document.fwSearch.fsize.style.visibility = "visible";
		}
		if (document.getElementsByName("fpricesort"))
		{
			document.fwSearch.fpricesort.style.visibility = "visible";
		}
	}
}

function ajaxAddToCart(formObject)
{
	 if (document.getElementById("expressShop"))
	{
		document.getElementById("expressShop").style.display="none";
		hideLightbox();
	}
	// first stab at handling browsers that don't support AJAX
	if (!supportedBrowser)
	{
		formObject.submit();
	}
	else
	{
		var 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 });
	}
}

function handleStateChange(req)
{
	scroll(0,0);
	if(req.status == 200)
	{
		var txt = req.responseText;
		if (txt.indexOf("AJAX_SUCCESS") > -1)
		{
			updateCartItemDisplay(getXmlValue(txt, 'itemCount'));
			getOrderItemDetails(getXmlValue(txt, "skusAdded"), getXmlValue(txt, "qtyAdded"));
		}
		else
		{
			window.location = getXmlValue(txt, 'rdir');
		}
	}
	else
	{
		alert("Unable to retrieve a response from the server.");
	}
}

function getOrderItemDetails(skusAdded, qtyAdded)
{
	// Append a timestamp to prevent caching of the response.
	var myAjax = new Ajax.Request( '/minicart/index.jsp', { method: 'get', parameters: 't=' + new Date().getTime() + '&skusAdded=' + skusAdded + '&qtyAdded=' + qtyAdded, onComplete: updateCart });
}
var hideCartTimer;
function updateCart(req)
{
	if(req.status == 200)
	{
		Element.update('minicart', req.responseText);

		var orderFormArray = document.getElementsByName("orderForm");
		var fwSearchArray = document.getElementsByName("fwSearch");

		var colorFilterArray = document.getElementsByName("colors_0");

		if (orderFormArray.length > 0)
		{
			if (document.getElementsByName("prod_0"))
			{
				document.orderForm.prod_0.style.visibility = "hidden";
			}
			if (document.getElementsByName("qty_0"))
			{
				document.orderForm.qty_0.style.visibility = "hidden";
			}
			if (colorFilterArray.length > 0)
			{
				document.orderForm.colors_0.style.visibility = "hidden";
			}
		}
   	try {
   		document.orderForm1.cXStoreSzSel.style.visibility = "hidden";
   	} catch(err) {}
   	try {
   		document.orderForm2.cXStoreSzSel.style.visibility = "hidden";
   	} catch(err) {}	
   	try {
   		document.sortForm.s.style.visibility = "hidden";
   	} catch(err) {}
		if (fwSearchArray.length > 0)
		{
			if (document.getElementsByName("fsize"))
			{
				document.fwSearch.fsize.style.visibility = "hidden";
			}
			if (document.getElementsByName("fpricesort"))
			{
				document.fwSearch.fpricesort.style.visibility = "hidden";
			}
		}
		/*********** BEGIN RCKP SPECIFIC CODE  ***********/
    //This test to see if we are on RCKP proper, and minicart has more than one item.
		if (document.getElementsByClassName('minicart_rckp_main').length > 0)
		{
			//This code inserts a div up top which will contain the background image
			//  which is a PNG, and therefore get around the IE6 issues
   	    var objMiniCartDiv = $("minicart");
				var holderEl = $("sHdrMiniCartBlk");
				holderEl.show();

   	    var objMiniCartBkgDiv = document.createElement("div");
   	    objMiniCartBkgDiv.setAttribute('id','cMiniCartBkgDiv');
   	    new Insertion.Top('minicart',objMiniCartBkgDiv)
			if ($('minicart1_recently_added_content'))
			{
		  	$('cMiniCartBkgDiv').className = 'minicartLarge';
		  	$('minicart1_container').className = 'cMiniCartLargeCntr';
		  	$('minicart1_proceed').onclick = 'document.location.href="/cart/index.jsp"';

		  } else {
		  	$('cMiniCartBkgDiv').className = 'minicartSmall';
		  	// We want the Checkout button for torsion to send us to the cart for RCKP proper
		  	$('minicart1_proceed').onclick = function(e) {document.location.href="/cart/index.jsp"};
		  }

		}
     /*********** END RCKP SPECIFIC CODE  ***********/

		Element.show('minicart');
		clearTimeout(hideCartTimer);
		hideCartTimer = setTimeout('hideCart()', 5000); //this will need to change back to 5000
		// 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)
{
	var n = $("items");
	// this document node might not exist everywhere
	if (n)
	{
		if (itemCount == 0 || itemCount > 1)
		{
			n.firstChild.nodeValue = itemCount + ' items';
		}
		else
		{
			n.firstChild.nodeValue = itemCount + ' item';
		}
	}
}

//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;
}
