function cSearchNode(oNode) { if(!oNode.getAttribute("searchnode")|| oNode.getAttribute("searchnode") == "false") throw new Error("Not a valid Search Node"); this.oReferenceLink = oNode; this.sUrl = oNode.getAttribute("url") || null; this.sId = oNode.getAttribute("id") || null; this.sValue = oNode.value; this.rPattern = (oNode.getAttribute("pattern")) || null; this.sErrorMessage = (oNode.getAttribute("message")); this.sErrorAction = (oNode.getAttribute("error")); this.sType = oNode.type; this.bRequired = (oNode.getAttribute("required")) || false; this.iValidationValue = null; this.bChecked = (oNode.checked) || null; this.iSelectedIndex = (oNode.selectedIndex) || null; } cSearchNode.prototype.Validate = function() { var sType = this.sType; switch(sType) { case "select-one" : if(this.sId == "lYear" || this.sId == "hYear"){ if(this.sValue == "Any") this.iValidationValue = -1; return; } else this.iValidationValue = this.iSelectedIndex; break; case 'radio' : if(this.bChecked == true) { this.iValidationValue = 0; return; } this.iValidationValue = -1; break; case "text" : switch(this.sErrorAction) { case 'fix' : if(this.sValue) { var rPattern = this.rPattern; var arSuccess = new Array(); arSuccess = this.sValue.match(eval(rPattern)); if(!arSuccess) { this.oReferenceLink.value = ""; this.oReferenceLink this.iValidationValue = -1; return; } this.oReferenceLink.value = arSuccess.join(''); this.iValidationValue = (arSuccess.length > 0) ? 1 : -1; return; } this.iValidationValue = -1; break; case 'alert' : var rPattern = this.rPattern; if(this.sValue) { if(!eval(rPattern).test(this.sValue)) { this.iValidationValue = -1; alert(this.sErrorMessage); this.oReferenceLink.value = ""; return; } this.iValidationValue = 0; return; } this.iValidationValue = -1; break; default : break; } case 'checkbox' : if(this.bChecked) { this.iValidationValue = 1; return 1; } this.iValidationValue = -1; return -1; break; default : break; } } cSearchNode.prototype.isRequired = function() { return this.bRequired; } function cSearchNodeList() { this.arSearchNodeList = new Array(); this.iSize = 0; } cSearchNodeList.prototype.length = function() { return this.iSize; } cSearchNodeList.prototype.addToNodeList = function(oNode) { try { var oTempNode = new cSearchNode(oNode); this.arSearchNodeList.push(oTempNode); this.iSize++; } catch(ex) {} } cSearchNodeList.prototype.buildSearchNodeList = function(oNode) { var arChildren = oNode.childNodes; if(oNode.nodeType == 1) { this.addToNodeList(oNode); } for(var x = 0; x < arChildren.length; x++) this.buildSearchNodeList(arChildren[x]); } cSearchNodeList.prototype.validateNode = function(iArrayIndex) { this.arSearchNodeList[iArrayIndex].Validate(); } cSearchNodeList.prototype.getSearchNode = function(iArrayIndex) { return this.arSearchNodeList[iArrayIndex]; } function validateAll(oSearchNodeArray, arValidNodes) { var ptrNode; var bIsRequired; var iValidation; for(var x = 0; x < oSearchNodeArray.length(); x++) { ptrNode = oSearchNodeArray.getSearchNode(x); oSearchNodeArray.validateNode(x); bIsRequired = ptrNode.bRequired; iValidation = ptrNode.iValidationValue; if(iValidation >= 0) arValidNodes.push(ptrNode); else if((bIsRequired)) { alert(ptrNode.sErrorMessage); return false; } } return true; } function buildUrl(oSearchNodeArray) { var sUrlString = ""; var arRangeArray = Array(); var ptrTempNode; for(var x = 0; x < oSearchNodeArray.length(); x++) { ptrTempNode = oSearchNodeArray.getSearchNode(x); if(ptrTempNode.iValidationValue >= 0 && ptrTempNode.sUrl != null) { ptrTempNode.sValue = translateValue(ptrTempNode.sValue); if(ptrTempNode.sUrl == '/Caribbean-') { sUrlString += '/State-' + ptrTempNode.sValue; } else { sUrlString += ptrTempNode.sUrl + ptrTempNode.sValue; } } } return sUrlString; } function quickValidate(oElement) { var iValidateValue; var oTempNode = new cSearchNode(oElement); oTempNode.Validate(); iValidateValue = oTempNode.iValidationValue; delete oTempNode; if(iValidateValue >= 0) return true; return false; } function cleanUrl(sUrl) { if(sUrl.match(/\/radius-any/i) && sUrl.match(/\/zip/i)){ var sTempRadiusAny = '/Radius-any'; } var sTempUrl = ""; var rAnyPattern = /\/\w*-(,*any|,*bothVP|,*undefined)+/ig; sTempUrl = sUrl.replace(rAnyPattern,''); if(typeof sTempRadiusAny != 'undefined'){ sTempUrl = sTempUrl + sTempRadiusAny; } if(!sTempUrl.match(/\/zip/i)){ sTempUrl = sTempUrl.replace(/\/radius-(\d)+/i,""); sTempUrl = sTempUrl.replace(/\/Radius-exact/i,""); } if(!sTempUrl.match(/\/radius/i)) sTempUrl = sTempUrl.replace(/\/zip-(\d)+/i,""); sTempUrl = sTempUrl.replace(/\/Price-0,99999999/i,""); return sTempUrl; } function translateValue(sValue) { var sTemp = sValue || ""; sTemp = sTemp.replace(/\//,'%25'); sTemp = sTemp.replace(/-/,'%2D'); return sTemp; } function setCookies(arValidNodes, sCookieName) { var sCookie = ''; var sNodeValue; var sNodeId; for(var x = 0; x < arValidNodes.length; x++) { sNodeId = arValidNodes[x].sId; sNodeValue = arValidNodes[x].sValue; sCookie += sNodeId + '=' + sNodeValue + '#'; } document.cookie = sCookieName + "=" + sCookie + ";path=/;expires="; return true; } function populateForm(sFormName) { if(sFormName == 'mainsearch') var sCookie = 'searchform='; else if (sFormName == 'dealersearch') var sCookie = 'dealersearch='; var sDocumentCookie = document.cookie || ''; var iStartPoint = sDocumentCookie.indexOf(sCookie); var iEndPoint; var sSearchCookie = ''; var arSplitResult; var bdebug = true; var iIndex = 0; var arNameValuePair = new Array(); var oElement = null; var sUrlAttribute = ''; if(iStartPoint >= 0) //we have what we are looking for { iStartPoint += + sCookie.length; iEndPoint = sDocumentCookie.indexOf(";",iStartPoint); sSearchCookie = sDocumentCookie.slice(iStartPoint,iEndPoint); arSplitResult = sSearchCookie.split(/#/); for(; iIndex < arSplitResult.length; iIndex++) { arNameValuePair = arSplitResult[iIndex].split(/=/); oElement = document.getElementById(arNameValuePair[0]); if(oElement != null) { switch(oElement.type) { case 'select-one': oElement.setAttribute('searchnode','true'); oElement.value = arNameValuePair[1].replace('%25','/'); oElement.value = decodeURI(arNameValuePair[1]); changeDivStatus(oElement,arNameValuePair[1]); break; case 'radio': oElement.setAttribute('searchnode','true'); oElement.setAttribute('checked',true); changeDivStatus(oElement); break; case 'text': oElement.setAttribute('searchnode','true'); oElement.value = decodeURI(arNameValuePair[1]); changeDivStatus(oElement); break; case 'checkbox': oElement.setAttribute('searchnode','true'); oElement.setAttribute('checked',true); changeDivStatus(oElement); break; default: oElement.setAttribute('checked',true); changeDivStatus(oElement); break; } } } } } function changeDivStatus(oElement,sCookie) { var sSearchForm = ''; for(count = 0; count < document.getElementsByTagName('form').length; count++){ if (document.getElementsByTagName("form")[count].getAttribute("name") == 'dealersearch') sSearchForm = 'dealersearch'; else sSearchForm = 'mainsearch'; } switch(oElement.getAttribute('url')) { case '/Type-': break; case '/AreaCode-' : sArea(sSearchForm,'area'); break; case '/State-' : sArea(sSearchForm,'state'); break; case '/Caribbean-': sArea(sSearchForm,'carb'); break; case '/Make-' : ajaxMakeModel(sSearchForm, oElement, 'model'); break; case '/Model-' : ajaxMakeModel(sSearchForm, document.getElementById('makesDrop'), 'model', sCookie); break; case '/More-all': shwMore(); break; case '/Price-': oElement.setAttribute('searchnode','true'); populateSelect(document.getElementById('hPrice'), oElement.value, 'hPrice',5000,1000000); document.getElementById('hPrice').setAttribute('searchnode','true'); break; case '/Year-': oElement.setAttribute('searchnode','true'); populateSelect(document.getElementById('hYear'), oElement.value, 'hYear',1); document.getElementById('hYear').setAttribute('searchnode','true'); default: break; } return true; } function repopulateModel(oSelectObject,sCookieVal) { sCookieVal = sCookieVal.replace('%2D','-'); var oModelSelect = document.getElementById(oSelectObject); for(y=0;y 0) { if(val1!='zip'){document.getElementById('zipLbl').innerHTML='ZIP Code';} if(val1=='zip'){document.getElementById('zipLbl').innerHTML='ZIP Code     within';} } sASlct = val1; } //show or hide the Type dropdowns function shwTyp(obj) { if(obj.value=='any'){ hidNode("srchTyp"); hidNode("srchCat"); }else{ shwNode("srchTyp"); } } //show or hide the Additional Search fields - bottom of page function shwMore() { var oElement = document.getElementById('more_options'); var current_class = oElement.className; if(current_class=='sHid'){ oElement.className = 'sShw'; oElement.setAttribute('searchnode','true'); chngPls('sHid'); setSrchNode(true); resetHt(); }else{ oElement.className = 'sHid'; oElement.setAttribute('searchnode','false'); chngPls('sShw'); setSrchNode(false); resetHt(); } } //set searchnode value of optional(hidden) form fields function setSrchNode(nodeVal) { var arChildrenNodes = document.getElementById('more_options').childNodes; for(var index = 0; index < arChildrenNodes.length; index++) { if(arChildrenNodes[index].nodeName=="FIELDSET") { arFieldNodes = arChildrenNodes[index].childNodes; for(i=0;i < arFieldNodes.length;i++) { switch(arFieldNodes[i].type) { case "text": arFieldNodes[i].setAttribute("searchnode",nodeVal); break case "checkbox": arFieldNodes[i].setAttribute("searchnode",nodeVal); break } } } } } //Force a SHOW, - we need this for Regurgitate func function shwMoreEx() { shwNode("sMore"); chngPls(state); } //change text and image for Additional Criteria Links function chngPls(val1) { if (val1=='sHid') { document.getElementById('mre').innerHTML = 'Hide display options'; document.getElementById('mre').className = 'sLess'; } else { document.getElementById('mre').innerHTML = 'Show display options'; document.getElementById('mre').className = 'sMore'; } } //show an element - and reset column heights function shwNode(idVal){ document.getElementById(idVal).style.display='block'; resetHt(); } //hide an element - and reset column heights function hidNode(idVal) { document.getElementById(idVal).style.display='none'; resetHt(); } //IF no results, then throw up an error! //var sReturnError = GetGETPostData('error'); // if (sReturnError) // window.alert (sReturnError); // show/hide refine search components function dspMr(obj) { if (obj.nextSibling.nodeType==3){var nxtElm=obj.nextSibling.nextSibling;}else{var nxtElm=obj.nextSibling;} if(nxtElm.style.display=='none'){nxtElm.style.display='block';obj.innerHTML = '[-]';}else{nxtElm.style.display='none';obj.innerHTML = '[+]';} } /******************************************************************************* My Trader Functions *******************************************************************************/ var req = null; var timer=0; var curad=Array(); var needtologin=false; var returned=false; var imgname=''; var ad = null; var checkbox; var bLoginError; var current_url = window.location.href.substring(0,window.location.href.indexOf('.com/')+4); if(window.location.href.indexOf('trailer.') > 0) { current_url = current_url.replace(/trailer./, ""); } var email_url = current_url+"/myt/join/"; var forgot_url = current_url+"/myt/forgot-password"; function popCntnt() { var cnt; cnt = '

MY TRADER

Close
SIGN IN HERE TO SAVE THIS AD TO YOUR MY TRADER ACCOUNT'; cnt += '
'; cnt += '
'; cnt += ''; cnt += 'Forgot Password?
Don\'t have an account? Join Now
'; return cnt; } function cls(elm) { elm.parentNode.parentNode.removeChild(elm.parentNode); returned=false; } // save this ad function savAd(pElement, iAdID ) { var newdiv = document.createElement('div'); newdiv.setAttribute('id', "newDv"); newdiv.className="svDv"; saveSearchResultAd(pElement,iAdID); } function saveSearchResultAd(pElement,ad_id) { ad = ad_id; checkbox = pElement; //dtypeid=adTypeId; var req = create_xml_object(); var newsrc; sv_typetoreturn='LLLL'; d=new Date(); curad.push(ad_id); if (req!= null) { var newdiv = document.createElement('div'); newdiv.setAttribute('id', "newDv"); newdiv.className="svDv"; newdiv.style.visibility='hidden'; newdiv.innerHTML=popCntnt(); pElement.parentNode.appendChild(newdiv); //change image to show ad is saved //pElement.className = 'sSavD'; newsrc="/login-popup?action=save1&AD_ID="+ad_id+"&"+d.getTime(); var url = getServerName()+newsrc; req.open("post", url, true); req.onreadystatechange = processChange; req.send(null); } } function getServerName() { var str = window.location.protocol + '//' + window.location.hostname; return str; } function create_xml_object() { // Internet Explorer try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(oc) { req = null; } } // Mozailla/Safari if (req == null && (typeof XMLHttpRequest != "undefined" || window.XMLHttpRequest)) { req = new XMLHttpRequest(); } return(req); } function performLogin() { var req = create_xml_object(); var newsrc; var ad_id; lidiv = document.getElementById("newDv"); lidiv.style.visibility='hidden'; if (req!= null) { form = document.getElementById("savevehiclesloginform"); ad_id=form.ad_id.value; newsrc="&HANDLE_ID="+form.HANDLE_ID.value+"&"; newsrc+="PASSWORD="+form.PASSWORD.value+"&"; newsrc1="/login-popup?action=save1&AD_ID="+ad_id+newsrc; var url = getServerName()+newsrc1; req.open("post", url, true); req.onreadystatechange = processChange; req.send(null); } } function processChange(evt) { if (req.readyState == 4) { if (req.status == 200) { var response = req.responseText; if( (response.length < 40) && (response.indexOf('LoginFailure') < 0) ) { checkbox.className="sSavD"; parameters=response.split("&"); ad_id=parameters[1]; if(imgname!="") { tab=document.getElementById(ad_id); tab.className=imgname; } else { chk=document.getElementById(ad_id); tab=document.getElementById(ad_id); } } else { if(returned) { alert('Email Address and/or Password incorrect'); } lidiv = document.getElementById("newDv"); document.forms['savevehiclesloginform'].elements['ad_id'].value = ad; lidiv.style.visibility='visible'; if(timer) clearTimeout(timer); needtologin=true; returned= true; } } } } function populateSelect(oNode,iStartNumber,sName,iScale,iLimit) { var oToday = new Date(); var iStart; var iEnd; var iIndexOffset = 0; var iInterval = iScale; var sOptionPrepend = ""; var iDiff; iStart = parseInt(iStartNumber); switch(sName) { case 'lYear': case 'hYear': iEnd = oToday.getFullYear() + 1; break; case 'lprice': case 'hprice': iEnd = iLimit; sOptionPrepend = '$'; break; default: break; } iDiff = iEnd - iStart; oNode.innerHTML = ''; var x = 0 for(x = iIndexOffset; iStart <= iEnd; x++) { oNode.options[x] = new Option(sOptionPrepend + iStart, iStart); if(iStart==iEnd) oNode.options[x].selected=true; iStart += (iInterval); } if(iStartNumber=='Any') { oNode.innerHTML = ''; oNode.options[0] = new Option('Any', 'Any'); } if(sName == 'hprice') oNode.options[oNode.options.length-1] = new Option('No Limit','9999999999',true); } function setNodeFalse(obj) { if(obj.value!='') { document.getElementById('zipCode').setAttribute('searchnode','false'); document.getElementById('zipRad').setAttribute('searchnode','false'); document.getElementById('area').setAttribute('searchnode','false'); } } function clearFormComplete() { document.mainsearch.reset(); setModelsDefault(document.getElementById('modelsDrop')); sArea('mainsearch', 'zip'); document.getElementById('hYear').innerHTML = ''; if(document.getElementById('more_options').className =='sShw') shwMore(); }function search(sForm) { var bNewOrUsedSelected = false; var bMileageSelected = false; var oSearchNodeArray = new cSearchNodeList(); var sUrl = ""; var sFormName = sForm || "mainsearch"; var bIsValid = false; var sUrlPrepend = ""; var arMatched = ""; var sClass = ""; var arValidNodes = Array(); var bDebug = false; var sCookieName = "searchform"; if(document.forms[sFormName].elements['register']) var sRegNum = document.forms[sFormName].elements['register'].value; oSearchNodeArray.buildSearchNodeList(document.forms[sFormName]); bIsValid = validateAll(oSearchNodeArray, arValidNodes); sUrl = buildUrl(oSearchNodeArray); if(bIsValid) { sUrl = cleanUrl(sUrl); setCookies(arValidNodes, sCookieName); sUrlPrepend = '/find/search-results'; //aero validation - if set, registration number trumps all other criteria if((sRegNum)&&(sRegNum!='')) { sRegNum = sRegNum.replace(/-/,'%2D'); if(bDebug) { alert(document.domain + sUrlPrepend+'/RegistrationNumber-'+sRegNum); return; } window.location = sUrlPrepend+'/RegistrationNumber-'+sRegNum; } else { if(bDebug) { alert(document.domain + sUrlPrepend + sUrl); return; } window.location = sUrlPrepend + sUrl + '/'; } } } function dealersearch(sForm) { var bNewOrUsedSelected = false; var bMileageSelected = false; var oSearchNodeArray = new cSearchNodeList(); var sUrl = ""; var sFormName = sForm || "dealersearch"; var bIsValid = false; var sUrlPrepend = ""; var arMatched = ""; var sClass = ""; var arValidNodes = Array(); var bDebug = false; var sCookieName = "dealersearch"; oSearchNodeArray.buildSearchNodeList(document.forms[sFormName]); bIsValid = validateAll(oSearchNodeArray, arValidNodes); sUrl = buildUrl(oSearchNodeArray); if(bIsValid) { sUrl = cleanUrl(sUrl); setCookies(arValidNodes, sCookieName); sDomain = setDealerSearchDomain(sUrl); if(document.getElementById('exact') != "undefined"){ if(document.getElementById('exact').checked == true){ sDomain += '/Exact-True'; } } if (sDomain.search(/Zip/) >= 0){ sDomain += '/Sort-Distance:ASC'; }else{ sDomain += '/Sort-Company:ASC'; } if(bDebug) { alert(sDomain); return; } window.location = sDomain + '/'; } }