Ext.onReady(function(){ var makeMaintPopup = true; Ext.namespace('com.fcac.vehicle'); com.fcac.vehicle.years = [ ['2011'],['2010'],['2009'],['2008'],['2007'],['2006'],['2005'],['2004'],['2003'],['2002'],['2001'],['2000'],['1999'],['1998'],['1997'],['1996'],['1995'],['1994'],['1993'],['1992'],['1991'],['1990'],['1989'],['1988'],['1987'],['1986'],['1985'],['1984'],['1983'] ]; var yearStore = new Ext.data.SimpleStore({ fields: ['year'], data: com.fcac.vehicle.years }); var vehicleStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: '/pricing/selectVehicle.action', method: 'GET' }), reader: new Ext.data.JsonReader({ root: 'data', fields: ['text', 'value'] }) }); var makeStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: '/pricing/selectVehicle.action', method: 'GET' }), reader: new Ext.data.JsonReader({ root: 'data', fields: ['text', 'value'] }) }); var modelStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: '/pricing/selectVehicle.action', method: 'GET' }), reader: new Ext.data.JsonReader({ root: 'data', fields: ['text', 'value'] }) }); var submodelStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: '/pricing/selectVehicle.action', method: 'GET' }), reader: new Ext.data.JsonReader({ root: 'data', fields: ['text', 'value', 'baseVehId', 'tpms'] }) }); var vehicleCombo = BFRC.dataCombo.cloneConfig({ store: vehicleStore, cls: 'vehicleCombo select' }); var onYearSelect = function(combo, value, index, callbackFn, makeValue, modelValue, submodelValue) { var make = Ext.getCmp('make'); make.setValue(''); make.disable(); var model = Ext.getCmp('model'); model.setValue(''); model.disable(); var submodel = Ext.getCmp('submodel'); submodel.setValue(''); submodel.disable(); wipeHidden(); make.store.load({ make: makeValue, model: modelValue, submodel: submodelValue, params: { year: combo.getValue() }, callback: function(r, options) { var make = Ext.getCmp('make'); make.enable(); if(callbackFn) callbackFn(options['make'], options['model'], options['submodel']); } }); } var yearCombo = vehicleCombo.cloneConfig({ id: 'year', name: 'year', store: yearStore, displayField: 'year', valueField: 'year', mode: 'local', emptyText: 'SELECT YEAR', transform: 'year', listeners: {select:{fn:onYearSelect}}, width: 150 }); var onMakeSelect = function(combo, value, index, callbackFn, modelValue, submodelValue) { var model = Ext.getCmp('model'); model.setValue(''); model.disable(); var submodel = Ext.getCmp('submodel'); submodel.setValue(''); submodel.disable(); wipeHidden(); model.store.load({ model: modelValue, submodel: submodelValue, params: { year: Ext.getCmp('year').getValue(), makeId: combo.getValue() }, callback: function(r, options) { var model = Ext.getCmp('model'); model.enable(); if(callbackFn) callbackFn(options['model'], options['submodel']); } }); } var makeCombo = vehicleCombo.cloneConfig({ id: 'make', name: 'make', emptyText: 'MAKE', transform: 'make', disabled: true, lastQuery: '', store: makeStore, width: 150, listeners: {select:{fn:onMakeSelect}} }); var onModelSelect = function(combo, value, index, callbackFn, submodelValue) { var submodel = Ext.getCmp('submodel'); submodel.setValue(''); submodel.disable(); wipeHidden(); submodel.store.load({ submodel: submodelValue, params: { year: Ext.getCmp('year').getValue(), makeId: Ext.getCmp('make').getValue(), modelId: combo.getValue() }, callback: function(r, options) { var submodel = Ext.getCmp('submodel'); var tpmsInd = submodel.store.getAt(0).get('tpms'); var tpmsDropdown = Ext.getCmp("tpmsDropdown"); tpmsDropdown.setValue(tpmsInd); var baseVehId = submodel.store.getAt(0).get('baseVehId'); Ext.getCmp('baseVehIdHidden').setValue(baseVehId); if(submodel.store.getCount() == 1) { submodel.setValue(submodel.store.getAt(0).get('value')); submodel.fireEvent('select'); } submodel.enable(); if(callbackFn) callbackFn(options['submodel']); } }); } var modelCombo = vehicleCombo.cloneConfig({ id: 'model', name: 'model', emptyText: 'MODEL', transform: 'model', disabled: true, lastQuery: '', store: modelStore, width: 150, listeners: {select:{fn:function(combo, value) { onModelSelect(combo, value); setMakeModelHidden(); } }} }); var submodelCombo = vehicleCombo.cloneConfig({ id: 'submodel', name: 'submodel', emptyText: 'SUBMODEL', transform: 'submodel', width: 150, listWidth: 400, disabled: true, lastQuery: '', store: submodelStore, listeners: {select:{fn:function(combo, value) { setHidden(); }} } }); var tpmsValues = [ ['1','TPMS: YES'], ['0','TPMS: NO'] ]; var tpmsStore = new Ext.data.SimpleStore({ data: tpmsValues, fields: ['value', 'text'] }); var tpmsDropdown = BFRC.dataCombo.cloneConfig({ id: 'tpmsDropdown', transform: 'tpms', mode: 'local', store: tpmsStore, emptyText: 'VEHICLE HAS TPMS', width: 153 }); tpmsDropdown.setValue(''); var baseVehIdHidden = new Ext.form.Hidden({ id: 'baseVehIdHidden', name: 'baseVehId', applyTo: 'baseVehIdHidden' }); var popupButton = Ext.get('popupButton'); if(popupButton != null) Ext.addBehaviors({'#popupButton@click' : function() { var maintForm = document.forms['listServices']; var baseVehId = maintForm.baseVehId.value; var submodel = maintForm.submodel.value; if(baseVehId == null || baseVehId == '' || submodel == null || submodel == '') { alert("Please select your vehicle"); return false; } var mileage = maintForm.initMileage.value; var mileageOk = false; if(mileage != null || mileage != '') { mileage = new Number(mileage); if(mileage != NaN && mileage > 0 && 1000000 > mileage) mileageOk = true; } if(!mileageOk) { alert('Please entire a mileage in 6 digits or less'); return false; } window.location.href = '/maintenance/listServices.action?mileage=' + mileage + '&baseVehId=' + baseVehId + '&submodel=' + submodel + '&tpms=' + maintForm.tpms.value; }}); function wipeHidden() { if(!Ext.getDom('hiddenYear')) return; Ext.getDom('hiddenYear').value = ''; /* Ext.getDom('hiddenMake').value = ''; Ext.getDom('hiddenModel').value = ''; */ Ext.getDom('hiddenSubmodel').value = ''; } function setMakeModelHidden() { var makeCmp = Ext.getCmp('make'); var modelCmp = Ext.getCmp('model'); Ext.getDom('makeHidden').value = BFRC.getFirstLabelForValue(makeCmp); Ext.getDom('modelHidden').value = BFRC.getFirstLabelForValue(modelCmp); } function setHidden() { if(!Ext.getDom('hiddenYear')) return; Ext.getDom('hiddenYear').value = Ext.getCmp('year').getValue(); /* Ext.getDom('hiddenMake').value = Ext.getCmp('make').getValue(); Ext.getDom('hiddenModel').value = Ext.getCmp('model').getValue(); */ Ext.getDom('hiddenSubmodel').value = Ext.getCmp('submodel').getValue(); } function getHidden() { if(!Ext.getDom('hiddenYear')) return; var submodel = Ext.getDom('hiddenSubmodel').value; if(submodel != null && submodel != '' && submodel != 'Submodel') { Ext.getCmp('year').setValue(Ext.getDom('hiddenYear').value); /* Ext.getCmp('make').setValue(Ext.getDom('hiddenMake').value); Ext.getCmp('model').setValue(Ext.getDom('hiddenModel').value); */ Ext.getCmp('submodel').setValue(submodel); } } getHidden(); // initialize dropdowns if data is present in request var cache = document.forms['vehicleCache']; if(cache) { var baseVehId = cache.baseVehId.value; var year = cache.year.value; var make = cache.make.value; var model = cache.model.value; var submodel = cache.submodel.value; var baseVehField = Ext.getCmp('baseVehIdHidden'); if(baseVehId && baseVehField) { baseVehField.setValue(baseVehId); } var yearCmp = Ext.getCmp('year'); if(year && yearCmp) { yearCmp.setValue(year); onYearSelect(yearCmp, year, 0, function(make, model, submodel) { var makeCmp = Ext.getCmp('make'); if(make && makeCmp) { makeCmp.setValue(BFRC.getFirstValueForLabel(makeCmp, make)); makeCmp.enable(); Ext.getDom('makeHidden').value = make; onMakeSelect(makeCmp, make, 0, function(model, submodel) { var modelCmp = Ext.getCmp('model'); if(model && modelCmp) { modelCmp.setValue(BFRC.getFirstValueForLabel(modelCmp, model)); modelCmp.enable(); Ext.getDom('modelHidden').value = model; onModelSelect(modelCmp, model, 0, function(submodel) { var submodelCmp = Ext.getCmp('submodel'); if(submodel && submodelCmp) { submodelCmp.setValue(submodel); submodelCmp.enable(); } var tpms = cache.tpms.value; Ext.getCmp('tpmsDropdown').setValue(tpms); setHidden(); }, submodel); } }, model, submodel); } }, make, model, submodel); } } });