///////////////////////////////////////////////////////
// Adds an item to the cart, we moved this here to simplify changes
// to the add 2 cart command
//
//////////////////////////////////////////////////////////
var busy = false;

function pause(numberMillis) {
	var now = new Date();
  var exitTime = now.getTime() + numberMillis;
  while (true) {
		now = new Date();
    if (now.getTime() > exitTime)
			return;
  }
}

function expand(uniqueId){ 
 	getElementById('smallView_' + uniqueId).style.display = "none";
 	getElementById('expandRow_' + uniqueId).style.display = "none";
 	getElementById('bigView_' + uniqueId).style.display = "";
 	getElementById('retractRow_' + uniqueId).style.display = "";	
}

function retract(uniqueId){ 
 	getElementById('smallView_' + uniqueId).style.display = "";
 	getElementById('expandRow_' + uniqueId).style.display = "";
 	getElementById('bigView_' + uniqueId).style.display = "none";
 	getElementById('retractRow_' + uniqueId).style.display = "none";	
}	
	
function disableAddToCart(formObj, submitName){ 	
 	formObj[submitName].disabled = true;
}

function disableTDSubmit(form, obj){		
	if(document.getElementById) {		
			document.getElementById(obj).innerHTML = ' <b>Please wait...</b> ';
			pause(500);
	} else if(document.all) {		
			document.all(obj).innerHTML = ' <b>Please wait...</b> ';		
	} 		
	form.submit();	
}

function Add2WishList(form, catEntryId){
       if (!busy) {
              busy = true;
              form.action="/webapp/wcs/stores/servlet/InterestItemAdd";
              form.catEntryId.value = catEntryId;
              form.URL.value='InterestItemDisplay';
              form.submit();
       }
}
function Add2ShopCart(form, catEntryQuantity, url, catEntryId) {
	   if (!busy) {
              busy = true;
              form.action="/webapp/wcs/stores/servlet/OrderItemAdd";
              form.catEntryId.value = catEntryId;
              form.quantity.value = catEntryQuantity;			  
              form.URL.value= url;             
              form.submit();
       }
       return false;
}

function Add2ShopCartWithDisable(form, obj, catEntryQuantity, url, catEntryId) {
      form.action="/webapp/wcs/stores/servlet/OrderItemAdd";
      form.catEntryId.value = catEntryId;
      form.quantity.value = catEntryQuantity;
	  form.URL.value= url;	  
      disableTDSubmit(form,obj);       
	  return false;
}


function ViewCartWait(obj){		
	//obj.style.backgroundPosition="-178px 0px";
	//obj.disabled = true;
}

function RemovefromCartWait(obj){		
	obj.style.backgroundPosition="-178px 0px";
	//obj.disabled = true;
}

function AddtoCartSubmitGC(obj, itemId, qty){	
	obj.style.backgroundPosition="-178px 0px";	
	var form = getElementById("OrderItemAddForm");
    form.catEntryId_1.value = itemId;
    form.quantity_1.value = qty;   
    form.submit();
    obj.disabled = true;	  
	//obj.disabled = true;
}

function AddtoCartSubmit(obj, itemId){	
	var qty = getElementById("item_quantity_" + itemId).value;	
	obj.style.backgroundPosition="-178px 0px";	
	var form = getElementById("OrderItemAddForm");
    form.catEntryId_1.value = itemId;
    form.quantity_1.value = qty;   
    form.submit();
    obj.disabled = true;	  
	//obj.disabled = true;
}

function clearPart(){
	if(document.QuickOrderItemAddForm.partNumber_1.value == "Enter Part #"){
		document.QuickOrderItemAddForm.partNumber_1.value = "";
	}
}


function QuickOrderSubmit(formObj){
	if (formObj.partNumber_1.value.length < 2 || formObj.partNumber_1.value == "") {
		alert("Part Number too short. Please enter a longer Part Number to add to your cart.");
		formObj.partNumber_1.focus();
		formObj.partNumber_1.select();
		return false;
	}else if(formObj.partNumber_1.value == "Part Number"){
		alert("Please enter a Part Number to add to your cart.");
		formObj.partNumber_1.focus();
		formObj.partNumber_1.select();
		return false;
	} else {
	
		pNum = document.QuickOrderItemAddForm.partNumber_1.value.substring(0,6).toUpperCase();
		if(pNum == "998-GC") {
			alert("Cannot use the Quick Order Form for adding Gift Certificates to your shopping cart.");
			formObj.partNumber_1.value = "Enter Part #";
			return false;
		} else {
			formObj.partNumber_1.value = trim(formObj.partNumber_1.value.toUpperCase());
			return true;
		}		
	}
}

function AddtoCartWait(obj){		
	obj.style.backgroundPosition="-178px 0px";
	//obj.disabled = true;
}

function AddtoCartMouseOver(obj){
	if (!obj.disabled){
		obj.style.backgroundPosition="-89px 0px";
	}
}

function AddtoCartMouseOut(obj){
	if (!obj.disabled){
		obj.style.backgroundPosition="0px 0px";
	}
}

//////////////////////////////////////////////////////////
// Checks whether a string contains a double byte character
// target = the string to be checked
//
// Return true if target contains a double byte char; false otherwise
//////////////////////////////////////////////////////////
function containsDoubleByte (target) {
     var str = new String(target);
     var oneByteMax = 0x007F;

     for (var i=0; i < str.length; i++){
        chr = str.charCodeAt(i);
        if (chr > oneByteMax) {return true;}
     }
     return false;
}

//////////////////////////////////////////////////////////
// A simple function to validate an email address
// It does not allow double byte characters
// strEmail = the email address string to be validated
//
// Return true if the email address is valid; false otherwise
//////////////////////////////////////////////////////////
function isValidEmail(strEmail){
	// check if email contains dbcs chars
	if (containsDoubleByte(strEmail)){
		return false;
	}
	
	if(strEmail.length == 0){
		return true;
	}else if (strEmail.length < 5){
        return false;
    }else{
        if (strEmail.indexOf(" ") > 0){
          return false;
        }else{
          if (strEmail.indexOf("@") < 1) {
            return false;
          }else{
            if (strEmail.lastIndexOf(".") < (strEmail.indexOf("@") + 2)){
              return false;
            }else{
               if (strEmail.lastIndexOf(".") >= strEmail.length-2){
                 return false;
               }
            }
          }
        }
    }
return true;
}

//////////////////////////////////////////////////////////
// This function will count the number of bytes
// represented in a UTF-8 string
//
// arg1 = the UTF-16 string
// arg2 = the maximum number of bytes allowed in your input field
// Return false is this input string is larger then arg2
// Otherwise return true...
//////////////////////////////////////////////////////////
function isValidUTF8length(UTF16String, maxlength) {
    if (utf8StringByteLength(UTF16String) > maxlength) return false;
    else return true;
}

//////////////////////////////////////////////////////////
// This function will count the number of bytes
// represented in a UTF-8 string
//
// arg1 = the UTF-16 string you want a byte count of...
// Return the integer number of bytes represented in a UTF-8 string
//////////////////////////////////////////////////////////
function utf8StringByteLength(UTF16String) {
  if (UTF16String === null) return 0;
  var str = String(UTF16String);
  var oneByteMax = 0x007F;
  var twoByteMax = 0x07FF;
  var byteSize = str.length;

  for (i = 0; i < str.length; i++) {
    chr = str.charCodeAt(i);
    if (chr > oneByteMax) byteSize = byteSize + 1;
    if (chr > twoByteMax) byteSize = byteSize + 1;
  }  
  return byteSize;
}

//////////////////////////////////////////////////////////
//
// This function is used open a pop-up window
//
////////////////////////////////////////////////////////// 
function open_window(url) {
	if (url.substring(0,1) != '/'){
		url = "http://" + location.host + "/webapp/wcs/stores/servlet/" + url
	} else{
		url = "http://" + location.host + url
	}   
	itemimage = window.open(url,"ItemImage", "toolbar=no,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=yes,width=360,height=350");  
	itemimage.focus();   
}

function open_custom(url, width, height) {
	if (url.substring(0,1) != '/'){
		url = "http://" + location.host + "/webapp/wcs/stores/servlet/" + url
	} else{
		url = "http://" + location.host + url
	} 
	notes = window.open(url,"notes", "toolbar=no,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=yes,width=" + width + ",height=" + height);  
	notes.focus();   
}

function open_htmlpopup(htmlcode, width, height) { 
	var int_windowLeft = (screen.width - width) / 2;
  	var int_windowTop = (screen.height - height) / 2;
  
	notes = window.open('',"JEGS", "toolbar=0,location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=" + width + ",height=" + height + ",top=" + int_windowTop + ",left=" + int_windowLeft);  
	notes.document.write(
  '<html><head><title>JEGS</title></head>'
   +'<body bgcolor=white onLoad="self.focus()">'
   +htmlcode
   +'</body></html>'); 
   notes.document.close();
}

// Used to hide or show a particular object on a page
function hideObject(obj, bool) {
   	document.getElementById(obj).style.display = (bool) ? "none" : "block";
}
 
function reDirect(partnum){
//	var url = "/webapp/wcs/stores/servlet/CatalogSearchResultView?storeId=10001&catalogId=10002&langId=-1&resultsPerPage=25&pageIndex=1&searchTerm=";
	var url = "http://" + location.host +"/webapp/wcs/stores/servlet/KeywordSearchCmd?storeId=10001&catalogId=10002&langId=-1&N=0&Ntk=all&Nty=1&Ntx=modeBmatchall&Dx=modeBmatchall";
	var searchTerm = "&Ntt="+partnum+"&D="+partnum;
	window2 = window.open(url+searchTerm);
	window2.focus();
}

function linkOpener(partnum){
	var url = "http://" + location.host + "/webapp/wcs/stores/servlet/ProductDisplay?storeId=10001&catalogId=10002&langId=-1&partNumber=" + partnum;
	window2 = window.open(url);
	window2.focus();
}

function getElementById(name){
	var select;
	if(document.all){
		select = document.all(name);		
	}else if (document.getElementById){
		select = document.getElementById(name);		
	}
	return select;
}

// Removes leading whitespaces
function LTrim( value ) {	
	return value.replace(/\s*((\S+\s*)*)/, "$1");	
}

// Removes ending whitespaces
function RTrim( value ) {	
	return value.replace(/((\s*\S+)*)\s*/, "$1");	
}

// Removes leading and ending whitespaces
function trim( value ) {	
	return value.replace(/^\s*|\s*$/g,"");	
}
//Selects and highlights text area or input
function SelectAll(id)
{
    document.getElementById(id).focus();
    document.getElementById(id).select();
}
var busy = false;	
	function HandleSubmit(form)
	{		
		if (!busy){
			busy = true;
			form.submit();
		}	
		return false;
	}

 function swapHeader(type){
 	var collapsed=false;
 	if(getElementById('MMY').style.display == "none"){
 		collapsed=true;
 	}
 	if (collapsed && type == "MMY"){
 	      try{
 		getElementById('MMY').style.display = "table-row";
 	      }catch(err){
 		  getElementById('MMY').style.display = "inline";
 	      }
 	      
 	} else{
 		getElementById('MMY').style.display = "none";
 	}
 	setFocus('CatalogSearchForm', 'searchTerm');
 }

function setFocus(formName, objName){
	var curForm = document.forms[formName];
	curForm[objName].focus();
}


//////////////////////////////////////////////////////////
//
// This function is used to process an email newsletter request
// added by jclane - 05/02/05
//
//////////////////////////////////////////////////////////	
function processNewsletter(formName) {
	var curForm = document.forms[formName];
	if ( isValidEmail(curForm['ECEMAILADD'].value)) {
		emailWin = window.open(curForm['popup'].value + "?ECEMAILADD=" + curForm['ECEMAILADD'].value ,"emailMessage","status=no,toolbar=no,location=no,menu=no,menubar=no,scrollbars=no,width=420,height=300"); 
		emailWin.focus(); 
		return true;
	}else{
		alert('Please enter a valid email address before submitting a newsletter request.');
		return false;
	}	
}

var busy = false;
function clearSearch(searchObj){
	if(searchObj.value == "Part Number or Keyword" || searchObj.value=="Part Number"){
		searchObj.value = "";
	}
}

function clearEmail2(newletterObj){
	if(newletterObj.value == "Enter Email Address"){
		newletterObj.value = "";
	}
}

function clearEmail(formName){
	var curForm = document.forms[formName];
	if(curForm['ECEMAILADD'].value == "Enter Email Address"){
		curForm['ECEMAILADD'].value = "";
	}
}

function endecaKeywordSearch(formObj){
	if (formObj.searchTerm.value.length < 2 || formObj.searchTerm.value == "") {
		alert("Search term too short. Please enter a longer term to use as your search.");
		formObj.searchTerm.focus();
		formObj.searchTerm.select();
		return false;
	}else if(formObj.searchTerm.value == "Part Number or Keyword"){
		alert("Please enter a term to use as your search.");
		formObj.searchTerm.focus();
		formObj.searchTerm.select();
		return false;
	} else {
		searchTerm = formObj.searchTerm;
		searchTerm.value = trim(searchTerm.value);
		formObj.Ntt.value = searchTerm.value;
		formObj.D.value = searchTerm.value;
		return true;
	}
}

function mmySubmit() {
	var nMake = "";
	var nYear = "";
	var nModel = "";

	if(document.getElementById) {
		nMake = document.getElementById("MAKE").options[document.getElementById("MAKE").selectedIndex].value;
		nYear = document.getElementById("YEAR").options[document.getElementById("YEAR").selectedIndex].value;
		nModel = document.getElementById("MODEL").options[document.getElementById("MODEL").selectedIndex].value;
		if(nModel.length > 0 && nModel != "0") {
			document.getElementById("SearchGOButton").innerHTML = '<font color=black><b>Please<br/>wait...</b></font>';
			document.MakeModeYearForm.N.value = nModel;
			document.MakeModeYearForm.submit();
		} else if(nMake.length > 0 && nMake != "0") {
			document.getElementById("SearchGOButton").innerHTML = '<font color=black><b>Please<br/>wait...</b></font>';
			document.MakeModeYearForm.N.value = nMake;
			document.MakeModeYearForm.submit();
		} else if(nYear.length > 0 && nYear != "0"){
			document.getElementById("SearchGOButton").innerHTML = '<font color=black><b>Please<br/>wait...</b></font>';
			document.MakeModeYearForm.N.value = nYear;
			document.MakeModeYearForm.submit();
		}
	} else if(document.all) {
		nMake = document.all("MAKE").options[document.all("MAKE").selectedIndex].value;
		nYear = document.all("YEAR").options[document.all("YEAR").selectedIndex].value;
		nModel = document.all("MODEL").options[document.all("MODEL").selectedIndex].value;
		if(nModel.length > 0 && nModel != "0") {
			document.all("SearchGOButton").innerHTML = '<font color=black><b>Please<br/>wait...</b></font>';		
			document.MakeModeYearForm.N.value = nModel;
			document.MakeModeYearForm.submit();
		} else if(nMake.length > 0 && nMake != "0") {
			document.all("SearchGOButton").innerHTML = '<font color=black><b>Please<br/>wait...</b></font>';		
			document.MakeModeYearForm.N.value = nMake;
			document.MakeModeYearForm.submit();
		} else if(nYear.length > 0 && nYear != "0"){
			document.all("SearchGOButton").innerHTML = '<font color=black><b>Please<br/>wait...</b></font>';		
			document.MakeModeYearForm.N.value = nYear;
			document.MakeModeYearForm.submit();
		}
	}
}



/////////////////////////////////////////////////////////////
///// Ajax
/////////////////////////////////////////////////////////////

/**
 * Open a connection to the specified URL, which is
 * intended to provide an XML message.  The specified data
 * is sent to the server as parameters.  This is the same as
 * calling xmlOpen("POST", url, toSend, responseHandler).
 *
 * @param string url    The URL to connect to.
 * @param string toSend The data to send to the server; must be URL encoded.
 * @param function responseHandler The Javascript function handling server response.
 */
function xmlPost(url, toSend, toSendType, responseHandler)
{
    xmlOpen("POST", url, toSend, toSendType, responseHandler);
}


/**
 * Open a connection to the specified URL, which is
 * intended to provide an XML message.  No other data is
 * sent to the server.  This is the same as calling
 * xmlOpen("GET", url, null, responseHandler).
 *
 * @param string url    The URL to connect to.
 * @param function responseHandler The Javascript function handling server response.
 */
function xmlGet(url, responseHandler)
{
    xmlOpen("GET", url, null, null, responseHandler);
}


/**
 * Open a connection to the specified URL, which is
 * intended to respond with an XML message.
 * 
 * @param string method The connection method; either "GET" or "POST".
 * @param string url    The URL to connect to.
 * @param string toSend The data to send to the server; must be URL encoded.
 * @param function responseHandler The function handling server response.
 */ 
function xmlOpen(method, url, toSend, toSendType, responseHandler)
{	
	xmlHttpOpen(method, url, toSend, toSendType, responseHandler,true)
} 

/**
 * Same as xmlOpen(method, url, toSend, toSendType, responseHandler) but takes a boolean 
 * for sych/asynch
 */ 
function xmlHttpOpen(method, url, toSend, toSendType, responseHandler, asynch)
{	
    if (window.XMLHttpRequest)
    {
        // browser has native support for XMLHttpRequest object
        req = new XMLHttpRequest();
    }
     else if (window.ActiveXObject)
    {
        // try XMLHTTP ActiveX (Internet Explorer) version
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    if(req)
    {
    	if (responseHandler != null){
    		 req.onreadystatechange = responseHandler;
    	}       
        req.open(method, url, asynch);
        if (toSendType != null){
        	req.setRequestHeader("content-type", toSendType);
        }
        req.send(toSend);
     }
    else
    {
        alert('Your browser does not seem to support XMLHttpRequest.');
    }
} 

function createXMLDoc(){
	var xmlDoc;
	if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	}
	// code for Mozilla, etc.
	else if (document.implementation &&
	document.implementation.createDocument){
		xmlDoc= document.implementation.createDocument("","",null);
	}
	else{
		alert('Your browser is not capable of creating XML');
	}	
	return xmlDoc;		
}

function getxmlDocAsString(xmlDoc){
	var xmlStr;
	if(window.ActiveXObject){
		xmlStr = xmlDoc.xml;
	} else if (document.implementation &&
			document.implementation.createDocument){
		var xmlSerializer = new XMLSerializer();
		xmlStr = xmlSerializer.serializeToString(xmlDoc);
	}
	return xmlStr;	
}

////////////////////////////////////////////////////
//// Common Search
////////////////////////////////////////////////////
var xmlDoc = null;

function removeSearchCriteria(criteria){
	var searchCriteria = getSearchCriteria();
	var criteriaNode = searchCriteria.getElementsByTagName(criteria).item(0);
		if (criteriaNode != null){
			searchCriteria.removeChild(criteriaNode);
		}
}

function removeSearchCriteriaArray(criteria){
	for(i=0; i < criteria.length; i++){
	     removeSearchCriteria(criteria[i]);     
    }
}

function addSearchCriteria(name, value, text){
	var field = xmlDoc.createElement(name);
	field.setAttribute('value', value);		
	var value = xmlDoc.createTextNode(text);	
	field.appendChild(value);
	var searchCriteria = getSearchCriteria();		
	searchCriteria.appendChild(field);
}

function setSearchAttribute(name, value){	
	var searchCriteria = getSearchCriteria();	
	searchCriteria.setAttribute(name, value);	
}

function getSearchAttribute(name){
	var searchCriteria = getSearchCriteria();
	return searchCriteria.getAttribute(name);
}

function getSearchCriteria(){
	return xmlDoc.getElementsByTagName('SEARCH').item(0);
}

function searchXMLPost(url, toSend, responseHandler)
{	
	xmlPost(url, toSend, "text/xml", responseHandler);
}

function getSelectedSearchValue(name){
	var selectedValue = null;
	var searchCriteria = getSearchCriteria();
	var valueTag = searchCriteria.getElementsByTagName(name).item(0);
	if (valueTag != null){
		selectedValue = valueTag.firstChild.nodeValue;
	}
	return selectedValue;
}

function createSearchXMLDoc(type){
	if (xmlDoc == null){	
		xmlDoc = createXMLDoc();		
		var searchCriteria = xmlDoc.createElement("SEARCH");		
		xmlDoc.appendChild(searchCriteria);		
	}
	setSearchAttribute("type", type);
	setSearchAttribute("parent", "");			

}

/////////////////////////////////////////////////////////////
//// MkMdlYrSearch
////////////////////////////////////////////////////////////

var YEARSELECT = "YEAR";
var MAKESELECT = "MAKE";
var MODELSELECT = "MODEL";

var YEAR = "YEAR";
var MAKE = "MAKE";
var MODEL = "MODEL";

var XMLPOSTSERVLET = "/webapp/wcs/stores/servlet/MMYCboView?storeId=10001";

function refreshSelectRequest(responseMethod){
	var xmlStr = getxmlDocAsString(xmlDoc);	
	searchXMLPost(XMLPOSTSERVLET, xmlStr, responseMethod); 
}

function runYearSearch(){	
	createSearchXMLDoc(YEARSELECT);
	removeSearchCriteria(YEAR);
	removeSearchCriteria(MAKE);
	removeSearchCriteria(MODEL);	
	var yearSelect = getElementById(YEARSELECT);
	var makeSelect = getElementById(MAKESELECT);
	var modelSelect = getElementById(MODELSELECT);		
	makeSelect.disabled = true;
	modelSelect.disabled = true;
	refreshSelectRequest(searchYMMResponseHandler);
}

function runMakeSearch(value, text){		
	createSearchXMLDoc(MAKE);
	removeSearchCriteria(YEAR);
	removeSearchCriteria(MAKE);			
	removeSearchCriteria(MODEL);
	var makeSelect = getElementById(MAKESELECT);
	var modelSelect = getElementById(MODELSELECT);	
	
	modelSelect.disabled = true;	
	
	if (value == ""){		
		makeSelect.disabled = true;
		return;
	}	
	
	addSearchCriteria(YEAR, value, text);	 			
	refreshSelectRequest(searchYMMResponseHandler);
}

function runModelSearch(value, text){	
	createSearchXMLDoc(MODEL);

	removeSearchCriteria(MAKE);
	removeSearchCriteria(MODEL);	
	
	var modelSelect = getElementById(MODELSELECT);		
		
	if (value == ""){
		modelSelect.disabled = true;
		return;
	}	
	
	addSearchCriteria(MAKE, value, text);	
	refreshSelectRequest(searchYMMResponseHandler);
}

function runMkMdlYrSearch(value){	
	createSearchXMLDoc("MKMDLYR");		
	removeSearchCriteria(YEARSELECT);
	removeFilters();
	
	if (value == ""){
		return;
	}	
	
	addSearchCriteria(YEAR, value);	
	refreshResults("MKMDLYR"); 		
}

function searchYMMResponseHandler(){
    // Make sure the request is loaded (readyState = 4)
    if (req.readyState == 4){       
        // Make sure the status is "OK"
        if (req.status == 200){     
			refreshMMY(req.responseText);                   
        } else{
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}

function refreshMMY(responseText){
	var MMYSelects = getElementById("MMYhtml");	
	MMYSelects.innerHTML = responseText;
}

function setSelect(name, value){	
	var select = getElementById(name);
	if (select != null){
	 for(i=0; i < select.options.length; i++){
		if (value == select.options[i].value){
		 	select.options[i].selected = true;
		 	return;
		}
	 }	
	}
}

/**
 * Handler for server's response to notes.xml request.
 * Notes are pulled from notes.xml and replace the
 * contents of the DIV with id 'notesSection'.
 */
function searchRebuildResponseHandler(){
    // Make sure the request is loaded (readyState = 4)
    if (req.readyState == 4){       
        // Make sure the status is "OK"
        if (req.status == 200){ 
       		var xmlObj = req.responseXML;
       		var searchElement = xmlObj.getElementsByTagName('SEARCH').item(0);       		        		     		     		     			
   		var name = searchElement.getAttribute("type");
   		refreshSelect(xmlObj, name);
   		if (name == MAKE){
   			setSearchAttribute("type", MODEL);
			refreshSelectRequest(searchRebuildResponseHandler);
   		} else if (name == MODEL){
   			setSearchAttribute("type", YEAR);
			refreshSelectRequest(searchRebuildResponseHandler);
   		}           
        }
        else
        {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}

function removeFilters(){
	var criteriaNames = new Array();
	var searchCriteria = getSearchCriteria();	
	var criteriaNodes = searchCriteria.childNodes;		
	for(i=0; i < criteriaNodes.length; i++){
	 	var criteriaNode = criteriaNodes.item(i);			
		var criteriaNodeName = criteriaNode.nodeName;		
		if (criteriaNodeName != MAKE && criteriaNodeName != MODEL && criteriaNodeName != YEAR){
			criteriaNames[criteriaNames.length] = criteriaNodeName;
		}	
	} 	
	removeSearchCriteriaArray(criteriaNames);  
}

function initSearch(){	
	var searchresultsxml = getElementById("searchresultsxml");
	if (searchresultsxml.value != null && searchresultsxml.value != ''){		
		var resultsXmlDoc = createXMLDoc();
		resultsXmlDoc.loadXML(searchresultsxml.value);		
		var searchCriteria = resultsXmlDoc.getElementsByTagName('SEARCH').item(0);
		xmlDoc = createXMLDoc();
		xmlDoc.appendChild(searchCriteria);					
		setSearchAttribute("type", YEAR);
		refreshSelectRequest(searchRebuildResponseHandler);    	
	}else{
		runYearSearch();
	}
}

//Site Catalyst Functions
function buildParam(paramStr,key,value){
    key=key.replace('prop', 'c').replace('eVar', 'v').replace('evar', 'v')
    var tempParam=key + '=' + value;
	var returnStr=(paramStr==undefined?tempParam:paramStr + '&' + tempParam)
	return returnStr;
}

//Add a Bookmark
function bookmarksite(title, url){
	if(url.indexOf('MkMdlYrSearchCmd')==-1 && url.indexOf('KeywordSearchCmd')==-1){
		if (document.all){
			window.external.AddFavorite(url, title);
		}else if (window.sidebar){
			window.sidebar.addPanel(title, url, "")
		}
	}else{
	    alert('Bookmarking of search results is not supported');	
	}
}

//If you have captcha on the page, and want to reload a new image. Use this. 	
function reloadCaptcha(){
  window.location.href=window.location.href;
}

/*
Hides the supplied object if the current day does
not fall within the work week.
*/
function timedHide(objId){
      var obj = returnObjById(objId);
	  if(obj){
		  var d = new Date()
		  var offsetHours=d.getHours() + (d.getTimezoneOffset()/60)
		  if (isWorkWeek(offsetHours,d.getDay())){
				obj.style.display = 'block'
		  } else{
				obj.style.display = 'none'
		  }
	  }
  }

/*
Checks to see if the day is
is between Sunday 6pm, and Friday 6PM. 
*/
function isWorkWeek(offset,day){
// 10 corresponds to 6am, 22 corresponds to 6pm, 26 corresponds to 10pm, 28 is midnight - 0 comes after 28
	  if (day==0 && offset >= 22 && offset< 28){
	 	return true;
	 }else if (day>0 && day<5){
		return true;
	 }else if (day==5 && offset < 22){
		return true;
	 }else{
	 	return false;
	 }
 }

function returnObjById( id )
{
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
}

function bizdays(d1){
	var diff= Math.abs(d1-d2);
	var days= Math.floor(diff/8.64e7);
	var tem= days%7;
	var weeks= Math.floor(days/7);
	var wd1= d1.getDay();
	var wd2= d2.getDay();
	if(wd1== 6) tem-= 2;
	else if(wd1== 0) tem-= 1;
	if(wd2== 0) tem-= 1;
	return weeks*5+tem;
}

function maskAlpha(e){
   var evt = e || window.event;      
   //alert("Step 1.1["+evt.keyCode+"]");
   //alert("Step 1.2["+evt.which+"]");
   var key_code = evt.keyCode ? evt.keyCode : evt.which;
   //alert("Step 2.1["+evt.srcElement+"]");
   //alert("Step 2.2["+evt.target+"]");   
   var oElement = evt.srcElement ? evt.srcElement : evt.target;
   //alert("Step 3.1["+evt.shiftKey+"]");   
   //alert("Step 3.2["+evt.ctrlKey+"]");   
   //alert("Step 3.3["+evt.altKey+"]");   
   if ((evt.shiftKey && key_code !=8 && key_code !=9 && key_code !=40 && key_code !=41) || !evt.shiftKey && !evt.ctrlKey && !evt.altKey) {    
       if (key_code == 45 || key_code== 32 || (key_code > 47 && key_code < 58)) {  
       	if (key_code > 95){
		  	key_code -= (95-47);
    	}
        	oElement.value = oElement.value;
       } 
   	   else if(key_code == 8) {
            oElement.value = oElement.value; 
       } 
       else if(key_code != 9) {
            //alert("Step 4.1["+window.event+"]");   		  
            window.event ? (evt.returnValue = false) : evt.preventDefault();          
       }
    }
}
function hideRefinements(){
getElementById('searchSidebar').style.display = "none";
getElementById('narrowSearchResults').style.display = "";
}

function showRefinements(){
getElementById('searchSidebar').style.display = "";
getElementById('narrowSearchResults').style.display = "none";
}