var hasused;
var rmodels =	{
	'Honda' : {
		'CR-V' : [ 1996,2010 ],
		'Del Sol' : [ 1992,1997 ],
		'EV Plus' : [ ], // scrapped after leases expired
		'Element' : [ 2003,2010 ],
		'Fit' : [ 2007,2010 ],
		'Insight' : [ 1999,2006 ],
		'Odyssey' : [ 1995,2010 ],
		'Passport' : [ 1993,2001 ],
		'Pilot' : [ 2003,2010 ],
		'Prelude' : [ 1980,2001 ],
		'Ridgeline' : [ 2006,2010 ],
		'S1999' : [ ], // no idea what this is
		'S2000' : [ 1999,2010 ]
	},
	'Acura' : {
		'CL' : [ 1997,2003 ],
		'Integra' : [ 1980,2001 ],
		'Legend' : [ 1980,1995 ],
		'MDX' : [ 2001,2010 ],
		'NSX' : [ 1991,2005 ],
		'RDX' : [ 2007,2010 ],
		'RL' : [ 1996,2010 ],
		'RSX' : [ 2002,2006 ],
		'SLX' : [ 1996,1999 ],
		'TL' : [ 1996,2010 ],
		'TSX' : [ 2004,2010 ],
		'Vigor' : [ 1992,1995 ]
	},
	'Volkswagen' : {
		'Cabrio' : [ 1993,1999 ]
	}
}

var formFieldMapping = {};

function formRefHelper(customField) {
	if(!formFieldMapping[customField]) {
		customField = customField.toLowerCase().split('_').join('.').replace('bodystyle','bodyStyle')
		formFieldMapping[customField] = $("#fastQuoteForm2 select[name^="+customField+"]").get(0)
	}
	return formFieldMapping[customField];
}

function scrubModels(make,model) {
	var formRef = document.forms['fastQuoteForm2'];
	var minYear = (formRefHelper("YEAR").value != '')?formRefHelper("YEAR").value:0;
	var addmodel = true;
	if ((typeof(rmodels[make]) != 'undefined') && (typeof(rmodels[make][model]) != 'undefined')) {
		if ((rmodels[make][model].length == 0) || ((minYear > rmodels[make][model][1]) )) {
			addmodel = false;
		}
	}
	return(addmodel);
}

var majorformfields = new Array('year','make','model','bodyStyle','price');
var minorformfields = new Array('transmission','mileage');
var searchscore = 2.5;

function fmcvalidate(msg) {
	var formRef = document.forms['fastQuoteForm2'];
	var fieldswdata = 0;
	for (i = 0; i < majorformfields.length; i++) {
		formelm = eval('formRef.'+majorformfields[i]);
		if (formelm.options[formelm.selectedIndex].value != '') { fieldswdata++; }
	}
	for (i = 0; i < minorformfields.length; i++) {
		formelm = eval('formRef.'+minorformfields[i]);
		if (formelm.options[formelm.selectedIndex].value != '') { fieldswdata += 0.5; }
	}
	if (fieldswdata < searchscore) { alert('Your search is too broad. Please select more search criteria.'); }
  else { validate(msg); }
}

function clearoptionlist(formelm) {
    var numopt = formelm.options.length;
	for (i = (numopt - 1); i >= 1; i--) {
		formelm.options[i] = null;
	}
}

function initClass() {
    $("#fastQuote2 .widgetWrap").prepend(fastquoteVelocity.message); //append message to top of form
    var formRef = document.forms['fastQuoteForm2'];
    var typeRef = formRefHelper("VEHICLE_TYPE");

    var typeInt;
	for (i = 0; i < types.length; i++) {
		if (i == 0) { typeInt = 0; }
		else if (i == 1) { typeInt = 2; }
		else { typeInt = 1; }
		typeRef.options[i] = new Option(types[i],typeInt);
	}
	if ((newmakes.length == 0) || (newmakes[0] == 'preowned')) { // disable new vehicle choices for preowned-only dealers
		typeRef.options[0] = null;
		typeRef.options[0] = null;
		typeRef.selectedIndex = 0;
		$(typeRef).hide();
	}
	else if (hasused == 0) { // disable used vehicle choices for new-only dealers
		typeRef.options[0] = null;
		typeRef.selectedIndex = 0;
		typeRef.options[1] = null;
		$(typeRef).hide();
	}
	else { // disable "new & preowned" searching for compliancy
		if ((newmakes[0].toLowerCase() == 'honda') || (newmakes[0].toLowerCase() == 'acura')) {
			typeRef.options[0] = null;
			typeRef.selectedIndex = 1;
			$(typeRef).hide();
		}
	}
}

function getYears(x) {
	var formRef = document.forms['fastQuoteForm2'];
	var typeRef = (typeof(formRefHelper("VEHICLE_TYPE")) != 'undefined')?formRefHelper("VEHICLE_TYPE"):formRef.type;

	var startyr = 0;
	if (typeRef.options[typeRef.selectedIndex].value == 2) {
		var today = new Date;
		var thisYear = today.getFullYear();
		startyr = (years.length - ((years[years.length-1] == thisYear)?2:3));
	}

	var j = 1;
	if (!x) {
		clearoptionlist(formRefHelper("YEAR"));
	}
    //years.reverse(); yearLabels.reverse(); //reverse year display
    for (i = startyr; i < years.length; i++) {
		formRefHelper("YEAR").options[j++] = new Option(yearLabels[i],years[i]);
	}
	if ((!x) && (startyr > 0)) {
		formRefHelper("YEAR").selectedIndex = 1;
	}
}

function getMakes(type) {
	getYears(); // easier this way than changing all the form onChange events
	var formRef = document.forms['fastQuoteForm2'];
	var typeRef = formRefHelper("VEHICLE_TYPE");

	if (!type) { type = typeRef.options[typeRef.selectedIndex].value; }
    clearoptionlist(formRefHelper("MAKE"));
    clearoptionlist(formRefHelper("MODEL"));
	formRefHelper("MAKE").disabled = false;

	if (type != 2) {
		var optionCnt = 0;
		if (newmakes.length > 0) {
			if (newmakes[0].toLowerCase() == 'honda') {
				var makeIndex = getVehiclesIndex('Honda');
				formRefHelper("MAKE").options[++optionCnt] = new Option(vehicles[makeIndex][0],vehicles[makeIndex][0]);
			}
	// not really necessary for  Acura since it is currently first anyway, but just in case that ever changes..
			else if (newmakes[0].toLowerCase() == 'acura') {
				var makeIndex = getVehiclesIndex('Acura');
				formRefHelper("MAKE").options[++optionCnt] = new Option(vehicles[makeIndex][0],vehicles[makeIndex][0]);
			}
		}
		for (i = 0; i < vehicles.length; i++) {
			if ((newmakes.length == 0) ||
					((newmakes[0].toLowerCase() != 'honda') && (newmakes[0].toLowerCase() != 'acura')) ||
					((newmakes[0].toLowerCase() == 'honda') && (vehicles[i][0] != 'Honda')) ||
					((newmakes[0].toLowerCase() == 'acura') && (vehicles[i][0] != 'Acura'))) {
				formRefHelper("MAKE").options[++optionCnt] = new Option(vehicles[i][0],vehicles[i][0]);
			}
		}
		formRefHelper("MODEL").disabled = true;
		if (typeof(formRefHelper("MINMILEAGE")) != 'undefined') {
			formRefHelper("MINMILEAGE").disabled = false;
			formRefHelper("MAXMILEAGE").disabled = false;
		}
	}
	else {
		for (i = 0; i < newmakes.length; i++) {
			var makeIndex = getVehiclesIndex(newmakes[i]);
			formRefHelper("MAKE").options[i+1] = new Option(vehicles[makeIndex][0],vehicles[makeIndex][0]);
		}
		if (formRefHelper("MAKE").options.length == 2) { // special case for 1 franchise - load models immediately
			formRefHelper("MAKE").selectedIndex = 1;
			getModels(formRefHelper("MAKE"));
			formRefHelper("MODEL").disabled = false;
		}
		else { formRefHelper("MODEL").disabled = true; }
		if (typeof(formRefHelper("MINMILEAGE")) != 'undefined') {
			formRefHelper("MINMILEAGE").disabled = true;
			formRefHelper("MAXMILEAGE").disabled = true;
		}
	}
}

function getModels() {
	var makeRef = formRefHelper("MAKE");
	var formRef = document.forms['fastQuoteForm2'];
	var typeRef = formRefHelper("VEHICLE_TYPE");
	var oldModel = formRefHelper("MODEL").value;

	clearoptionlist(formRefHelper("MODEL"));
	if (makeRef.selectedIndex != 0) { // hides model list not found message from getVehiclesIndex
		var makeIndex = getVehiclesIndex(makeRef.options[makeRef.selectedIndex].value);
		if (makeIndex == -1) { formRefHelper("MODEL").disabled = true; }
		else {
			var optionCnt = 0;
			for (i = 1; i < vehicles[makeIndex].length; i++) {
				if (scrubModels(vehicles[makeIndex][0],vehicles[makeIndex][i])) {
					formRefHelper("MODEL").options[++optionCnt] = new Option(vehicles[makeIndex][i],vehicles[makeIndex][i]);
				}
			}
			formRefHelper("MODEL").disabled = false;
		}
	}
	formRefHelper("MODEL").value = oldModel;
	if (formRefHelper("MODEL").selectedIndex < 0) { formRefHelper("MODEL").selectedIndex = 0; }
}

function getBodyStyles() {
	var formRef = document.forms['fastQuoteForm2'];
	for (i = 0; i < bodystyles.length; i++) {
		formRefHelper("BODYSTYLE").options[i+1] = new Option(bodystyles[i],bodystyles[i]);
	}
}

function getColors() { /* not used */
	var formRef = document.forms['fastQuoteForm2'];
	for (i = 0; i < colors.length; i++) {
		formRef.color.options[i+1] = new Option(colors[i],colors[i]);
	}
}

function getTransmissions() { // here to make it easier to implement any future changes
	var formRef = document.forms['fastQuoteForm2'];
	if(formRefHelper("TRANSMISSION") != undefined){
		formRefHelper("TRANSMISSION").options[1] = new Option('Automatic','Automatic');
		formRefHelper("TRANSMISSION").options[2] = new Option('Standard','Standard');
	}
}

function getPrices(x) {
    //not used, ported from carfinder
}

function getMileages(x) {
	var formRef = document.forms['fastQuoteForm2'];
	if (typeof(formRefHelper("MINMILEAGE")) != 'undefined') {
		for (i = 0; i < mileages.length; i++) {
			if (!x) { formRefHelper("MINMILEAGE").options[i+1] = new Option(mileageLabels[i],mileages[i]); }
			formRefHelper("MAXMILEAGE").options[i+1] = new Option(mileageLabels[i],mileages[i]);
		}
	}
}

function getVehiclesIndex(makename) {
	var makeIndex = -1;
	for (j = 0; j < vehicles.length; j++) {
		if (vehicles[j][0].toLowerCase().replace(/ /g,'') == makename.toLowerCase().replace(/ /g,'')) {
			makeIndex = j;
			break;
		}
	}
	if(makename === 'mercedes' && makeIndex === -1){
		makename = "mercedes-benz"
		for (j = 0; j < vehicles.length; j++) {
			if (vehicles[j][0].toLowerCase().replace(/ /g,'') == makename.toLowerCase().replace(/ /g,'')) {
				makeIndex = j;
				break;
			}
		}
	}
	if (makeIndex == -1) { alert('Model list not found for: '+makename+'.\n\nPlease contact Dealer.com support at 888-895-2994.'); }
	return(makeIndex);
}

function modelstylecheck(objRef) {
	var formRef = document.forms['fastQuoteForm2'];
	if ((formRefHelper("MODEL").value != '') && (formRefHelper("BODYSTYLE").value != '')) {
		if (objRef.name == 'model') { resetObj = formRefHelper("BODYSTYLE"); }
		else { resetObj = formRefHelper("MODEL"); }
		alert('Please select a Model **OR** a Bodystyle.\n\nResetting '+resetObj.name+'.');
		resetObj.selectedIndex = 0;
	}
}

function rangecheck(datatype) {
    return; //not shure ported from carfinder
    var formRef = document.forms['fastQuoteForm2'];
	var minRef = formRef.elements['min'+datatype];
	var maxRef = formRef.elements['max'+datatype]
	var minValue = parseInt(minRef.options[minRef.selectedIndex].value);
	var maxValue = maxRef.options[maxRef.selectedIndex].value;
	eval('get'+datatype+'s(true)');

	var i = 1;
	while (i < maxRef.options.length) {
		maxCompare = parseInt(maxRef.options[i].value);
		if (datatype == 'Year') { maxCompare++; }
		if (minValue >= maxCompare) {
			maxRef.options[i] = null;
		}
		else { i++; }
	}

	for (i = 1; i < maxRef.options.length; i++) {
		if (maxRef.options[i].value == maxValue) {
			maxRef.selectedIndex = i;
			break;
		}
	}
}

