/*
 * Filename: searchAgainFormInclued.js
 *   
 * 07/03/08 KWD P8156 Initial Version. Extracted javascript content from searchagainform.jsp
 				to avoid size compile error on the page. Added submitChosenAcct() to pass
 				along chosen/default payOnAccount id as request a parameter.
   08/28/08 CEM P8097 Functions to support Part Comparison.
   01/12/09 CEM T82992 Part Search Results - MFG Tab;removed the else clause on the 
				add the manufacturer parameter string clause.
   03/09/09 SGM P7996 Set instock, rohs, leadfree values in parametrics form depending
   				upon checked values.				
   10/08/09 JSB T96651 Pass pay on account id in the query string to the compare action.
 */
 	// global js vars
	var mfgParamString = "";
	var parametricsParamString = ""; /* <%-- Used by cacheParametricsParams()--%> */
	var prevAcctSelIndxArry = new Array();
	var prevAcctSelIndx = 0;
    var mfgFilterChanged = false;
    var parametricsChanged = false;
    
    function hideDiv(divName)
    {
   		var divToHide = document.getElementById(divName);
		if (divToHide != null)
		{
				divToHide.style.display='none';
				divToHide.style.visibility='hidden';
		}
    	return true;
    }
 	function resetParametric(indx)
	{
		var currObj = null;
		
		for(var index = 0;;index++)
		{
			currObj = null;
			
			try
			{
			  currObj = getObject("breadcrumb" + indx + "_" + index);

			  if(currObj == null)
			  	break;

			  currObj.checked = false;
			}
			catch(e)
			{
				break;
			}
		}
	
	}    
    
    function setMfgFilterChanged(b)
    {
    	mfgFilterChanged = b;
    }
    
    function isMfgFilterChanged()
    {
        return mfgFilterChanged;
    }
    
    function setParametricsChanged(b)
    {
        return parametricsChanged = b;
    }
    
    function isParametricsChanged()
    {
    	return parametricsChanged;
    }
    
    /**
     * The isOkToExecute function checks to see if the action being requested
     * is ok.  This may involve prompting the user if necessary.
     */
    function isOkToExecute()
    {
       
        if(isMfgFilterChanged() && isParametricsChanged())
        {
			//return confirm("<fmt:message key='prompt.ecom.partsearch.alert.manufacturers.parametrics.selected' />");
        }
        else if(isMfgFilterChanged())
        {
            return confirmAbandonMfrs();
        }
        else if(isParametricsChanged())
        {
        	return confirmAbandonParametrics();
        }
       
        return true;
    }
    
    /**
     * The isOkToExecuteMfr function checks to see if the action being requested
     * is ok.  This may involve prompting the user if necessary.  This should
     * only be used by the manufacturer tab's actions.
     */
    function isOkToExecuteMfr()
    {
    	verifycbvalues();
    	if(isParametricsChanged())
    	{
    		return confirmAbandonParametrics();
    	}
    	
    	return true;
    }
    
    /**
     * The isOkToExecuteParametrics function checks to see if the action being requested
     * is ok.  This may involve prompting the user if necessary.  This should
     * only be used by the Parametrics tab's actions.
     */
    function isOkToExecuteParametrics()
    {
    	
    	verifycbvalues();
    	if(isMfgFilterChanged())
    	{
    		return confirmAbandonMfrs();
    	}
    	
    	return true;
    }
    
    /**
     * Asks the user if it is ok to abandon manufacturer tab changes.
     */
	function confirmAbandonMfrs()
	{
		//return confirm("<fmt:message key='prompt.ecom.partsearch.alert.manufacturers.selected' />");	
	}
	
	/**
	 * Asks the user if it is ok to abandon parametrics tab changes.
	 */
    function confirmAbandonParametrics()
    {
		//return confirm("<fmt:message key='prompt.ecom.partsearch.alert.parametrics.selected' />");
    }

	/*
	 * This function ensures that the various search filter located in the page header tabs are supplemented with relevant
	 * cached Endeca parameter values stored in the page. This helps to ensure that whenever a link-related query is activated,
	 * that the query assigns values in sync with all the filter settings contained in the jsp page.
	 */
	function buildLink(anchorTag, params)
	{
		if(anchorTag == null) return;
		
		var href = anchorTag.href;
		if(href.search(/\?/) != -1)
		{
			href += "&" + params;
		}
		else
		{
			href += "?" + params;
		}

		//get the form objects
		var thisForm = getFormById("SearchAgainForm");
		var parametricsForm = getFormById("ParametricsSearchAgainForm");
		

		if(thisForm != null)
		{
			//add systemsCatalog id
			if(href.search("systemsCatalog") == -1)
			{
				var systemsCatalogVar = getFormElementByName(thisForm, "systemsCatalog");
				if(systemsCatalogVar != null && systemsCatalogVar.value != "")
				{
					href += "&systemsCatalog=" + systemsCatalogVar.value;
				}
				else
				{
					href += "&systemsCatalog=";
				}
			}
			
			//add searchTerms
			if(href.search("searchTerms") == -1)
			{
				var searchTermsVar = getFormElementByName(thisForm, "searchTerms");
				if(searchTermsVar != null && searchTermsVar.value != "")
				{
					href += "&searchTerms=" + searchTermsVar.value;
				}
				else
				{
					href += "&searchTerms=";
				}
			}

			//add the manufacturer parameter string.
			if(href.search("manufacturers=") == -1 && mfgParamString != "")
			{
				href += mfgParamString;
			}

			// add parametrics
	        if(href.search("parametrics=") == -1)
	        {
	            if(parametricsParamString != "")
	            	href += parametricsParamString
	            else
	            	href += "&parametrics=";
	        }
	
			//add rohs
			if(href.search("rohsCompliant") == -1)
			{
				var rohsCompliantVar = getFormElementByName(parametricsForm, "rohsCompliant");
				if(rohsCompliantVar != null)
				{
					var rohsCompliantValue = "off";
					if(rohsCompliantVar.checked == true)
					{
						rohsCompliantValue = "on";
					}
					href += "&rohsCompliant=" + rohsCompliantValue;
				}
			}
		
			//add instock
			if(href.search("inStock") == -1)
			{
				var instockVar = getFormElementByName(parametricsForm, "inStock");
				if(instockVar != null)
				{
					var inStockValue = "off";
					if(instockVar.checked == true)
					{
						inStockValue = "on";
					}
					href += "&inStock=" + inStockValue;
				}
			}
		
			//add leadfree
			if(href.search("leadFree") == -1)
			{
				var leadFreeVar = getFormElementByName(parametricsForm, "leadFree");
				if(leadFreeVar != null)
				{
					var leadFreeValue = "off";
					if(leadFreeVar.checked == true)
					{
						leadFreeValue = "on";
					}
					href += "&leadFree=" + leadFreeValue;
				}
			}
			
			
			anchorTag.href = href;
		}
	}
	
/*
 *  Redirect to login.  Occurs when unauthenticated users reach search limit. 
 */
function searchLimitExceeded()
{
  
     document.location.href="<ws:ContextUrl url='/login.do'/>";
  
}

function submitChosenAcct(linkObject)
{
	var payOnAcctSelectObject = document.getElementById("payOnAccountNumber");
	if(linkObject != null && payOnAcctSelectObject != null)
	{
		linkObject.href += ("&payOnAcctId=" + payOnAcctSelectObject.value);
	}
}

function checkAllParts(check, elemStr)
{
	var indx = 0;
	while(true)
	{
		var elem = document.getElementById(elemStr+indx);
		if(!elem)
		{
			break;
		}

		elem.checked = check;
		
		indx++;
	}
}

function submitCompareForm()
{
	var payOnAccountVal = "";
	if(document.getElementById("payOnAccountNumber"))
	{
		payOnAccountVal = document.getElementById("payOnAccountNumber").value;
	}
	
	var compareFormElem = document.getElementById("DynaForm");

	if(!compareFormElem || !compareFormElem.action)
	{
		return;
	}

	if(document.getElementById("payOnAcctId"))
	{
		document.getElementById("payOnAcctId").value = payOnAccountVal;
	}

	compareFormElem.action = compareFormElem.action + "&payOnAcctId="+payOnAccountVal;
	compareFormElem.submit();
}



function updatecb(cb, avail)
{
	var elem = document.getElementById(avail);
	if (cb != null)
	{
		if (cb.checked)
		{
			if (elem != null)
				elem.checked = true;
			cb.value=true;
		}else
		{
			if (elem != null)
			{
				elem.checked = false;
				elem.value=false;
			}
			cb.value=false;
			cb.checked=false;
		}
	}
	
}

function verifycbvalues()
{

	var thisForm = getFormById("ParametricsSearchAgainForm");
	var mfgForm = getFormById("MfrSearchAgainForm");
	var instockVar = getFormElementByName(thisForm, "inStock");
	var instockStateVar = getFormElementByName(thisForm, "inStockState");
	var instockMfgVar = getFormElementByName(mfgForm, "inStock");
	var instockMfgStateVar = getFormElementByName(mfgForm, "inStockState");
	var rohsVar = getFormElementByName(thisForm, "rohsCompliant");
	var rohsStateVar = getFormElementByName(thisForm, "rohsCompliantState");
	var rohsMfgVar = getFormElementByName(mfgForm, "rohsCompliant");
	var rohsMfgStateVar = getFormElementByName(mfgForm, "rohsCompliantState")
	var leadfreeVar = getFormElementByName(thisForm, "leadFree");
	var leadfreeStateVar = getFormElementByName(thisForm, "leadFreeState");
	var leadfreeMfgVar = getFormElementByName(mfgForm, "leadFree");
	var leadfreeMfgStateVar = getFormElementByName(mfgForm, "leadFreeState")
	
	if (instockVar != null)
	{
		if (instockVar.checked)
		{
			instockVar.value = true;
			instockStateVar.value = true;
			if (instockMfgVar != null)
				instockMfgVar.value = true;
			if (instockMfgStateVar != null)
				instockMfgStateVar.value = true;

			
		}
		else
		{
		
			instockVar.value = false;
			instockStateVar.value = false;
			if (instockMfgVar != null)
				instockMfgVar.value = false;
			if (instockMfgStateVar != null)
				instockMfgStateVar.value = false;
			
		}
	}
	if (rohsVar != null)
	{
		if (rohsVar.checked)
		{
			rohsVar.value = true;
			rohsStateVar.value = true;
			
			if (rohsMfgVar != null)
				rohsMfgVar.value = true;
			if (rohsMfgStateVar != null)
				rohsMfgStateVar.value = true;	
		}
		else
		{
			rohsVar.value = false;
			rohsStateVar.value = false;
			rohsVar.checked = null;
			
			if (rohsMfgVar != null)
				rohsMfgVar.value = false;
			if (rohsMfgStateVar != null)
				rohsMfgStateVar.value = false;	
				
		}
	}
	if (leadfreeVar != null)
	{
		if (leadfreeVar.checked)
		{
			leadfreeVar.value = true;
			leadfreeStateVar.value = true;
			if (leadfreeMfgVar != null)
				leadfreeMfgVar.value = true;
			if (leadfreeStateVar != null)
				leadfreeStateVar.value = true;	
		}
		else
		{
			leadfreeVar.value = false;
			leadfreeStateVar.value = false;
			if (leadfreeMfgVar != null)
				leadfreeMfgVar.value = false;
			if (leadfreeMfgStateVar != null)
				leadfreeMfgStateVar.value = false;	
		}
	}
}

function init()
{
	cacheMfgParams();
	cacheParametricsParams();

	var selectElem = document.getElementById("payOnAccountNumber");
	if(selectElem)
	{
		prevAcctSelIndxArry[0] = selectElem.selectedIndex;
	}
}
 
