/*

Copyright (C) 2002 Fry Inc., All Rights Reserved.

Purpose:
Generates the client-side javascript include file for
common utility functions that we'll use for doing image
roll-overs, redirects, popup windows, etc.

*/

	// used for loading function durning the page load
	function addLoadEvent(func) {
	  var oldonload = window.onload;
	  if (typeof window.onload != 'function') {
	    window.onload = func;
	  }
	  else {
	    window.onload = function() {
	      if (oldonload) {
	        oldonload();
	      }
	      func();
	    }
	  }
	}

	addLoadEvent(function() {

		getMyStoreBtn();
		getZipField();
	});
    //AJAX browser history support functions
	function useDhtmlHistory(){
		return (navigator.userAgent.toLowerCase().indexOf('safari') == - 1);
	}
	function initializeDhtmlHistory(methodName){
		if(useDhtmlHistory()){
			dhtmlHistory.initialize();
			dhtmlHistory.addListener(methodName);
		}
	}
	function addDhtmlHistory(keyName, keyValue){
		if(useDhtmlHistory()){
			dhtmlHistory.add(keyName, keyValue);
		}
	}
	// General JavaScript Utils
	// used to get items by class
	function getElementsByClass(searchClass,node,tag) {

	    // this array will hold the nodes that have the desired class
	    var classElements = [];

	    // if we did not pass the node parameter, assume document
	    if (node == null) {node = document;}

	    // if we did not pass the tag parameter, grab every node
	    if (tag == null) {tag = '*';}

	    // gather all the element nodes to look through; by default is everything in document
	    var els = node.getElementsByTagName(tag);

	    // to improve loop performance, determine the length ahead of time
	    var elsLen = els.length;

	    // establish the pattern to search for within className
	    var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");

	    // look through all the class properties to see if there is a match
	    // the j variable is the counter variable that increments each time a
	    // match is found and becomes the next item in classElements
	    for (var i = 0, j = 0; i < elsLen; i++) {
	        if (pattern.test(els[i].className)) {
	           classElements[j] = els[i];
	           j++;
	        }
	    }

	    // send back the array of elements to whatever variable called this function
	    return classElements;

	}

   //General AJAX Utils
	function reportError(msg){
		window.status = msg;
	}
	function getQueryStringParams(){
		var sUrl = window.location.href;
		var qsp = '';
		var ajaxQsp = sUrl.indexOf('#');
		if(ajaxQsp > 0){
			qsp = sUrl.substring(ajaxQsp + 1,sUrl.length);
			if(qsp=='') sUrl = sUrl.replace('#','');
		}
		var stdQsp = sUrl.indexOf('?');
		if(stdQsp > 0 && qsp=='') qsp = sUrl.replace('#','').substring(stdQsp + 1,sUrl.length);
		return qsp;
	}

   //AJAX functions


	function addItemToWishList(frm, divToUpdate, formName){
		var url = urlAddItemToWishlist;
		var pars = Form.serialize(frm) + '&formName=' + formName;
		var myAjax = new Ajax.Updater(divToUpdate, url, {method: 'post', parameters: pars, evalScripts: true});
	}

	function showSamples(){
		var url = urlIncludesSamples;
		var pars = '';
		//var myAjax = jQuery('#mysamples').load(url,pars);
		var myAjax = new Ajax.Updater('mysamples', url, {method: 'get', parameters: pars});
	}

	function showRefinements(qsParams){
		var url = urlRefineRefinementPanel;
		var pars = qsParams;
		var myAjax = new Ajax.Updater('refinements', url, {method: 'get', parameters: pars, evalScripts: true, onLoading: loadingRefinement, onComplete: formatRefMenu});
	}

    function showStoreInformationPanel(qsParams) {
        var url = urlMapLayerHome;
        var pars = qsParams;
        var myAjax = new Ajax.Updater('store-info-layer', url, {method: 'post', parameters: pars, evalScripts: true, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
    }
	function showProducts(qsParams){
		var productWrapper = document.getElementById('products');
		productWrapper.innerHTML = '';
		var url = urlRefineProductPanel;
		var pars = qsParams;
		//var myAjax = new Ajax.Updater('products', url, {method: 'get', parameters: pars, evalScripts: true, onLoading: loadingProducts});
        var myAjax = new Ajax.Updater('products', url, {method: 'get', parameters: pars, evalScripts: true, onLoading: loadingProducts, onComplete: setQView});
		schedule();
	}

    function setQView(){
        $j('a.jt3:lt(500)').cluetip({
            cluetipClass: 'jtip',
            width:395,
            leftOffset: -30,
            activation: 'click',
            //arrows: false,
            //dropShadow: false,
            sticky: true,
            //ajaxCache: true,
            cluezIndex: 9999,
            //cursor: 'hand',
            mouseOutClose: true,
            closePosition: 'title',
            hoverIntent: false,
            closeText: '<img src="/assets/images/global/cluetip/cross.png" alt="close" />'
            //fx: {open: 'fadeIn',
            //    openSpeed: 'fast',
            //    closeCallback: 'hide',
            //    closeSpeed: ''
            //}
        });
    }

    function showStores(qsParams) {
        var url = urlAjaxSearchStores;
        var pars = qsParams;
        var myAjax = new Ajax.Updater('store-finder-results', url, {method: 'post', parameters: pars, onLoading: loadingStores, onComplete: completeStores});
    }

    function setMyStore(qsParams) {
        var url = urlAjaxSetMyStore;
        var pars = qsParams;
        var myAjax = new Ajax.Updater('store-finder-selected', url, {method: 'post', parameters: pars, onComplete: updateHeader});
    }

    function setMyStoreById(storeId) {
        var pars = "storeId=" + storeId;
        var url = urlSetMyStore;
        var myAjax = new Ajax.Request( url, {method: 'post', parameters: pars, onComplete: myStoreRefreshPage});
    }
    function setMyStoreFromProductList(qsParams) {
        var url = urlAjaxSetMyStore;
        var pars = qsParams;
        var myAjax = new Ajax.Updater('store-finder-selected', url, {method: 'post', parameters: pars, onComplete: refreshPage});
    }
    function updateHeader() {
        //$("store-finder-header-selected").innerHTML = $("store-finder-selected-for-header").value;
        var pars = "headerStyle=true";
        var url = urlMyStoreJSP;
        var myAjax = new Ajax.Updater('store-finder-header-selected', url, {method: 'post', parameters: pars});
    }
    function loadingStores() {
        changeClass('home-store-finder', 'searching-stores');

    }
    function completeStores() {
        changeClass('home-store-finder', 'search-stores-listing');
        getpopupHead();
    }

    function completeStoreInfoLayer(){
        $('store-info-layer').className = "showing";
        getpopupHead();
    }
    function loadingStoreInfoLayer() {
        $('store-info-layer').className = "loading";

    }
    function loadingDirections() {
       $('store-info-layer').className = "loading";
    }
    function completeDirections() {
        $('store-info-layer').className = "showing";
    }
    function myStoreRefreshPage() {
        var msSearch = window.location.search;
        if(msSearch){
            var msNewParams = msSearch.toQueryParams();
            if(msNewParams.showStoreInfoMini){
                window.location.href = window.location.href;
            }else{
                msNewParams.showStoreInfoMini = 'true';
                var msNewQuery = $H(msNewParams).toQueryString();
                var msNewHref = window.location.href;
                msNewHref = msNewHref.split("?",2);
                msNewHref = msNewHref[0] + "?" + msNewQuery;
                window.location.href = msNewHref;
            }
        }else{
            var msNewHref = window.location.href;
            msNewHref = msNewHref.replace('#','');
            window.location.href = msNewHref + "?showStoreInfoMini=true";
        }
    }
    function refreshPage() {
        window.location.href = window.location.href;
    }

	function loadingProducts(){
		$("prod-loading").className = "";
		$("refine-prodwrap").className = "refine-prodwrap-transon";
	}

	 function refine(prodRefDispNameIdStr, isSelected){
        dcsMultiTrack('WT.cg_n','','WT.cg_s','','WT.ti','Refinements Used','WT.si_n','Refinements','WT.si_p','used');
        var refParams = (document.refinementForm.brParams.value).replace('?','');
		if (isSelected)
			refParams += '&remove=' + prodRefDispNameIdStr;
		else
			refParams += '&add=' + prodRefDispNameIdStr;

		showRefinements(refParams);
		showProducts(refParams);
		addDhtmlHistory(refParams, refParams);
	 }

	function showProductDetails(rQsp)
	{
		var url = urlProductDetailsPanel;
		var pars = rQsp;
		var myAjax = new Ajax.Updater('product_details', url, {method: 'get', parameters: pars});
	}

	function addProduct(frm)
	{
		var url = urlAddItem;
		var pars = Form.serialize(frm);
		var myAjax = new Ajax.Updater('product_details', url, {method: 'get', parameters: pars});
	}

    function resetPanels(resetParams)
    {
        resetParams = resetParams.replace('?','');
        showRefinements(resetParams);
        showProducts(resetParams);
        addDhtmlHistory(resetParams, resetParams);
    }

    function sortResults(currQsParams)
    {
        var sortIndx = currQsParams.indexOf('&sort=');
        if(sortIndx>0)
        {
            var refParams = currQsParams.substring(0, sortIndx) + '&sort=' + document.sortForm.sort.value + currQsParams.substring(sortIndx+7, currQsParams.length);
        }
        else
        {
            var refParams = currQsParams + '&sort=' + document.sortForm.sort.value;
        }
        refParams = refParams.replace('?','');
        showRefinements(refParams);
        showProducts(refParams);
        addDhtmlHistory(refParams, refParams);
    }

	function addProdToCompare(frm, divToUpdate, formName){
		var url = urlAddItemCompare;
		var pars = Form.serialize(frm) + '&formName=' + formName;
        var myAjax = new Ajax.Updater(divToUpdate, url, {method: 'post', parameters: pars, evalScripts: true});
	}

	function showCompareList(formName){
		var url = urlCompareItems;
		var pars = 'formName=' + formName;
		var myAjax = new Ajax.Updater('compare-layer-items', url, {method: 'post', parameters: pars});
	}
	function showInfoPopup(accName){
		var url = urlAccInfoPopup;
		var pars = 'pageName=' + accName;
		var myAjax = new Ajax.Updater('product-info-content-layer', url, {method: 'get', parameters: pars, onComplete: visibleProductInfo});
	}
    function showCheckOutList(productID){
        var url = urlCeckoutPopup;
		var pars = 'productId=' + productID;
		var myAjax = new Ajax.Updater('tab_acc_trim_l', url, {method: 'get', parameters: pars});
    }

    function showAccTrimList(productID){
        var url = urlAccTrimList;
		var pars = 'productId=' + productID;
		var myAjax = new Ajax.Updater('acc_trim_list', url, {method: 'get', parameters: pars});
    }
    function showAccTrimListSwatch(productID){
        var url = urlAccTrimListSwatch;
		var pars = 'productId=' + productID;
		var myAjax = new Ajax.Updater('product-specs-wrapper', url, {method: 'get', parameters: pars});
    }
    function addAccessaryProduct(frm)
	{
		var url = urlAddAccItemToOrder;
		var pars = Form.serialize(frm);
        var myAjax = new Ajax.Updater('tab_acc_trim_l', url, {method: 'post', parameters: pars});
	}

    function addAccTrimProduct(frm,fromBrags)
	{
    	if(fromBrags.toString() == "true".toString()){
    		var pars = Form.serialize(frm)+ '&fromBrags=true';
    	} else {
    		var pars = Form.serialize(frm);
    	}
		var url = urlAddAccTrimItemToOrder;
		
        var myAjax = new Ajax.Updater('acc_trim_list', url, {method: 'post', parameters: pars});
	}

     function addAccTrimSwatchProduct(frm)
	{
		var url = urlAddAccTrimItemSwatchToOrder;
		var pars = Form.serialize(frm);
        var myAjax = new Ajax.Updater('product-specs-wrapper', url, {method: 'post', parameters: pars});
	}
	 function updateRefinementPanel(updateParams){
        updateParams = updateParams.replace('?','');
        showProducts(updateParams);
        addDhtmlHistory(updateParams, updateParams);
	 }

    function updateStoreInformationPanel(updateParams) {
        updateParams = updateParams.replace('?','');
        showStoreInformationPanel(updateParams);
    }

	 function updateProductPanel(updateParams){
        updateParams = updateParams.replace('?','');
        showProducts(updateParams);
        addDhtmlHistory(updateParams, updateParams);
	 }

    function updateStorePanel(updateParams){
       updateParams = updateParams.replace('?','');
       showStores(updateParams);
       //addDhtmlHistory(updateParams, updateParams);
    }

    function updateMyStore(updateParams){
       updateParams = updateParams.replace('?','');
       setMyStore(updateParams);
       //addDhtmlHistory(updateParams, updateParams);
    }

    function updateMyStoreFromProductList(updateParams){
       updateParams = updateParams.replace('?','');
       setMyStoreFromProductList(updateParams);
       //addDhtmlHistory(updateParams, updateParams);
    }
	function emailProductPageToFriend(frm){
		var url = urlAjaxProductEmail;
		var pars = Form.serialize(frm);
		var myAjax = new Ajax.Updater('tab_emailafriend_l', url, {method: 'post', parameters: pars});
	}

	function emailCurrentPageToFriend(frm){
		var url = urlAjaxProductEmail;
		var pars = Form.serialize(frm);
		var myAjax = new Ajax.Updater('panel_email_friend', url, {method: 'post', parameters: pars});
	}

	function showEmailAFriendPop(frm){
		var url = urlEmailSuccess;
        var pars = Form.serialize(frm);
		var myAjax = new Ajax.Updater('panel_email_friend', url, {method: 'post', parameters: pars});
	}

	function showEmailAStoreDealPop(frm){
		var url = urlStoreDealEmailSuccess;
        var pars = Form.serialize(frm);
		var myAjax = new Ajax.Updater('panel_email_store_deal', url, {method: 'post', parameters: pars});
	}

	function loadEmailAFriendTab(productId){
		var url = urlEmailSuccess;
        var pars = 'productId=' + productId;
		var myAjax = new Ajax.Updater('tab_emailafriend_l', url, {method: 'post', parameters: pars});
	}

    function updateStoreInformationPanelDirections(updateParams) {
        updateParams = updateParams.replace('?','');
        showStoreInformationPanelDirections(updateParams);
    }

    function showStoreInformationPanelDirections(qsParams) {
        var url = urlAjaxDeliveryGetroute;
        var pars = qsParams;
        var myAjax = new Ajax.Updater('store-info-layer', url, {method: 'post', parameters: pars, evalScripts: true, onLoading: loadingDirections, onComplete: completeDirections });

    }
    function loadingDirections() {
       $('store-info-layer').className = "loading";
    }
    function completeDirections() {
        $('store-info-layer').className = "showing";

    }

    function getZipField() {

    	if(document.getElementById('ms-request')) {

    		var zipField = document.getElementsByName('zipCode')[0];
    		zipField.onfocus = clearField;
    		zipField.onblur = retoreField;
    	}
    }

    function clearField() {

    	if(this.value == "Enter ZIP") {
    		this.value = "";
    	}
    }

    function retoreField() {

    	if(this.value.length == 0) {
    		this.value = "Enter ZIP";
    	}
    }

   function getMyStoreBtn() {

		if(document.getElementById('store-name')) {
			var findStoreBtn = document.getElementById('store-name');
			var findChangeBtn = document.getElementById('change-store');
			findStoreBtn.onclick = showStoreInfo;
			if(findChangeBtn){
                findChangeBtn.onclick = showListOfStores;
            }
        }

		if(document.getElementById('ms-request')) {
			var myStoreRequestFrm = document.getElementById('ms-request');
			var zipCodeBtn = document.getElementById('setStore');
			var storeLayer = document.getElementById('store-info-layer');
            if(isSLPopupEnabled){
                myStoreRequestFrm.onsubmit = showMyStore;
            } else {
                myStoreRequestFrm.onsubmit = forwardMyStore;
            }
        }

    }

    function showStoreInfo() {

      	var myStoreDiv = document.getElementById('store-info');
    	var storeListDiv = document.getElementById('store-list');
    	myStoreDiv.style.display = "block";
    	storeListDiv.style.display = "none";

		var url = urlStoreInfoMini;
        var pars = 'storeId=' + storeId + '&slPop=' + isSLPopupEnabled;
         var myAjax = new Ajax.Updater(myStoreDiv, url, {method: 'post', parameters: pars});

        var t = 0;
 		getCloseSIBtn();
		return false;
	}
    
    function homeBodyHeaderPopup(objState) {

      	var div = document.getElementById("home-header-popup");
    	div.style.display = "block";
    	
    	if (objState == "show") {
            div.style.visibility = "visible";
    	} else {
    		div.style.visibility = "hidden";
    	}

		var url = urlHomeHeaderPopup;
        var pars; 
        var myAjax = new Ajax.Updater(div, url, {method: 'post', parameters: pars});
		return false;
	}
    
	function chooseMyStoreWhenClickedOnSampleImage(objLocation, objState) {
		
		var myStoreDiv = document.getElementById("store-sample-popup");
    	myStoreDiv.style.display = "block";

        var popupLocation = objLocation;
        if(popupLocation == null){
            popupLocation = myStoreDiv;
        }
        var posX = findPosX(popupLocation);
        var posY = findPosY(popupLocation);
        var viewportX = null;
        var getDocMode = true;

    	if (self.innerHeight) { //other browsers
    		viewportX = self.innerWidth + self.pageXOffset;
    	} else if (document.documentElement && document.documentElement.scrollTop) { //explorer 6 standards-compliant
    		viewportX = document.documentElement.clientWidth + document.documentElement.scrollLeft;
    	} else if (document.body) { //explorer 5.5
    		getDocMode = false;
    		viewportX = document.body.clientWidth + document.body.scrollLeft;
    	}

        if (objState == "show") {
            if(popupLocation != myStoreDiv){
                if (posX + myStoreDiv.offsetWidth > viewportX) {
                	myStoreDiv.style.left = posX - myStoreDiv.offsetWidth + "px";
                } else {
                	myStoreDiv.style.left = posX + "px";
                }
                myStoreDiv.style.top = posY - myStoreDiv.offsetHeight + "px";
            }
            myStoreDiv.style.visibility = "visible";
    	} else {
    		myStoreDiv.style.visibility = "hidden";
    	}

    	var maxClosestStores = 3;
    	var url = urlChooseStoreSample;
    	var pars = 'zipCode=' + storeZip + '&' + 'maxClosestStores=' + maxClosestStores;
        var myAjax = new Ajax.Updater(myStoreDiv, url, {method: 'post', parameters: pars});

		return false;
	}
    
    function showStoreInfoWhenClickedOnSampleImage(objLocation, objState) {
    	
    	var myStoreDiv = document.getElementById("store-sample-popup");
    	myStoreDiv.style.display = "block";

        var popupLocation = objLocation;
        if(popupLocation == null){
            popupLocation = myStoreDiv;
        }
        var posX = findPosX(popupLocation);
        var posY = findPosY(popupLocation);
        var viewportX = null;
        var getDocMode = true;

    	if (self.innerHeight) { //other browsers
    		viewportX = self.innerWidth + self.pageXOffset;
    	} else if (document.documentElement && document.documentElement.scrollTop) { //explorer 6 standards-compliant
    		viewportX = document.documentElement.clientWidth + document.documentElement.scrollLeft;
    	} else if (document.body) { //explorer 5.5
    		getDocMode = false;
    		viewportX = document.body.clientWidth + document.body.scrollLeft;
    	}

        if (objState == "show") {
            if(popupLocation != myStoreDiv){
                if (posX + myStoreDiv.offsetWidth > viewportX) {
                	myStoreDiv.style.left = posX - myStoreDiv.offsetWidth + "px";
                } else {
                	myStoreDiv.style.left = posX + "px";
                }
                myStoreDiv.style.top = posY - myStoreDiv.offsetHeight + "px";
            }
            myStoreDiv.style.visibility = "visible";
    	} else {
    		myStoreDiv.style.visibility = "hidden";
    	}
        
        if (storeId != null){
        	var url = urlStoreInfoMiniSample;
        } else {
        }

        var pars = 'storeId=' + storeId + '&slPop=' + isSLPopupEnabled;
        var myAjax = new Ajax.Updater(myStoreDiv, url, {method: 'post', parameters: pars});

		return false;
	}
 
    function showStoreInfoPopup() {
		var storeLayer = document.getElementById('store-info-layer');
        var pars = "storeId=" + storeId + "&popup=true";
        var url = urlFindStoresByZip;
		storeLayer.className = "waiting";
		var myAjax = new Ajax.Updater(storeLayer, url, {method: 'post', parameters: pars, onLoading: loadingStores, onComplete: completeStores});
        getCloseMSBtn();
	}
    
	function getCloseSIBtn() {

		var t = 0;
		// to find the element after the ajax call
		if(document.getElementById('si-close')) {

 			var closeSIBtn = document.getElementById('si-close');
 			// try again due to the ajax call is still loading the data
 			setTimeout('getCloseSIBtn()',100);
 			closeSIBtn.onclick = closeLayer

 		}
 		// if not there try again in 250 ms
 		else {
 			t = t + 250;
 			setTimeout('getCloseSIBtn()',t);
 		}
	}

	function showListOfStores() {

		var storeListDiv = this.parentNode.getElementsByTagName('div')[0];
		storeListDiv.style.display = "block";

		if(document.getElementById('store-list')) {
			var storeLink = document.getElementById('store-name');
			var myStoreDiv = document.getElementById('store-info');
	    	myStoreDiv.style.display = "block";
	    }

    	var maxClosestStores = 3;
    	var url = urlFindThreeClosestStores;
        var pars = 'city=' + storeCity + '&' + 'state=' + storeState + '&' + 'maxClosestStores=' + maxClosestStores;

       	new Ajax.Request(url, {
		  method: 'get',
		  parameters: pars,
		  onSuccess: function(transport) {
		    	storeListDiv.innerHTML = transport.responseText;
		  }
		});

    	getCloseMSBtn();
		return false;
	}

	function getCloseMSBtn() {

		var t = 0;
		// to find the element after the ajax call
		if(document.getElementById('ms-close')) {
 			var closeMSBtn = document.getElementById('ms-close');
 			// try again due to the ajax call is still loading the data
 			setTimeout('getCloseMSBtn()',100);
 			closeMSBtn.onclick = closeLayer;
 		}
 		// if not there try again in 250 ms
 		else {
 			t = t + 250
 			setTimeout('getCloseMSBtn()',t);
 		}
	}

	function closeLayer() {

		if(document.getElementById('store-info')) {
			var myStoreDiv = document.getElementById('store-info');
			var storeListDiv = document.getElementById('store-list');
			myStoreDiv.style.display = "none";
			storeListDiv.style.display = "none";
		}
		if(document.getElementById('store-list2')) {

			var storeListDiv2 = document.getElementById('store-list2');
			storeListDiv2.style.display = "none";
		}
	}

	function showMyStore() {
        dcsMultiTrack('WT.cg_n','Store Locator','WT.cg_s','','WT.ti','Store Locator Popup ZIP Header','DCS.dcsuri','/storelocator/store_locator_popup_zip_header.jsp');
		var zipCodeField = document.getElementsByName('zipCode')[0];
		var storeLayer = document.getElementById('store-info-layer');
		var dataArea = document.getElementById('data-layer');
		var zipCode = zipCodeField.value;
        var pars = "zipCode=" + zipCode + "&popup=true";
        var url = urlFindStoresByZip;
		storeLayer.className = "waiting";
		var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
		getInputs();
		getCloseBtnLayer();
		return false;
	}
	function forwardMyStore() {
        // Grab the zip code value from the input box and create a param string - set the new URL to the window.location.  Fab huh?
		var zipCodeField = document.getElementsByName('zipCode')[0];
        var zipCode = zipCodeField.value;
        var pars = "zipCode=" + zipCode;
        var url = urlForwardMyStore;
        window.location.href =  url + "?" + pars;
        return false;
	}

    // fix issue with FF input boxes being disabled in my store popup box
	function getInputs() {
		var z = 0;
		// to find the element after the ajax call
		if(document.getElementById('zip-field')) {
			var storeArea = document.getElementById('data-layer');
			var theInputs = storeArea.getElementsByTagName('input');
			var allInputs = theInputs.length;
			for(var i = 0; i < allInputs; i++) {
				if(theInputs[i].type == 'text') {
					theInputs[i].onclick = activatedInput;
				}
			}
		}
		else {
			z = z + 250;
			setTimeout('getInputs()', z);
		}
	}

	function activatedInput() {

		this.focus();
	}

	function getCloseBtnLayer() {

		var t = 0;
		// to find the element after the ajax call
		if(document.getElementById('close-win')) {
 			var closeBtn = document.getElementById('close-win');
 			var closeBtn2 = document.getElementById('close-win-two');
 			// try again due to the ajax call is still loading the data
 			setTimeout('getCloseBtnLayer()',100);
 			closeBtn.onclick = closeStoreLayer;
 			closeBtn2.onclick = closeStoreLayer;
 		}
 		// if not there try again in 250 ms
 		else {
 			t = t + 250;
 			setTimeout('getCloseBtnLayer()',t);
 		}
	}

	function closeStoreLayer() {
		var storeLayer = document.getElementById('store-info-layer');
		storeLayer.className = "hide";
		return false;
	}

	function showSelectDifferentStore() {
		var storeLayer = document.getElementById('store-info-layer');
		var dataArea = document.getElementById('data-layer');
		dataArea.innerHTML = '';
		var zipCode = storeZip;
        var pars = "zipCode=" + zipCode + "&popup=true";
        var url = urlFindStoresByZip;
		storeLayer.className = "waiting";
		var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
        closeLayer();
        getCloseBtnLayer();
	}
	
	function showStoreResultsPanelZip() {
        dcsMultiTrack('WT.cg_n','Store Locator','WT.cg_s','','WT.ti','Store Locator Popup ZIP Header','DCS.dcsuri','/storelocator/store_locator_popup_zip_header.jsp');
		var zipCodeField = document.getElementsByName('ajaxzipCode')[0];
		var storeLayer = document.getElementById('store-info-layer');
		var dataArea = document.getElementById('data-layer');
		dataArea.innerHTML = '';

		var zipCode = zipCodeField.value;
        var pars = "zipCode=" + zipCode + "&popup=true&header=true";
        var url = urlFindStoresByZip;
		storeLayer.className = "waiting";
		var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
		getCloseBtnLayer();
	}

    function showStoreResultsPanelState(oMenu) {
        dcsMultiTrack('WT.cg_n','Store Locator','WT.cg_s','','WT.ti','Store Locator Popup by City and State','DCS.dcsuri','/storelocator/store_locator_popup_citystate.jsp');
        if(oMenu.selectedIndex>0){
            var stateCity = oMenu.options[oMenu.selectedIndex].text.split(" - ");

            document.citySearch.city.value = stateCity[1];
            document.citySearch.state.value = stateCity[0];
            var storeLayer = document.getElementById('store-info-layer');
            var dataArea = document.getElementById('data-layer');
          	dataArea.innerHTML = '';

          	// needs to be set to stop window from dragging when selecting an item from the drop down
          	dragObject  = null;

            var pars = "city=" + stateCity[1] + "&state=" + stateCity[0] + "&popup=true";
            var url = urlFindStoresByCityState;
            storeLayer.className = "waiting";
            var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
			getCloseBtnLayer();
        }
    }

    function showStoreInPopup(storeParams) {
        var pars = storeParams;
        var storeLayer = document.getElementById('store-info-layer');
        var dataArea = document.getElementById('data-layer');
        dataArea.innerHTML = '';
        var url = urlStore;
        storeLayer.className = "waiting";
        var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
        getCloseBtnLayer();
	}

    function showStoreRouteInPopup(frm) {
        var pars = Form.serialize(frm) + '&popup=true';
        var storeLayer = document.getElementById('store-info-layer');
        var dataArea = document.getElementById('data-layer');
        dataArea.innerHTML = '';
        var url = urlGetroute;
        storeLayer.className = "waiting";
        var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
        getCloseBtnLayer();
	}

    function findStoresByZipPopup(frm) {
        dcsMultiTrack('WT.cg_n','Store Locator','WT.cg_s','','WT.ti','Store Locator Popup ZIP','DCS.dcsuri','/storelocator/store_locator_popup_zip.jsp');
        var pars = Form.serialize(frm) + '&popup=true';
        var storeLayer = document.getElementById('store-info-layer');
        var dataArea = document.getElementById('data-layer');
        dataArea.innerHTML = '';
        var url = urlFindStoresByZip;
        storeLayer.className = "waiting";
        var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
        getCloseBtnLayer();
	}

    function findStoresByStatePopup(frm) {
        dcsMultiTrack('WT.cg_n','Store Locator','WT.cg_s','','WT.ti','Store Locator Popup by City and State','DCS.dcsuri','/storelocator/store_locator_popup_citystate.jsp');
        // set parms - popup param is set in form
        var pars = Form.serialize(frm);
        var storeLayer = document.getElementById('store-info-layer');
        var dataArea = document.getElementById('data-layer');
        dataArea.innerHTML = '';

        var url = urlFindStoresByCityState;
        storeLayer.className = "waiting";
        var myAjax = new Ajax.Updater(dataArea, url, {method: 'post', parameters: pars, onLoading: loadingStoreInfoLayer, onComplete: completeStoreInfoLayer});
        getCloseBtnLayer();
    }

/*
 * End of ajax_fn, beginning of utility_javascript
 */

//document.documentElement.onclick = function(evt) {

	//var evt = window.event;
	//alert(evt.srcElement.id);

//}

// helper utility for loading function with page load
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  }
  else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
// add the function you want to load with the page within addLoadEvent
addLoadEvent(function() {

	hideShow();

});

// show/hide function for promo code on basket
function hideShow() {

	// check to see if the element is on the page
	if(document.getElementById("show-code-link")) {

		// get the link on the page
		var codeLink = document.getElementById("show-code-link");
		codeLink.onclick = makeItHappen;
	}

	function makeItHappen() {

		// get the area
		var codeArea = document.getElementById("enter-code-area");

		// determine wheather to show or hide
		if(codeArea.getAttribute("class") == "hide" || codeArea.getAttribute("className") == "hide") {

			codeArea.className = "";
            $("show-code-link").style.textDecoration = "none";
        }
		else {
			codeArea.className = "hide";
            $("show-code-link").style.textDecoration = "underline";
        }
		return false;
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function setCookie(sName,sValue,nDays){
    var dToday = new Date();
    var dExpire = new Date();
    if (nDays==null || nDays==0) nDays=1;
    dExpire.setTime(dToday.getTime() + 3600000*24*nDays);
    document.cookie = sName + "=" + escape(sValue) + ";path="+siteContextFromWebUtil+";expires=" + dExpire.toGMTString();
}

function getCookie(sName){
  var oCookie = document.cookie.split("; ");
  for (var i=0; i < oCookie.length; i++)
  {
    var keyValue = oCookie[i].split("=");
    if (sName == keyValue[0])
      return unescape(keyValue[1]);
  }
  return null;
}

function printWindow() {
	if (window.print) {
		window.print();
	} else {
		alert("Please use [ File >> Print ] in your toolbar to print this page.");
	}
}

function setActiveStyleSheet(title) {
   var i, a, main;
   for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
     if(a.getAttribute("rel").indexOf("style") != -1
        && a.getAttribute("title")) {
       a.disabled = true;
       if(a.getAttribute("title") == title) a.disabled = false;
     }
   }
}

function printList() {
    setActiveStyleSheet("layer");
    if (window.print) {
		window.print();
	} else {
		alert("Please use [ File >> Print ] in your toolbar to print this page.");
	}
}

function swapImg(imgId,imgName) {
	objId = document.getElementById(imgId);
	objId.src = objId.src.substr(0,objId.src.lastIndexOf("/")) + "/" + imgName;
	return false;
}

function showHideCompare(objState) {
	if (objState == "show") {
		document.getElementById("compare-layer-items").style.visibility = "visible";
	} else {
		document.getElementById("compare-layer-items").style.visibility = "hidden";
	}
}

function swapDivDisplay(objIdShow,objIdHide) {
	if (document.getElementById(objIdShow) != null) {
		document.getElementById(objIdShow).style.display = "block";
	}
	if (document.getElementById(objIdHide) != null) {
		document.getElementById(objIdHide).style.display = "none";
	}
}

function swapDivDisplay(objIdShow,objIdHide,objIdHide2) {

	if (document.getElementById(objIdShow) != null) {
		document.getElementById(objIdShow).style.display = "block";
	}
	if (document.getElementById(objIdHide) != null) {
		document.getElementById(objIdHide).style.display = "none";
	}
	if (document.getElementById(objIdHide2) != null) {
		document.getElementById(objIdHide2).style.display = "none";
	}
}

function viewAllViewLess(objId,objHrefId,objSpanId) {
	if (document.getElementById(objId).style.display != "block") {
		hideElementsByClassName();
		document.getElementById(objId).style.display = "block";
		document.getElementById(objHrefId).innerHTML = "View Fewer";
		document.getElementById(objSpanId).style.display = "none";
	} else {
		hideElementsByClassName();
	}
}

function hideElementsByClassName() {
	var arrElementsUL = document.getElementsByTagName("ul");
	var arrElementsA = document.getElementsByTagName("a");
	var arrElementsSPAN = document.getElementsByTagName("span")
	for(var i = 0; i < arrElementsUL.length; i++) {
		if ((arrElementsUL[i]).className == "nav-landing-more") {
			(arrElementsUL[i]).style.display = "none";
		}
	}
	for(var i = 0; i < arrElementsA.length; i++) {
		if ((arrElementsA[i]).className == "viewall-subcats") {
			(arrElementsA[i]).innerHTML = "View All";
		}
	}
	for(var i = 0; i < arrElementsSPAN.length; i++) {
		if ((arrElementsSPAN[i]).className == "number-of-subcats") {
			(arrElementsSPAN[i]).style.display = "inline";
		}
	}
}

function enlargeSwatch(productNumber) {
	if ($("swatch-large-image").src.indexOf("162") != -1) {
		$("view-larger1").innerHTML = "View Smaller";
		$("view-larger2").innerHTML = "View Smaller";
		//$("swatch-large-image").src = siteContextFromWebUtil+"assets/product_images/650x650/" + productNumber + "_650x650.jpg";
		$("swatch-large-image").src = "http://s7d4.scene7.com/is/image/LumberLiquidators/" + productNumber.toLowerCase() + "_sw?$650x650$";
		$("swatch-large-image").style.width = "650px";
		$("mysamples").style.display = "none";
	} else {
		$("view-larger1").innerHTML = "View Larger";
		$("view-larger2").innerHTML = "View Larger";
        //$("swatch-large-image").src = siteContextFromWebUtil+"assets/product_images/162x650/" + productNumber + "_162x650.jpg";
        $("swatch-large-image").src = "http://s7d4.scene7.com/is/image/LumberLiquidators/" + productNumber.toLowerCase() + "_sw?$162x650$";
        $("swatch-large-image").style.width = "162px";
		$("mysamples").style.display = "block";
	}
}

function displayDefaultTab(tabListString) {
	var imgArray = tabListString.split("|");
	var imgTab = document.getElementById(imgArray[0]);
	var imgPath = imgTab.src.substr(0,imgTab.src.lastIndexOf("/")) + "/";
	document.getElementById(imgArray[0]).src = imgPath + imgArray[0] + "_over.gif";
	document.getElementById(imgArray[0] + "_l").style.display = "block";
}

/*
 * toggleTabs is used in product_swatch.jsp
 */
function toggleTabs(imgName,swatchStatus) {

	var imgTab = null;
	if (swatchStatus == true) {
      var imgArray = new Array("tab_swatch","tab_acc_trim_side");
	}
	for (i = 0; i < imgArray.length; i++) {
		if (!document.getElementById(imgArray[i])) {
			imgTab = null;
		} else {
			imgTab = document.getElementById(imgArray[i]);
			var imgPath = imgTab.src.substr(0,imgTab.src.lastIndexOf('/')) + '/';
			imgTab.src = imgPath + imgArray[i] + '.gif';
			imgTab = document.getElementById(imgArray[i]);
			imgTab.style.display = "inline";
		}
	}
	document.getElementById(imgName).src = imgPath + imgName + '_over.gif';
	if (imgTab != null) {
		document.getElementById(imgName).style.display = "inline";
	}
}
function fakeEvent(clientX, clientY, screenX, screenY, pageX, pageY, fixX, fixY, parentDiv) {
    this.clientX = clientX;
    this.clientY = clientY;
    this.screenX = screenX;
    this.screenY = screenY;
    this.pageX = pageX;
    this.pageY = pageY;
    this.fixX = fixX;
    this.fixY = fixY;
    this.parentDiv = parentDiv;
}

function startShowTimer(frm, ev, parentDiv) {
      var f = function() { showProductInfo(arguments.callee.frm, arguments.callee.ev,parentDiv) };
      var fakeEv = new fakeEvent(ev.clientX, ev.clientY,ev.screenX,ev.screenY,ev.pageX,ev.pageY,parentDiv);
      f.frm = frm;
      f.ev = fakeEv;
      f.parentDiv = parentDiv;
      showTimer = setTimeout(f, 1000);
}

function startHideTimer(frm, ev) {
      clearTimeout(showTimer);
      var f = function() { hideProductInfo(arguments.callee.frm, arguments.callee.ev) };
      var fakeEv = new fakeEvent(ev.clientX, ev.clientY,ev.screenX,ev.screenY,ev.pageX,ev.pageY);
      f.frm = frm;
      f.ev = fakeEv;
      hideTimer = setTimeout(f, 1000);
}

function cancelHide() {
    clearTimeout(hideTimer);
}

function showProductInfo(frm, evt, parentDiv) {
    if (frm.accType.value) {
        showInfoPopup(frm.accType.value);
        productInfoPopup(evt,'show', parentDiv);
    }
    showTimer = 0;
}

function hideProductInfo(frm, evt) {

    productInfoPopup(evt,'hide');
    showHideProductInfo('hide');
    hideTimer = 0;
}

function visibleProductInfo() {
            showHideProductInfo('show');
}

function showHideProductInfo(objState) {

	if (objState == "show") {
		document.getElementById("product-info-layer").style.visibility = "visible";
	} else {
		document.getElementById("product-info-layer").style.visibility = "hidden";
	}
}

function findLeft(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft

		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
		}
	}
	return curleft;
}

function findTop(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curtop += obj.offsetTop
		}
	}
	return curtop;
}

function productInfoPopup(e,objState, parentDiv) {

    objPopup = document.getElementById("product-info-layer");
    objDiv = parentDiv;
    posX = null;
    posY = null;
    viewportX = null;
    getDocMode = true;
    leftPos = null;
    topPos = null;

    if (self.innerHeight) { //other browsers
		viewportX = self.innerWidth + self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) { //explorer 6 standards-compliant
		viewportX = document.documentElement.clientWidth + document.documentElement.scrollLeft;
	} else if (document.body) { //explorer 5.5
		getDocMode = false;
		viewportX = document.body.clientWidth + document.body.scrollLeft;
	}

	if (objState == "show") {
		leftPos = findLeft(objDiv);
		topPos = findTop(objDiv) -3;
        posX = leftPos;
        posY = topPos;


        if (posX < leftPos + Math.round((objDiv.offsetWidth)/2)){
			posX = leftPos - 3 - objPopup.offsetWidth ;
			if (posX < 0 ){
				posX = leftPos - 100 + objDiv.offsetWidth ;
			}
		} else {
			posX = leftPos + objDiv.offsetWidth + 3;
			if ( posX + objPopup.offsetWidth > viewportX ){
				posX = leftPos - 3 - objPopup.offsetWidth;
			}
		}

        objPopup.style.left = posX  + "px";
        objPopup.style.top =  topPos + "px";
        //objPopup.style.visibility = "visible";
	} else {
		//objPopup.style.visibility = "hidden";
	}
	return false;
}

function popCenterDiv(objId,objState) {
	objId = document.getElementById(objId);
	var posY = 0;
	var posX = 0;
	viewportX = null;
	viewportHeightY = null;
	viewportOffsetY = null;
	var objWidth = objId.offsetWidth;
	var objHeight = objId.offsetHeight;
	getDocMode = true;

	if (self.innerHeight) { //other browsers
		viewportX = self.innerWidth + self.pageXOffset;
		viewportHeightY = self.innerHeight
		viewportOffsetY = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) { //explorer 6 standards-compliant
		viewportX = document.documentElement.clientWidth + document.documentElement.scrollLeft;
		viewportHeightY = document.documentElement.clientHeight
		viewportOffsetY = document.documentElement.scrollTop;
	} else if (document.body) { //explorer 5.5
		getDocMode = false;
		viewportX = document.body.clientWidth + document.body.scrollLeft;
		viewportHeightY = document.body.clientHeight
		viewportOffsetY = document.body.scrollTop;
	}

	posY = Math.round(viewportHeightY/2 + viewportOffsetY) - Math.round(objHeight/2);
	posX = Math.round(viewportX/2) - Math.round(objWidth/2);

	if (objState == "show") {
		objId.style.top = posY + "px";
		objId.style.left = posX + "px";
		objId.style.visibility = "visible";
	} else if (objState == "hide") {
		objId.style.top = posY + "px";
		objId.style.left = posX + "px";
		objId.style.visibility = "hidden";
	}
}

function popCenterDivAbsolute(objId,objState,posX,posY) {

	objId = document.getElementById(objId);

	if (objState == "show") {
		objId.style.top = posY + "px";
		objId.style.left = posX + "px";
		objId.style.visibility = "visible";
	} else if (objState == "hide") {
		objId.style.top = posY + "px";
		objId.style.left = posX + "px";
		objId.style.visibility = "hidden";
	}
}

function comparePopup(objLocation, objState) {
    objPopup = document.getElementById("compare-layer");
    compListSize = document.getElementById("compare-list-size").innerHTML;

    var popupLocation = objLocation;
    if(popupLocation == null){
        popupLocation = objPopup;
    }
    posX = findPosX(popupLocation);
    posY = findPosY(popupLocation);
 
    viewportX = null;
    getDocMode = true;

	if (self.innerHeight) { //other browsers
		viewportX = self.innerWidth + self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) { //explorer 6 standards-compliant
		viewportX = document.documentElement.clientWidth + document.documentElement.scrollLeft;
	} else if (document.body) { //explorer 5.5
		getDocMode = false;
		viewportX = document.body.clientWidth + document.body.scrollLeft;
	}

    if (objState == "show" && compListSize > 1) {
        if(popupLocation != objPopup){
            if (posX + objPopup.offsetWidth > viewportX) {
             objPopup.style.left = posX - objPopup.offsetWidth + "px";
            } else {
                objPopup.style.left = posX + "px";
            }
            objPopup.style.top = posY - objPopup.offsetHeight + "px";
        }
        objPopup.style.visibility = "visible";
	} else {
		objPopup.style.visibility = "hidden";
	}
	return false;
}

function findPosX(obj){
    var curleft = 0;
    if(obj.offsetParent)
        while(1)
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj){
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}

function goToLink(address) {
	var linkURL = address.options[address.selectedIndex].value;
	window.top.location.href = linkURL;
	address.selectedIndex=0;
}

/*
 * This function launches a new web browser window to a specified width, height and features.
 * Features string is a comma separated window's feature needed for this new window. For Instance
 * If a new window needs a toolbar the feature string must be "toolbar" like needs scroll bar and
 * and toolbar then it must be "toolbar,scrollbar". Note that the order of the feature is not required.
 * Also it's case insensitive. Therefore, "scrollbar,toolbar" is identical to "Toolbar,ScrollBar".
 *
 * If the features string is ommitted then all the features are turned off. To turn all the features on
 * use the word "all" for features instead of specifying each feature.
 */

function openWindow(address, width, height,features)
{
	/* Find out what features need to be enable
	 *
   */
	if(features)
		features = features.toLowerCase();
	else
		features = "";

	var toolbar = (features == "all" ? 1 : 0);
	var menubar = (features == "all" ? 1 : 0);
	var location = (features == "all" ? 1 : 0);
	var directories = (features == "all" ? 1 : 0);
	var status = (features == "all" ? 1 : 0);
	var scrollbars = (features == "all" ? 1 : 0);
	var resizable = (features == "all" ? 1 : 0);

	if(features != "all")
	{
		//split features
		var feature = features.split(",");
		for(i = 0; i < feature.length; i++)
		{
		 	if(feature[i] == "toolbar")
			   toolbar = 1;
			else if(feature[i] == "menubar")
			   menubar = 1;
			else if(feature[i] == "location")
			   location = 1;
			else if(feature[i] == "directories")
			   directories = 1;
			else if(feature[i] == "status")
			   status = 1;
			else if(feature[i] == "scrollbars")
			   scrollbars = 1;
			else if(feature[i] == "resizable")
			   resizable = 1;
		}

	}
	features = "toolbar=" + toolbar + ",";
	features += "menubar=" + menubar + ",";
	features += "location=" + location + ",";
	features += "directories=" + directories + ",";
	features += "status=" + status + ",";
	features += "scrollbars=" + scrollbars + ",";
	features += "resizable=" + resizable;

	var newWindow = window.open(address, 'Popup_Window', 'width=' + width + ',height=' + height + ',"' + features + '"');
	newWindow.focus();
}

function confirmWindow(url, text) {

	if (confirm(text)) {
		window.go = url;
		window.location = url;
	}
}

/*
 * toggleTabs is used in product_body.jsp for cross-sells and email a friend tabs
 */
function toggleCrossSellTabs(imgName,tabListString) {
	var imgTab = null;
	var imgArray = tabListString.split("|");

	for (i = 0; i < imgArray.length; i++) {
		if (!document.getElementById(imgArray[i])) {
			imgTab = null;
		} else {
			imgTab = document.getElementById(imgArray[i]);
			var imgPath = imgTab.src.substr(0,imgTab.src.lastIndexOf('/')) + '/';
			imgTab.src = imgPath + imgArray[i] + '.gif';
			imgTab = document.getElementById(imgArray[i] + "_l");
			imgTab.style.display = "none";
		}
	}

	document.getElementById(imgName).src = imgPath + imgName + "_over.gif";
	if (imgTab != null) {
		if(imgName=="tab_acc_trim"){
			document.getElementById("tab_prod_desc_l").style.display = "block";
			document.getElementById("prod_desc_text").style.display = "none";
		}else{
			document.getElementById(imgName + "_l").style.display = "block";
			document.getElementById("prod_desc_text").style.display = "block";
		}
	}
}

/*
 * setAddTo() and calTotal() are used in product_details_panel.jsp
 */
function setAddTo(addToType) {
	document.productForm.addTo.value = addToType;

	if (addToType == 2) {
		if (document.productForm.quantity.value=="0") {
			document.productForm.quantity.value="1";
		}
		document.productForm.action = urlAddItem;
		document.productForm.submit();
	}
}

function calTotal(sellingPkgQty,unitPrice,isFlooring,waste,isLinearFt,isCanned,discountPrice,discountThreshold) {
	var totalCost;
	var qty;

	if (isFlooring || isLinearFt || isCanned ) {
		if (sellingPkgQty > 0) {
			var yourSFT = document.productForm.your_sft.value;
            yourSFT = yourSFT * (1+(waste/100)) ;
            qty = Math.ceil(yourSFT / sellingPkgQty);
			var totalSFT = Math.round(qty * sellingPkgQty * 100) / 100;

            if (isFlooring && (totalSFT >= discountThreshold) && (discountPrice < unitPrice) && (discountPrice > 0)){
                totalCost = Math.round(totalSFT * discountPrice * 100) / 100;
            }else{
                totalCost = Math.round(totalSFT * unitPrice * 100) / 100;
            }
			document.productForm.quantity.value = qty;
			if (isFlooring) {
				document.getElementById("box_qty").innerHTML = qty + "&nbsp;boxes";
				document.getElementById("total_sft").innerHTML = totalSFT + "&nbsp;sq.ft.";
			} else if( isLinearFt) {
				document.getElementById("box_qty").innerHTML = qty + "&nbsp;units";
				document.getElementById("total_sft").innerHTML = totalSFT + "&nbsp;linear ft.";
			} else if(isCanned){
                document.getElementById("box_qty").innerHTML = qty + "&nbsp;cans";
			    document.getElementById("total_sft").innerHTML = totalSFT + "&nbsp;sq.ft.";
            }
		}else {
			totalCost = 0;
			document.productForm.your_sft.value = 0;
		}
	} else {
		qty = document.productForm.quantity.value;
		totalCost = Math.round(qty * sellingPkgQty * unitPrice * 100) / 100;
	}
	document.getElementById("total_cost").innerHTML = '$' + totalCost.toFixed(2);
}

/*
 * setBasketAddTo() is used in basket_body.jsp
 */
function setBasketAddTo(addToType) {
	document.itemQuantitiesForm.addTo.value = addToType;
	document.itemQuantitiesForm.submit();
}

/*
 * checkout_calTotal is used in checkout_pop.jsp
 */

function checkout_calTotal(index,sellingPkgQty,unitPrice) {
	var totalCost;
	var qty;

    if (sellingPkgQty > 0) {
		var yourLFT = eval("document.checkoutForm.lft" + index + ".value");
        qty = Math.ceil(yourLFT / sellingPkgQty);
        var totalLFT = Math.round(qty * sellingPkgQty * 100) / 100;
        totalCost = Math.round(totalLFT * unitPrice * 100) / 100;
	    document.checkoutForm.quantity[index].value = qty;
	}else {
		totalCost = 0;
		document.checkoutForm.quantity[index].value = 0;
	}
}

function checkOutPopup(objState) {

    objPopup = document.getElementById("checkout-layer");

	if (objState == "show") {
        document.getElementById("header").style.opacity = " .3";
	    document.getElementById("header").style.filter = "alpha(opacity=30)";
        document.getElementById("breadcrumb").style.opacity = " .3";
	    document.getElementById("breadcrumb").style.filter = "alpha(opacity=30)";
        document.getElementById("product-beauty").style.opacity = " .3";
	    document.getElementById("product-beauty").style.filter = "alpha(opacity=30)";
        document.getElementById("product-tabs").style.opacity = " .3";
	    document.getElementById("product-tabs").style.filter = "alpha(opacity=30)";
        document.getElementById("product-swatch").style.opacity = " .3";
	    document.getElementById("product-swatch").style.filter = "alpha(opacity=30)";
        objPopup.style.visibility = "visible";
    } else {
        document.getElementById("header").style.opacity = "1";
	    document.getElementById("header").style.filter = "alpha(opacity=100)";
        document.getElementById("breadcrumb").style.opacity = "1";
	    document.getElementById("breadcrumb").style.filter = "alpha(opacity=100)";
        document.getElementById("product-beauty").style.opacity = "1";
	    document.getElementById("product-beauty").style.filter = "alpha(opacity=100)";
        document.getElementById("product-tabs").style.opacity = " 1";
	    document.getElementById("product-tabs").style.filter = "alpha(opacity=100)";
        document.getElementById("product-swatch").style.opacity = "1";
	    document.getElementById("product-swatch").style.filter = "alpha(opacity=100)";
        objPopup.style.visibility = "hidden";
    }
}

/*
 * addStoreForProduct() is used in product_details_panel.jsp
 */
function addStoreForProduct(oSelect) {
	if(oSelect.value != null) {
		document.productForm.storeId.value = oSelect.value;
	}else {
		document.productForm.storeId.value = 0;
	}
}

/*
 * toggleCustomerType() is used in register_body.jsp
 */
function toggleCustomerType(oForm) {
	if (oForm.emailPreference.checked) {
		$("frmcustomerType1").style.display = 'block';
		$("lblcustomerType1").style.display = 'inline';
      $("frmcustomerType2").style.display = 'block';
    	$("lblcustomerType2").style.display = 'inline';
      $("frmcustomerType3").style.display = 'block';
      $("lblcustomerType3").style.display = 'inline';
	} else {
       $("frmcustomerType1").style.display = 'none';
       $("lblcustomerType1").style.display = 'none';
		  $("frmcustomerType2").style.display = 'none';
       $("lblcustomerType2").style.display = 'none';
		 $("frmcustomerType3").style.display = 'none';
       $("lblcustomerType3").style.display = 'none';
	}
}

/*
 * toggleInternationalAddress() is used in shipping_body.jsp & billing_body.jsp
 */
function toggleInternationalAddress(oForm) {
	if (oForm.internationalAddress.checked) {
		jQuery("#lblState").hide();
		jQuery("#frmObjState").hide();
		jQuery("#lblZip").hide();
		jQuery("#errorZip").hide();
		jQuery("#lblIntState").show();
		jQuery("#frmObjIntState").show();
		jQuery("#lblCountry").show();
		jQuery("#frmObjCountry").show();
		jQuery("#lblIntZip").show();
		jQuery("#errorIntZip").show();
		oForm.zipCode.maxLength = '15';
		if (document.addressBookForm) {
			document.addressBookForm.userAddressIndex.disabled = true;
		}
	} else {
		jQuery("#lblState").show();
		jQuery("#frmObjState").show();
		jQuery("#lblZip").show();
		jQuery("#errorZip").show();
		jQuery("#lblIntState").hide();
		jQuery("#frmObjIntState").hide();
		//jQuery("#lblCountry").hide();
		//jQuery("#frmObjCountry").hide();
		jQuery("#lblIntZip").hide();
		jQuery("#errorIntZip").hide();
		oForm.zipCode.maxLength = '10';
		//if (oForm.country) {
		//	oForm.country.value = '';
		//}
		if (oForm.zipCode.value.length > 10) {
			var tmpZip = oForm.zipCode.value;
			oForm.zipCode.value = tmpZip.substring(0,10);
		}
		if (document.addressBookForm) {
			document.addressBookForm.userAddressIndex.disabled = false;
		}
	}
}

/*
 * forgotPassword() is used in shipping_body.jsp
 */
function forgotPassword(){
	if(confirm("You can reset your password by visiting our Forgot Password page.  Go there now?")) {
		window.location.href = '../user/forgot_password.jsp';
	}
}

/*
 * setStoreValues() is used in delivery_body.jsp
 */

function setStoreValues(storeId) {
	if (storeId==null) {
		document.deliveryForm.pickupStoreId.value = document.deliveryForm.storeMenu.options[document.deliveryForm.storeMenu.selectedIndex].value;
	} else {
		document.deliveryForm.pickupStoreId.value = storeId;
	}
}

/*
 * toggleDivs is used in floor_finder_body.jsp
 */
function toggleDivs(imgName,tabListString) {
	var imgArray = tabListString.split("|");

	for (i = 0; i < imgArray.length; i++) {
		imgTab = document.getElementById(imgArray[i]);
		var imgPath = imgTab.src.substr(0,imgTab.src.lastIndexOf('/')) + '/';
		imgTab.src = imgPath + imgArray[i] + '-off.gif';
		imgTab = document.getElementById(imgArray[i] + "-panel");
		imgTab.style.display = "none";
	}

	document.getElementById(imgName).src = imgPath + imgName + "-on.gif";
	document.getElementById(imgName + "-panel").style.display = "block";
}

/*
 * toggleDivs is used in floor_finder_body.jsp
 */
function toggleDivsNoResults(imgName,tabString) {

		imgTab = document.getElementById(tabString);
		var imgPath = imgTab.src.substr(0,imgTab.src.lastIndexOf('/')) + '/';
		imgTab.src = imgPath + tabString + '-off.gif';
		imgTab = document.getElementById(tabString + "-panel");
		imgTab.style.display = "none";


	document.getElementById(imgName).src = imgPath + imgName + "-on.gif";
	document.getElementById(imgName + "-panel").style.display = "block";
}

/*
 * Used to bookmark the page
 */
function addToFavorites(params, pagename)
{
    if (window.external)
    {
        window.external.AddFavorite(params, pagename);
    }else
    {
        document.location = params;
        alert("Your Browser does not support this function. Please bookmark the page manually.");
    }
}

function showSingleChild(parentId, childClassName, childId){
    var oParent = document.getElementById(parentId);
    var oParentColl = oParent.getElementsByTagName('DIV') || oParent.all;
    for(var i=0;i< oParentColl.length;i++){
        var oChild = oParentColl.item(i);
        if(oChild.className == childClassName){
            if(oChild.id == childId){
					if(oChild.style.display != "block") oChild.style.display = "block";
					else oChild.style.display = "none";
				} else {
					oChild.style.display = "none";
				}
        }
    }
}

function setCriteriaValues() {
    var step1 = document.floorFinderForm.floor_finder_step1;
    var step1_1 = document.floorFinderForm.floor_finder_step1_1;

    var step1Length = step1.length;
    var step1_1Length = step1_1.length;
    var criteriaValue = "";
    if(step1Length == undefined)
        if(step1.checked)
            criteriaValue = step1.value;
        else
            return "";

    for(var i = 0; i < step1Length; i++) {
        if(step1[i].checked) {
            criteriaValue = step1[i].value;
        }
    }

    if(step1_1Length == undefined)
        if(step1_1.checked)
            criteriaValue += step1_1.value;
        else
            return "";
    for(var i = 0; i < step1_1Length; i++) {
        if(step1_1[i].checked) {
            criteriaValue += step1_1[i].value;
        }
    }
    document.floorFinderForm.installationCriteria.value = criteriaValue;

    return "";
}

function swapClass(divToChange,oldClass,newClass) {
    var el = document.getElementById(divToChange)
    var className = el.className;
    el.className = className.replace(new RegExp(oldClass), newClass);

}

function changeClass(divToChange,newClass) {
    var el = document.getElementById(divToChange)
    var className = el.className;
    el.className = className.replace(new RegExp('.*'), newClass);

}

function clearText(e, stringToCheck) {
    if (stringToCheck == e.value) {
        e.value = "";
    }
}
function setStore(myStoreId) {
    updateMyStore("storeId=" + myStoreId);
    changeClass('home-store-finder', 'selected-store');
    if (selectedStore != null) selectedStore = true;
    return false;
}
function setStoreFromMapLayer(myStoreId) {
    updateMyStore("storeId=" + myStoreId);
    changeClass('home-store-finder', 'selected-store');
    hideStoreLayer();
    if (selectedStore != null) selectedStore = true;
    return false;
}
function setStoreFromProductList(myStoreId, productId) {
    updateMyStoreFromProductList("storeId=" + myStoreId + "&productId=" + productId);
    changeClass('home-store-finder', 'selected-store');
    if (selectedStore != null) selectedStore = true;
    return false;
}

function ajaxStoreSearch() {
    updateStorePanel(getStoreParams());

    return false;
}
function ajaxStoreSearch(avail, product) {
    updateStorePanel(getStoreParams(avail, product));
    return false;
}

function displayStoreInformationPanel(params) {
    changeClass('store-info-layer', 'loading');
    updateStoreInformationPanel(params);

}
function hideStoreLayer() {
    changeClass('store-info-layer', 'dead');
}
function displayStoreInformationPanelDirections() {
    changeClass('store-info-layer', 'loading');
    var params = Form.serialize('storeLayerDirections');
    updateStoreInformationPanelDirections(params);
    getpopupHead ();
    return false;
}

function getStoreParams() {
    return "zipCode=" + document.zipEntry.zipCode.value;
}
function getStoreParams(avail, product) {
    return "productId=" + product + "&showAvailability=" + avail + "&zipCode=" + document.zipEntry.zipCode.value;
}

function hasSelectedStore() {
    return selectedStore;
}

function closeStoreFinder() {
    oldStoreFinderClass = $("home-store-finder").className;
    if (hasSelectedStore()) {
        $("home-store-finder").className = "close-store-finder-selected";
    } else {
        $("home-store-finder").className = "close-store-finder";
    }
}

function openStoreFinder() {
    if (hasSelectedStore()) {
        $("home-store-finder").className = "search-stores-selected";
    } else {
        $("home-store-finder").className = "search-stores";
    }
    $("zipCode").value = "Enter a ZIP code";
}

function openFloorFinder() {
    var elementsToDisplay = getElementsByClass("ff-img-home");
    elementsToDisplay.each(function(node) { node.style.display = "block";} );
    showSingleChild('home-floor-finder','steps','floor-finder-step1');
    $("home-floor-finder").className = "open-floor-finder";
}

function closeFloorFinder() {
    var elementsToDisplay = getElementsByClass("ff-img-home");
    elementsToDisplay.each(function(node) { node.style.display = "none";} );
    showSingleChild('home-floor-finder','steps','floor-finder-begin');
    $("home-floor-finder").className = "close-floor-finder";

}

function checkPswd(p1,p2,msgFail,msgFormat,msgSuccess){
    var oMsgFail = document.getElementById(msgFail)
	 var oMsgFormat = document.getElementById(msgFormat)
    var oMsgSuccess = document.getElementById(msgSuccess)
    if(p1 != "" || p2 != ""){
        if(p1 == p2){
		  		if (p1.length < 6 || p1.length > 15) {
					oMsgFail.style.display = 'none';
					oMsgFormat.style.display = 'block';
            	oMsgSuccess.style.display = 'none';
				} else {
            	oMsgFail.style.display = 'none';
					oMsgFormat.style.display = 'none';
            	oMsgSuccess.style.display = 'block';
				}
        }
        else{
		  		oMsgFail.style.display = 'block';
		  		oMsgFormat.style.display = 'none';
            oMsgSuccess.style.display = 'none';
        }
    }
}

function toggleCompareBox(prodId){
	var cBoxName = "checkbox_" + prodId;
	if($(cBoxName)){
		var oCb = $(cBoxName);
		if(oCb.src.indexOf("checkbox_empty") > 0) oCb.src = oCb.src.substr(0,oCb.src.lastIndexOf("/")) + "/checkbox.gif";
		else oCb.src = oCb.src.substr(0,oCb.src.lastIndexOf("/")) + "/checkbox_empty.gif";
	}
}

function findStores(state){
	document.stateSearch.state.value = state;
    if(!document.stateSearch.popup){
        document.stateSearch.submit();
    }else{
        findStoresByStatePopup(document.stateSearch);
    }
}

function findStorebyCity(oMenu){
	if(oMenu.selectedIndex>0){
		var stateCity = oMenu.options[oMenu.selectedIndex].text.split(" - ");
		document.citySearch.city.value = stateCity[1];
		document.citySearch.state.value = stateCity[0];
		document.citySearch.submit();
	}
}

function showInstructions() {
	var instructionalHtml = '';
	instructionalHtml = '<span class="important"><b>You must accept the conditions in the above policy and click<br />';
	instructionalHtml += 'the "Submit Your Order Now" button to complete this order.</b></span><br /><br />';
	instructionalHtml += 'If you have a question about your order, please call: 1-800-366-4204';
	document.getElementById("instructional_text").innerHTML = instructionalHtml;
}

function displayStoreInformationPanelDirections(storeZip) {
    changeClass('store-info-layer', 'loading');
    var params = 'zipCode=' + storeZip;
    updateStoreInformationPanelDirections(params);
    //return false;
}
function changeClass(divToChange,newClass) {
    var el = document.getElementById(divToChange)
    var className = el.className;
    el.className = className.replace(new RegExp('.*'), newClass);

}
function hideStoreLayer() {
    changeClass('store-info-layer', 'dead');
}
function submitProductSetMyStoreForm() {
    document.productSetMyStoreForm.zipCode.value = document.productForm.myStoreZip.value;
    document.productSetMyStoreForm.submit();
}

function deleteMboxCookieToPreventCanadaContentOnMainPage(){
	setCookie("mbox","",0);
	document.cookie = "mbox" +
	'=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}

function showCanadaFirstVisitPopup() {
	var visitCanadaSite = getCookie("visitCanadaSite");
	if (visitCanadaSite == "true") return false;
	var div = document.getElementById("canada-first-visit-popup");
	
	jQuery(document).ready(function(){
	 jQuery("#fade-out-for-initial-popup").css("height", jQuery(document).height());  
	});

	div.style.visibility = "visible";
	setCookie("visitCanadaSite","true",30);
	var url = urlCanadaFirstVisit;
	var myAjax = jQuery(div).load(url);

 	return false;
}

function hideCanadaFirstVisitPopup(){
	jQuery(document).ready(function(){
		 jQuery("#fade-out-for-initial-popup").css("height", jQuery(document).height());  
	});
	jQuery("#fade-out-for-initial-popup").fadeOut();
	jQuery("#canada-first-visit-popup").css("display","none");
	writeCookie("visitCanadaSite", "true");
}

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

function writeCookie(cname, cvalue, cexpire) {
	document.cookie = cname + '=' + escape(cvalue) +
	(typeof cexpire == 'date' ? 'expires=' + cexpire.toGMTString() : '');
}

function endecaResultsToDisplay(form) {
	var index=form.select.selectedIndex;
	if (form.select.options[index].value != "0") {
		location=form.select.options[index].value;}
}


