/* Motortrak Search Js Gordon Tang 23/06/2011 */ var carSearch_config = ({ 'form':'#SearchForm', 'cookies':'true', 'globaldata':'', 'currentfieldchanged':'', 'results':-1, 'fieldschanged': new Array(), 'autofieldselected': new Array() }); try{ if(typeof String.prototype.trim !== 'function') { String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); } } }catch(err){ } try{ function isNumeric(sText) { var ValidChars = "0123456789."; var IsNumber=true; var Char; for (i = 0; i < sText.length && IsNumber == true; i++) { Char = sText.charAt(i); if (ValidChars.indexOf(Char) == -1) { IsNumber = false; } } return IsNumber; } }catch(err){ } function compareString(currentlist, originallist){ var existing = false; for(var i=0;i-1){ existing = true; } } return existing; } $(document).ready(function() { if($('#matrix_make_model_list').val()!="") { $('#bodystyle').attr('disabled','disabled'); } function searchForm(carSearch_settings){ if(carSearch_settings){ $.extend(carSearch_config, carSearch_settings); } $(carSearch_config['form']+' select,'+carSearch_config['form']+' input').carSearch_setForm(); }; $(carSearch_config['form']+' select').each(function() { if($(carSearch_config['form']+' select[name="'+this.name+'"] option').length <= 2){ if(this.name=='class_model'&&$(carSearch_config['form']+' *[name="class_bodystyle[]"]').length>0){ }else if(this.name=='make_model'&&$(carSearch_config['form']+' *[name="make_model[]"]').length>0){ }else{ //$(carSearch_config['form']+' select[name="'+this.name+'"] option:nth(1)').attr('selected','selected'); //$(carSearch_config['form']+' select[name="'+this.name+'"]').attr('disabled','disabled'); } } }); $(carSearch_config['form']+' select').each(function() { //alert('1:'+this.name+' length:'+$(carSearch_config['form']+' select[name="'+this.name+'"] option').length); try{ if(this.name=="make"){ var make_val = document.getElementById("make_post").value; if (make_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==make_val){ $(carSearch_config['form']+' select[name="make"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="make"]').attr('disabled',''); } }); } } }catch(err){ } try{ if(this.name=="class_model"){ var class_model_val = document.getElementById("class_model_post").value if (class_model_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if (class_model_val.indexOf(',')>-1){ var thislist = $(this).val().split(','); var thatlist = class_model_val.split(','); if (compareString(thislist,thatlist) && $(this).text().indexOf('All')>0){ $(carSearch_config['form']+' select[name="class_model"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="class_model"]').attr('disabled',''); } //if($(this).val().replace(',','').substring(0,4)==class_model_val.replace(',','').substring(0,4)){ //} }else{ if($(this).val()==class_model_val ){ $(carSearch_config['form']+' select[name="class_model"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="class_model"]').attr('disabled',''); } } }); } } }catch(err){ } try{ if(this.name=="pricefrom"){ var post_val = document.getElementById("pricefrom_post").value if (post_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==post_val){ $(carSearch_config['form']+' select[name="pricefrom"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="pricefrom"]').attr('disabled',''); } }); } } }catch(err){ } try{ if(this.name=="priceto"){ var post_val = document.getElementById("priceto_post").value if (post_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==post_val){ $(carSearch_config['form']+' select[name="priceto"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="priceto"]').attr('disabled',''); } }); } } }catch(err){ } try{ if(this.name=="mileageto"){ var post_val = document.getElementById("mileageto_post").value if (post_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==post_val){ $(carSearch_config['form']+' select[name="mileageto"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="mileageto"]').attr('disabled',''); } }); } } }catch(err){ } try{ if(this.name=="yearfrom"){ var post_val = document.getElementById("yearfrom_post").value if (post_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==post_val){ $(carSearch_config['form']+' select[name="yearfrom"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="yearfrom"]').attr('disabled',''); } }); } } }catch(err){ } try{ if(this.name=="yearto"){ var post_val = document.getElementById("yearto_post").value if (post_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==post_val){ $(carSearch_config['form']+' select[name="yearto"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="yearto"]').attr('disabled',''); } }); } } }catch(err){ } try{ if(this.name=="bodystyle_grp"){ var post_val = document.getElementById("bodystyle_grp_post").value if (post_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==post_val){ $(carSearch_config['form']+' select[name="bodystyle_grp"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="bodystyle_grp"]').attr('disabled',''); } }); } } }catch(err){ } try{ if(this.name=="colour_grp"){ var post_val = document.getElementById("colour_grp_post").value if (post_val!=""){ $(carSearch_config['form']+' select[name="'+this.name+'"] option').each(function(index) { if($(this).val()==post_val){ $(carSearch_config['form']+' select[name="colour_grp"] option:nth('+index+')').attr('selected','selected'); $(carSearch_config['form']+' select[name="colour_grp"]').attr('disabled',''); } }); } } }catch(err){ } }); if($(carSearch_config['form']+' select[name="make"]').val()==''){ if($(carSearch_config['form']+' select[name="class_model"]').length > 0){ $(carSearch_config['form']+' select[name="class_model"]').attr('disabled','disabled'); } if($(carSearch_config['form']+' select[name="model"]').length > 0){ $(carSearch_config['form']+' select[name="model"]').attr('disabled','disabled'); } }else{ $(carSearch_config['form']+' select[name="class_model"]').attr('disabled',''); $(carSearch_config['form']+' select[name="model"]').attr('disabled',''); } if($(carSearch_config['form']+' *[name="postcode"]').val()==''){ if($(carSearch_config['form']+' *[name="distanceto"]').length > 0){ $(carSearch_config['form']+' *[name="distanceto"]').attr({disabled:'disabled',rel:'dontchange'}); } }else{ $(carSearch_config['form']+' *[name="distanceto"]').attr({disabled:'',rel:''}); } var dontchange = $(carSearch_config['form']).find('[rel="dontchange"]'),dontchange_arr = []; dontchange.each(function() { dontchange_arr.push( this.name ); }); if($(carSearch_config['form']+' input[name="dontchange"]').length>0){ $(carSearch_config['form']+' input[name="dontchange"]').val(dontchange_arr.join(',')); } if(jQuery().uniform){ $.uniform.update(carSearch_config['form']+' select'); } }); /* custom plugins */ $.fn.carSearch_setForm = function() { var used_fields = new Array(); $.each(this,function(){ used_fields.push(this.name); }); for (key in used_fields){ $(carSearch_config['form']+' select[name="'+key+'"] option[value="'+used_fields[key]+'"]').attr('selected','selected'); } } $.fn.carSearch_clearForm = function() { return this.each(function() { var type = this.type, tag = this.tagName.toLowerCase(); if (tag == 'form') return $(':input',this).carSearch_clearForm(); if (type == 'text' || type == 'password' || tag == 'textarea') this.value = ''; else if (type == 'checkbox' || type == 'radio') $(this).removeAttr('checked'); else if (tag == 'select') this.selectedIndex = 0; }); }; /* mini functions */ function carSearch_countit(array){ var c = 0; for(i in array) if(array[i] != undefined) c++; return c; } function carSearch_addCommas(nStr){ nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; } function carSearch_inArray(needle, haystack) { if($.isArray(haystack)){ var length = haystack.length; for(var i = 0; i < length; i++) { if(haystack[i] == needle) return true; } return false; } return false; } /* core functions */ $(function(){$('.submit').click(function(){ //alert('7'); if($(carSearch_config['form']+' .submit').hasClass('disabled')===false){ var pagewheretogo = "used"; try{ $(carSearch_config['form']+' input[name="type"]').each(function(){ if ($(this).attr('checked')){ pagewheretogo = $(this).val(); } }) if (pagewheretogo=="used"){ $(carSearch_config['form']+'').attr('action','/used'); }else{ $(carSearch_config['form']+'').attr('action','/new'); } }catch(err){} if($(carSearch_config['form']).attr('action')!==''){ try{ $(carSearch_config['form']+' select').each(function() { if ($(this).attr('disabled')){ var $newfield = $('',{type:'hidden',id:this.name,name:this.name,value:this.value}); $newfield.appendTo($(carSearch_config['form'])); } }); }catch(err){} $(carSearch_config['form']).submit(); }else{ //add this line only for matric site try{ var $newfield = $('',{type:'hidden',id:'searchwithoutload',name:'searchwithoutload',value:'yes'}); $newfield.appendTo($(carSearch_config['form'])); }catch(err){} SetVars();//allow flexable callback function instead of fixed.. $('#searchwithoutload').remove(); } } })}); $(function(){$('.reset').click(function(){ $(carSearch_config['form']).carSearch_clearForm(); ajaxPostFormAsXML('SearchForm','carsearch','ajax','update'); if(jQuery().uniform){ $.uniform.update(); } })}); function isMB(){ var loc = window.location.href.toLowerCase(); if (loc.indexOf('mercedesdealer')){ return true; }else{ return false; } } function update(field){ var in_matrix = false; carSearch_config['autofieldselected'].length = 0; var data = eval("(" + unescape(field) + ")"); var totalresults = data['total']; carSearch_config['results'] = totalresults; if (totalresults>0){ if(data['matrix_make_model_list']){ $('#matrix_make_model_list').val(data['matrix_make_model_list']); } if(data['changed']){ var change_val = data['changed']; var change = change_val.split(','); if(carSearch_inArray('matrix',change)){ in_matrix = true; $('#bodystyle').attr('disabled','disabled'); } else { if(in_matrix) { $('.reset').click(); } $('#matrix_make_model_list').val(''); in_matrix = false; } }else{ var change_val = null; } var matrix_bodystyle = ''; for ( a in data ){ if($(carSearch_config['form']+' select[name="'+a+'"]').length>0){ var selected = $(carSearch_config['form']+' select[name="'+a+'"] option:selected').val(); var form_sel = $(carSearch_config['form']+' select[name="'+a+'"] '); var str = ''; var selectedtext = ""; selectedtext=$(carSearch_config['form']+' select[name="'+a+'"] option:selected').text().replace(/\[([^\]]*)\]/g,'').toLowerCase().trim(); var selectedIcon = false; for ( var b in data[a] ){ var select = ''; var real_value = ''; var usr_value = ''; var count_value = ''; if(data[a][b].usr_value){usr_value = data[a][b].usr_value+'';} if (isMB() && a=="class_model" && usr_value.indexOf("All")){ if(data[a][b].value){ real_value = getClassModelValue(a,data[a][b].value,data[a][b].usr_value); } }else{ if(data[a][b].value){real_value = data[a][b].value;} } if(data[a][b].count){count_value = '['+data[a][b].count+']';} if(in_matrix || a=="bodystyle") { matrix_bodystyle += form_sel + ','; } if (a=="class_model"){ if(selectedtext==usr_value.toLowerCase().trim()){ selectedIcon = true; } //if((selectedtext==usr_value.toLowerCase().trim()&&carSearch_inArray(a,change))){ if(selectedtext==usr_value.toLowerCase().trim()){ if(!in_matrix || a!="bodystyle") { select = 'selected="selected"'; } } }else{ if(selected==real_value){ selectedIcon = true; } //if((selected==real_value&&carSearch_inArray(a,change))){ if(selected==real_value){ if(!in_matrix || a!="bodystyle") { select = 'selected="selected"'; } } } if(a=='mileageto'){usr_value = 'up to '+usr_value;} if(a=='pricefrom'<=$(carSearch_config['form']+' select[name="priceto"]').val()){ return false; } if(a=='priceto'>=$(carSearch_config['form']+' select[name="pricefrom"]').val()){ return false; } if(a!="colour") { str+=''; } } if(data[a].length < 2 && !selectedIcon){ carSearch_config['autofieldselected'][carSearch_config['autofieldselected'].length] = a; } if(change==null||carSearch_inArray(a,change)==false){ if(carSearch_countit(data[a])<2){ //form_sel.attr('disabled','disabled'); }else{ form_sel.attr('disabled',''); } }else{ if(!in_matrix || (a!="bodystyle" && a!="colour")) { form_sel.attr('disabled',''); } } if($(carSearch_config['form']+' select[name="make"]').val()==''){ $(carSearch_config['form']+' select[name="class_model"]').attr('disabled','disabled'); }else{ $(carSearch_config['form']+' select[name="class_model"]').attr('disabled',''); } if($(carSearch_config['form']+' *[name="postcode"]').val()==''){ $(carSearch_config['form']+' *[name="distanceto"]').attr('disabled','disabled'); } form_sel.html(str); if(jQuery().uniform){ if($(carSearch_config['form']+' select[name="'+a+'"]').length>0){ $.uniform.update(carSearch_config['form']+' select[name="'+a+'"]'); } } }else if($(carSearch_config['form']+' input[name="'+a+'"]').length>0){ var str = ''; if ((a != 'curr_international') && (a != 'changed')){ var form_sel = $(carSearch_config['form']+' input[name="'+a+'"] '); for ( var b in data[a] ){ if(data[a][b].value){ real_value = data[a][b].value; str+= real_value+','; } } } } } if($(carSearch_config['form']+' #total').length > 0){ $(carSearch_config['form']+' #total').html(data['total']); if($(carSearch_config['form']+' .submit').length>0){ if(data['total'] > 0){ $(carSearch_config['form']+' .submit').removeClass('disabled'); }else{ $(carSearch_config['form']+' .submit').addClass('disabled'); } } } if(typeof SetVars == 'function'&&$('.submit').length<1){ SetVars(); } if(typeof expireCookie == 'function'&&$('.submit').length<1){ expireCookie('PageIndex','/'); } //$(carSearch_config['form']).carSearch_disableAllFieldsWithoneOption(); }else{ if($(carSearch_config['form']+' #total').length > 0){ $(carSearch_config['form']+' #total').html(data['total']); if($(carSearch_config['form']+' .submit').length>0){ if(data['total'] > 0){ $(carSearch_config['form']+' .submit').removeClass('disabled'); }else{ $(carSearch_config['form']+' .submit').addClass('disabled'); } } } if(typeof SetVars == 'function'&&$('.submit').length<1){ SetVars(); } if(typeof expireCookie == 'function'&&$('.submit').length<1){ expireCookie('PageIndex','/'); } carSearch_config['results'] = data['total']; } } function initGlobalData(){ var $newfield = $('',{type:'hidden',id:'nocache',name:'nocache',value:'yes'}); $newfield.appendTo($(carSearch_config['form'])); ajaxPostFormAsXMLGetEmpty('SearchForm','carsearch','ajax','searchFormDefaultValue'); } function ajaxPostFormAsXMLGetEmpty(formName, service, action, callBack) { var browser='ie' ; var theForm = document.getElementById(formName) ; whatForm = theForm.getElementsByTagName('*') ; var xmlDoc; var xmlText ; xmlText = "" ; // code for IE if (window.ActiveXObject){ xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.loadXML(xmlText) ; } // code for Mozilla, Firefox, Opera, etc. else { browser='ff' ; var xmlDoc=document.implementation.createDocument("","",null); } var formXML = xmlDoc.createElement("form"); setAttributeNode(xmlDoc, formXML, "name", formName) ; xmlDoc.appendChild(formXML) ; var siteSelect ; var siteName ; siteName = '' ; siteSelect = document.getElementById('cms_site_select') ; if (isset(siteSelect)) { siteName = siteSelect.options[siteSelect.selectedIndex].value ; var fieldValue = xmlDoc.createElement("field"); var valueVar = xmlDoc.createElement("value"); var fieldName = 'siteOverride' ; setAttributeNode(xmlDoc, fieldValue, "name", fieldName) ; valueVar.appendChild(xmlDoc.createTextNode(neatValueNotNull(utf8Encode(siteName), false))) ; fieldValue.appendChild(valueVar) ; formXML.appendChild(fieldValue) ; } var languageSelect = document.getElementById('cms_language_select') ; if (isset(languageSelect)) { var languageRef = ""; try{ languageRef = languageSelect.options[languageSelect.selectedIndex].value }catch(err){ languageRef = ""; } var fieldValue = xmlDoc.createElement("field"); var valueVar = xmlDoc.createElement("value"); var fieldName = 'cms_language' ; setAttributeNode(xmlDoc, fieldValue, "name", fieldName) ; valueVar.appendChild(xmlDoc.createTextNode(neatValueNotNull(utf8Encode(languageRef), false))) ; fieldValue.appendChild(valueVar) ; formXML.appendChild(fieldValue) ; //alert(languageRef) ; } var fieldCount = whatForm.length - 1 ; var i ; var controlType ; var ajaxParams = "" ; var value ; var skipRadio ; var checked ; for (i=0;i<=fieldCount;i++) { temp_form = whatForm[i]; // alert($(temp_form).attr('class'));//ckeditor controlType = whatForm[i].type ; skipRadio = false ; value = '' ; checked = '' ; if ((controlType != "button") && (controlType != "submit") && (controlType != undefined&&controlType != null&&controlType != ''&&controlType != 'undefined')) { if (whatForm[i].name != "") { if (controlType == "checkbox") { value = '' ; } else if (controlType == "radio") { if (whatForm[i].checked) { value = '' ; } else { skipRadio = true ; } } else if (controlType == "select-multiple") { value = '' ; } else if ((controlType == "select") || (controlType == "select-one")) { value = '' ; } else if(whatForm[i].value != undefined) { value = whatForm[i].value ; } if (!skipRadio) { var fieldValue = xmlDoc.createElement("field"); var valueVar = xmlDoc.createElement("value"); var fieldName = whatForm[i].name ; if ((fieldName != 'siteOverride') && (fieldName != 'cms_language')) { if (fieldName == '') { fieldName = whatForm[i].id ; } valueVar.appendChild(xmlDoc.createCDATASection(neatValueNotNull(utf8Encode(value)))); setAttributeNode(xmlDoc, fieldValue, "name", fieldName) ; if (checked != '') { setAttributeNode(xmlDoc, fieldValue, "checked", checked) ; } fieldValue.appendChild(valueVar) ; formXML.appendChild(fieldValue) ; } } } } } //alert(xmlDoc); cueXMLHTTPPost(service, action, xmlDoc, callBack) ; return false ; } function searchFormDefaultValue(field){ carSearch_config['globaldata'] = eval("(" + unescape(field) + ")"); $('#nocache').remove(); } function getClassModelValue(field, optionValue, optionText){ if (carSearch_config['globaldata']==""){ ajaxPostFormAsXMLGetEmpty('SearchForm','carsearch','ajax','searchFormDefaultValue'); } var returnvalue = optionValue; optionText = optionText.replace(/\[([^\]]*)\]/g,'').toLowerCase().trim(); try{ for ( var b in carSearch_config['globaldata'][field] ){ var tmpText = carSearch_config['globaldata'][field][b].usr_value.replace(/\[([^\]]*)\]/g,'').toLowerCase().trim(); if (tmpText==optionText){ returnvalue = carSearch_config['globaldata'][field][b].value;; } } }catch(err){} return returnvalue; } function getDefaultvalue(field,selectedvalue,selectedtext){ if (carSearch_config['globaldata']==""){ ajaxPostFormAsXMLGetEmpty('SearchForm','carsearch','ajax','searchFormDefaultValue'); } var result = ""; try{ for ( var b in carSearch_config['globaldata'][field] ){ var real_value = ''; var usr_value = ''; var count_value = ''; var select = ''; if(carSearch_config['globaldata'][field][b].value){real_value = carSearch_config['globaldata'][field][b].value;} if(carSearch_config['globaldata'][field][b].usr_value){usr_value = carSearch_config['globaldata'][field][b].usr_value;} if(carSearch_config['globaldata'][field][b].count){count_value = '['+carSearch_config['globaldata'][field][b].count+']';} if (field=="class_model"){ if(selectedtext==usr_value.toLowerCase().trim()){ select = 'selected="selected"'; } }else{ if(selectedvalue==real_value){ select = 'selected="selected"'; } } if(field=='mileageto'){usr_value = 'up to '+usr_value;} result+=''; } }catch(err){ result = ""; } return result; } function searchFieldChangedByValue(fieldname,waction){ if (waction=="add"){ if (carSearch_config['fieldschanged'].length<1){ carSearch_config['fieldschanged'][0] = fieldname; }else{ if ($.inArray(fieldname,carSearch_config['fieldschanged'])<0){ carSearch_config['fieldschanged'][carSearch_config['fieldschanged'].length] = fieldname; } } }else{ if ($.inArray(fieldname,carSearch_config['fieldschanged'])>-1){ carSearch_config['fieldschanged'] = jQuery.grep(carSearch_config['fieldschanged'], function(value) { return value != fieldname; }); } } } function searchFieldChangedAction(fieldname,fieldvalue){ if (fieldvalue==""){ if ($.inArray(fieldname,carSearch_config['fieldschanged'])>-1){ carSearch_config['fieldschanged'] = jQuery.grep(carSearch_config['fieldschanged'], function(value) { return value != fieldname; }); } }else{ if (carSearch_config['fieldschanged'].length<1){ carSearch_config['fieldschanged'][0] = fieldname; }else{ if ($.inArray(fieldname,carSearch_config['fieldschanged'])<0){ carSearch_config['fieldschanged'][carSearch_config['fieldschanged'].length] = fieldname; } } } } function checkIfSearchFieldChanged(fieldname){ var result = false; if ($.inArray(fieldname,carSearch_config['fieldschanged'])>-1){ result = true; }else{ result = false; } return result; } function checkIfFieldSelectedBydefault(fieldname){ var result = false; if ($.inArray(fieldname,carSearch_config['autofieldselected'])<0 && checkIfSearchFieldChanged(fieldname)){ result = true; }else{ result = false; } try{ if ($(carSearch_config['form']+' select[name="'+fieldname+'"] option:selected').val()==$('#'+fieldname+'_post').val()){ result = true; } }catch(err){} return result; } $.fn.carSearch_clearFormReset = function() { return this.each(function() { var type = this.type, tag = this.tagName.toLowerCase(), name=this.name; if (tag == 'form') return $(':input',this).carSearch_clearFormReset(); if (type == 'text' || type == 'password' || tag == 'textarea'){ if (!checkIfFieldSelectedBydefault(name)){ this.value = ''; } }else if (type == 'checkbox' || type == 'radio'){ if (!checkIfFieldSelectedBydefault(name)){ $(this).removeAttr('checked'); } }else if (tag == 'select'){ if (name=="colour_grp" || name=="engine" || name=="mileageto" || name=="pricefrom" || name=="priceto"){ if (!checkIfFieldSelectedBydefault(name)){ this.selectedIndex = 0; } } } }); }; $.fn.carSearch_disableAllFieldsWithoneOption = function() { return this.each(function() { var type = this.type, tag = this.tagName.toLowerCase(), name=this.name; if (tag == 'form') return $(':input',this).carSearch_disableAllFieldsWithoneOption(); if (type == 'text' || type == 'password' || tag == 'textarea'){ }else if (type == 'checkbox' || type == 'radio'){ }else if (tag == 'select'){ if (name!="make"){ if($(carSearch_config['form']+' select[name="'+name+'"] option').length < 3){ $(carSearch_config['form']+' select[name="'+this.name+'"] option:nth(1)').attr('selected','selected'); $(carSearch_config['form']+' select[name="'+this.name+'"]').attr('disabled','disabled'); $.uniform.update(carSearch_config['form']+' select[name="'+name+'"]'); }else{ $(carSearch_config['form']+' select[name="'+this.name+'"]').attr('disabled',''); $.uniform.update(carSearch_config['form']+' select[name="'+name+'"]'); } } if (name=="class_model" || name=="model"){ if($(carSearch_config['form']+' select[name="make"]').val()==''){ if($(carSearch_config['form']+' select[name="class_model"]').length > 0){ $(carSearch_config['form']+' select[name="class_model"]').attr('disabled','disabled'); $.uniform.update(carSearch_config['form']+' select[name="'+name+'"]'); } if($(carSearch_config['form']+' select[name="model"]').length > 0){ $(carSearch_config['form']+' select[name="model"]').attr('disabled','disabled'); $.uniform.update(carSearch_config['form']+' select[name="'+name+'"]'); } } } } }); }; function resetFieldByname(fieldname){ try{ var form_sel = $(carSearch_config['form']+' select[name="'+fieldname+'"] '); var str = ''; var selectedtext = $(carSearch_config['form']+' select[name="'+fieldname+'"] option:selected').text().replace(/\[([^\]]*)\]/g,'').toLowerCase().trim();; str+=getDefaultvalue(fieldname,"",""); form_sel.html(str); form_sel.attr('disabled',''); $.uniform.update(carSearch_config['form']+' select[name="'+fieldname+'"]'); }catch(err){ } } function getSelectedOptionDefault(){ $(carSearch_config['form']+' select').each(function() { if (this.value!=""){ searchFieldChangedByValue(this.name,'add'); } }); } function resetPriceFrom(){ if($(carSearch_config['form']+' select[name="pricefrom"] option').length<=2){ $(carSearch_config['form']+' select[name="pricefrom"] option:nth(0)').attr('selected','selected'); $(carSearch_config['form']+' select[name="pricefrom"]').attr('disabled',''); } } function resetPriceTo(){ if($(carSearch_config['form']+' select[name="priceto"] option').length<=2){ $(carSearch_config['form']+' select[name="priceto"] option:nth(0)').attr('selected','selected'); $(carSearch_config['form']+' select[name="priceto"]').attr('disabled',''); } } $(function(){ $(carSearch_config['form']+' select').change(function() {doSelectFunction(this);}); $(carSearch_config['form']+' input').change(function() {doInputFunction(this);}); try{ if (window.location.href.indexOf('cjddealer')>-1 && window.location.href.indexOf('/used')<0){ //ajaxPostFormAsXML('SearchForm','carsearch','ajax','update'); } }catch(err){} initGlobalData(); function doSelectFunction(thisobject){ var name = thisobject.name; var type = thisobject.type; var change = $(carSearch_config['form']+' input[name="changed"]').val(); carSearch_config['currentfieldchanged'] = name; if(name=='postcode'){ var regex = /^[A-Z]{1,2}[0-9R][0-9A-Z]? ?[0-9][ABD-HJLNP-UW-Z]{2}$/i; if(regex.test(thisobject.value)===false&&thisobject.value!=''){ alert('Invalid Postcode, please try again.'); return false; }else{ $(carSearch_config['form']+'[name="distanceto"]').attr('rel','');alert('valid, now show distance'); } } if($(carSearch_config['form']+'').attr('action')){ if($(carSearch_config['form']+'').attr('action')=='/new'){ $(carSearch_config['form']+'').attr('action','/new'); }else if($(carSearch_config['form']+'').attr('action')=='/used'){ $(carSearch_config['form']+'').attr('action','/used'); }else{ $(carSearch_config['form']+'').attr('action','/used'); } } //issue is temporary, should handle custom radio button grouping if(type=='radio'){ $(carSearch_config['form']+' input[type="radio"]:checked').attr('checked',false); $(thisobject).attr('checked',true); if(jQuery().uniform){ $.uniform.update(carSearch_config['form']+' input[type="radio"]'); } $(carSearch_config['form']+' input[type="radio"]:not(:checked)').each(function(){ change = change.replace(thisobject.name,''); }) } if(thisobject.value==''){ change = change.replace(name,''); if(name=="class_model" || name=="make"){ $('#matrix_make_model_list').val(''); $('#matrix_bodystyle_grp_list').val(''); } }else{ if(change.search(','+name)=='-1'){ change += ','+name; }else if(change.search(name+',')=='-1'){ change += ','+name; } } searchFieldChangedAction(name,thisobject.value); change = change.replace(',,',','); //$(carSearch_config['form']).carSearch_clearFormReset(); if(thisobject.value=='' && thisobject.name=='make'){ var totalnums = carSearch_config['results']; if (totalnums<0){ totalnums = $('#Results').text(); totalnums = (isNumeric(totalnums))?totalnums:0; } if (totalnums<=1){ $(carSearch_config['form']).carSearch_clearForm(); }else{ resetFieldByname('class_model'); if($(carSearch_config['form']+' select[name="class_model"] option').length > 0){ $(carSearch_config['form']+' select[name="class_model"]').attr('disabled','disabled'); } if($(carSearch_config['form']+' select[name="model"] option').length > 0){ $(carSearch_config['form']+' select[name="model"]').attr('disabled','disabled'); } resetPriceFrom(); resetPriceTo(); } } if(thisobject.value=='' && (thisobject.name=='class_model' || thisobject.name=='model')){ resetFieldByname('bodystyle_grp'); } $(carSearch_config['form']+' input[name="changed"]').val(change); ajaxPostFormAsXML('SearchForm','carsearch','ajax','update'); thisobject.blur(); thisobject.hideFocus = true; thisobject.style.outline = 'none'; } function doInputFunction(thisobject){ var name = thisobject.name; var type = thisobject.type; var change = $(carSearch_config['form']+' input[name="changed"]').val(); carSearch_config['currentfieldchanged'] = name; if(name=='postcode'){ var regex = /^[A-Z]{1,2}[0-9R][0-9A-Z]? ?[0-9][ABD-HJLNP-UW-Z]{2}$/i; if(regex.test(thisobject.value)===false&&thisobject.value!=''){ alert('Invalid Postcode, please try again.'); return false; }else{ $(carSearch_config['form']+'[name="distanceto"]').attr('rel',''); } } //temp fix to ensure correct submission page if($(carSearch_config['form']+'').attr('action')){ if(name=='type'&&thisobject.value=='new'){ $(carSearch_config['form']+'').attr('action','/new'); }else if(name=='type'&&thisobject.value=='used'){ $(carSearch_config['form']+'').attr('action','/used'); }else{ $(carSearch_config['form']+'').attr('action','/used'); } } //issue is temporary, should handle custom radio button grouping if(type=='radio'){ $(carSearch_config['form']+' input[type="radio"]:checked').attr('checked',false); $(thisobject).attr('checked',true); if(jQuery().uniform){ $.uniform.update(carSearch_config['form']+' input[type="radio"]'); } $(carSearch_config['form']+' input[type="radio"]:not(:checked)').each(function(){ change = change.replace(thisobject.name,''); }) } var dontchange = $(carSearch_config['form']).find('[rel="dontchange"]'), dontchange_arr = []; dontchange.each(function() { // dontchange_arr.push( thisobject.name );//alert(thisobject.name); }); if($(carSearch_config['form']+' input[name="dontchange"]').length>0){ $(carSearch_config['form']+' input[name="dontchange"]').val(dontchange_arr.join(',')); } if(thisobject.value==''){ change = change.replace(name,''); }else{ if(name=="bodystyle[]") { name = "bodystyle"; } //fix for IE if(name=="class_bodystyle[]") { name = "class_bodystyle"; } if(name=="class_model[]") { name = "class_model"; } if(change.search(','+name)=='-1'){ change += ','+name; }else if(change.search(name+',')=='-1'){ change += ','+name; } } searchFieldChangedAction(name,thisobject.value); change = change.replace(',,',','); $(carSearch_config['form']+' input[name="changed"]').val(change); //: alert(name+'-'+change); ajaxPostFormAsXML('SearchForm','carsearch','ajax','update'); thisobject.blur(); thisobject.hideFocus = true; thisobject.style.outline = 'none'; } window.setTimeout('getSelectedOptionDefault()',500); });