function vehicleLookupPanel(options){this.makeDropDown=$(options.makeDropDownSelector);this.modelDropDown=$(options.modelDropDownSelector);this.seriesDropDown=$(options.seriesDropDownSelector);this.makesLoadedCallback=options.makesLoadedCallback;this.makeNotFoundCallback=options.makeNotFoundCallback;this.makeLookupUrl=options.makeLookupUrl;this.modelLookupUrl=options.modelLookupUrl;this.seriesLookupUrl=options.seriesLookupUrl;this.makeModelLookupOnly=options.makeModelLookupOnly;this.modelFirstOptionText=(options.modelFirstOptionText!=null&&options.modelFirstOptionText!="")?options.modelFirstOptionText:"Cars by Model";this.init=function(){var panel=this;var selectedMake=$("option:selected",panel.makeDropDown).val();var selectedModel=$("option:selected",panel.modelDropDown).val();var haveModelsLoaded=panel.modelDropDown.children().length>1;if(selectedMake==null||selectedMake==""){this.modelDropDown.attr("disabled","disabled")}if((selectedModel==null||selectedModel=="")&&!haveModelsLoaded){this.modelDropDown.attr("disabled","disabled")}this.seriesDropDown.attr("disabled","disabled");this.makeDropDown.change(function(){makeChanged(panel)});if(!this.makeModelLookupOnly){this.modelDropDown.change(function(){modelChanged(panel)})}};return true}function makeChanged(panel,callback){var selectedMake=$("option:selected",panel.makeDropDown).val();if(selectedMake!=null&&selectedMake!=""){setModelDropDownLoading(panel);var selectedMake=selectedMake.replace(/ /g,"+").replace("-","+");var url=panel.modelLookupUrl.replace("replacewithmake",selectedMake);$.getJSON(url,function(data,textStatus){modelsForMakeRequestCallback(data,textStatus,panel)})}else{if(panel.makeNotFoundCallback){panel.makeNotFoundCallback()}}}function setModelDropDownLoading(panel){panel.modelDropDown.empty().append('<option value="">Loading...</option>');panel.modelDropDown.attr("disabled","disabled");if(!panel.makeModelLookupOnly){setVehicleDropDownLoading(panel)}}function setVehicleDropDownLoading(panel){panel.seriesDropDown.empty().append('<option value="">Loading...</option>');panel.seriesDropDown.attr("disabled","disabled")}function resetModelDropDown(panel){if(!panel.makeModelLookupOnly){resetVehicleDropDown(panel)}panel.modelDropDown.empty().append('<option value="">'+panel.modelFirstOptionText+"</option>")}function resetVehicleDropDown(panel){panel.seriesDropDown.empty().append('<option value="">Cars by Series</option>')}function modelsForMakeRequestCallback(data,textStatus,panel){setTimeout(function(){panel.modelDropDown.empty().append('<option value="">'+panel.modelFirstOptionText+"</option>");$.each(data,function(i,item){$("<option />").attr("value",item.ModelValue.replace(/\+/g," ")).text(item.ModelDisplay).appendTo(panel.modelDropDown)});panel.modelDropDown.attr("disabled","");if(!panel.makeModelLookupOnly){resetVehicleDropDown(panel);panel.seriesDropDown.attr("disabled","disabled")}if(panel.makesLoadedCallback){panel.makesLoadedCallback()}},300)}function refreshMakes(panel){$.getJSON(panel.makeLookupUrl,function(data,textStatus){makeRequestCallback(data,textStatus,panel)})}function makeRequestCallback(data,textStatus,panel){$.each(data,function(i,item){$("<option />").attr("value",item.MakeValue).text(item.MakeDisplay).appendTo(panel.makeDropDown)})}function modelChanged(panel){if(!panel.makeModelLookupOnly){setVehicleDropDownLoading(panel)}var selectedMake=$("option:selected",panel.makeDropDown).val();var selectedModel=$("option:selected",panel.modelDropDown).val();if(selectedMake!=null&&selectedModel!=null&&selectedMake!=""&&selectedModel!=""){var selectedMake=selectedMake.replace(/ /g,"+");var selectedModel=selectedModel.replace(/ /g,"+");var url=panel.seriesLookupUrl.replace("replacewithmake",selectedMake).replace("replacewithmodelconfiguration",selectedModel);$.getJSON(url,function(data,textStatus){vehiclesForModelRequestCallback(data,textStatus,panel)})}}function vehiclesForModelRequestCallback(data,textStatus,panel){setTimeout(function(){resetVehicleDropDown(panel);$.each(data,function(i,item){if(item.VehicleDisplay==null){item.VehicleDisplay="NULL"}$("<option />").attr("value",item.VehicleValue).text(item.VehicleDisplay).appendTo(panel.seriesDropDown)});panel.seriesDropDown.attr("disabled","")},500)}function resetMakeDropDown(panel){resetModelDropDown(panel);panel.makeDropDown.empty().append('<option value="">Cars by Make</option>')};
