//*******************************************
//  Copyright Dealer.com Websystems
//  carfinder.js
//  author: \/\/ick
//  date: 9.10.2004
//********************************************

var bodystyles = new Array("Convertible","Coupe","Hatchback","Mini-Van","Motorcycle","RV","SUV","Sedan","Sport","Sportcross","Truck","Wagon");
var colors = new Array("Black","Blue","Brown","Champagne","Green","Grey","Orange","Purple","Red","Silver","Tan","White","Yellow");
var priceLabels = new Array("0 - 3,000","3,000 - 6,000","6,000 - 9,000","9,000 - 12,000","12,000 - 15,000","15,000 - 18,000","18,000 - 21,000","21,000 - 24,000","24,000 - 27,000","27,000 - 30,000","30,000 - 33,000","33,000 - 36,000","36,000 - 39,000","39,000 - 42,000","42,000 - 45,000","45,000 - 48,000","48,000 - 51,000","51,000 - 54,000","54,000 - 57,000","57,000 - 60,000","60,000 - 63,000","63,000 - 66,000","66,000 - 69,000","69,000 - 72,000","72,000 - 75,000","75,000 - 78,000","78,000 - 81,000","81,000 - 84,000","84,000 - 87,000","87,000 - 90,000","90,000 - 10000000");
var prices = new Array("0 - 3000","3000 - 6000","6000 - 9000","9000 - 12000","12000 - 15000","15000 - 18000","18000 - 21000","21000 - 24000","24000 - 27000","27000 - 30000","30000 - 33000","33000 - 36000","36000 - 39000","39000 - 42000","42000 - 45000","45000 - 48000","48000 - 51000","51000 - 54000","54000 - 57000","57000 - 60000","60000 - 63000","63000 - 66000","66000 - 69000","69000 - 72000","72000 - 75000","75000 - 78000","78000 - 81000","81000 - 84000","84000 - 87000","87000 - 90000","90000 - 10000000");
var mileageLabels = new Array("0","10,000","20,000","30,000","40,000","50,000","60,000","70,000","80,000","90,000","100,000","110,000","120,000","130,000","140,000","150,000");
var mileages = new Array("0","10000","20000","30000","40000","50000","60000","70000","80000","90000","100000","110000","120000","130000","140000","150000");
var yearLabels = new Array("2004","2003","2002","2001","2000","1999","1998","1997","1996","1995","1994","1993","1992","1991","1990","1989","1988","1987","1986","1985","1984");
var years = new Array("2004","2003","2002","2001","2000","1999","1998","1997","1996","1995","1994","1993","1992","1991","1990","1989","1988","1987","1986","1985","1984");

var hasused;

var oldmodels = new Array();
oldmodels[oldmodels.length] = new Array('Honda','Prelude','Passport','EV Plus','Del Sol','S1999');

function scrubModels(makeIndex,modelIndex) {
	var addmodel = true;
	for (j = 0; j < oldmodels.length; j++) {
		if (vehicles[makeIndex][0] == oldmodels[j][0]) {
			for (k = 1; k < oldmodels[j].length; k++) {
				if (vehicles[makeIndex][modelIndex] == oldmodels[j][k]) {
					addmodel = false;
					break;
				}
			}
			break;
		}
	}
	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['carfinderForm'];
	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() {
	var formRef = document.forms['carfinderForm'];
	var typeInt;
	for (i = 0; i < types.length; i++) {
		if (i == 0) { typeInt = 0; }
		else if (i == 1) { typeInt = 2; }
		else { typeInt = 1; }
		formRef.elements['vehicle_type'].options[i] = new Option(types[i],typeInt);
	}
		
	if ((newmakes.length == 0) || (newmakes[0] == 'preowned')) { // disable new vehicle choices for preowned-only dealers
		formRef.elements['vehicle_type'].options[0] = null;
		formRef.elements['vehicle_type'].options[0] = null;
		formRef.elements['vehicle_type'].selectedIndex = 0;
	}
	else if (hasused == 0) { // disable used vehicle choices for new-only dealers
		formRef.elements['vehicle_type'].options[0] = null;
		formRef.elements['vehicle_type'].selectedIndex = 0;
		formRef.elements['vehicle_type'].options[1] = null;
	}
	else { // disable "new & preowned" searching for compliancy
		if ((newmakes[0].toLowerCase() == 'honda') || (newmakes[0].toLowerCase() == 'acura')) {
			formRef.elements['vehicle_type'].options[0] = null;
			formRef.elements['vehicle_type'].selectedIndex = 1;
		}
	}
}

function getYears(x) {
	var formRef = document.forms['carfinderForm'];
	var typeRef = formRef.elements['vehicle_type'];
	var startyr = (typeRef.options[typeRef.selectedIndex].value == 2)?(years.length - 2):0;
	var j = 1;
	if (typeof(formRef.myear) != 'undefined') {
		if (!x) {
			clearoptionlist(formRef.myear);
			clearoptionlist(formRef.mxyear);
		}
		for (i = startyr; i < years.length; i++) {
			if (!x) { formRef.myear.options[j] = new Option(yearLabels[i],years[i]); }
			formRef.mxyear.options[j++] = new Option(yearLabels[i],years[i]);
		}
		if ((!x) && (startyr > 0)) {
			formRef.myear.selectedIndex = 1;
			formRef.mxyear.selectedIndex = 2;
		}
	}
	else {
		for (i = startyr; i < years.length; i++) {
			formRef.year.options[j++] = new Option(yearLabels[i],years[i]);
		}
	}
}

function getyears(x) {
	var formRef = document.forms['carfinderForm'];
	var typeRef = formRef.elements['vehicle_type'];
	var startyr = (typeRef.options[typeRef.selectedIndex].value == 2)?(years.length - 2):0;
	var j = 1;
	if (typeof(formRef.myear) != 'undefined') {
		if (!x) {
			clearoptionlist(formRef.myear);
			clearoptionlist(formRef.mxyear);
		}
		for (i = startyr; i < years.length; i++) {
			if (!x) { formRef.myear.options[j] = new Option(yearLabels[i],years[i]); }
			formRef.mxyear.options[j++] = new Option(yearLabels[i],years[i]);
		}
		if ((!x) && (startyr > 0)) {
			formRef.myear.selectedIndex = 1;
			formRef.mxyear.selectedIndex = 2;
		}
	}
	else {
		for (i = startyr; i < years.length; i++) {
			formRef.year.options[j++] = new Option(yearLabels[i],years[i]);
		}
	}
}

function getMakes(type) { // does not use form object reference for easier onLoad call
	getYears(); // easier this way than changing all the form onChange events
	var formRef = document.forms['carfinderForm'];
	if (!type) { type = formRef.elements['vehicle_type'].options[formRef.elements['vehicle_type'].selectedIndex].value; }
  clearoptionlist(formRef.f_make);
  clearoptionlist(formRef.f_model);
	formRef.f_make.disabled = false;

	if (type != '' || type != null) {
		var optionCnt = 0;
		if (newmakes.length > 0) {
			if (newmakes[0].toLowerCase() == 'honda') {
				var makeIndex = getVehiclesIndex('Honda');
				formRef.f_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');
				formRef.f_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'))) {
				formRef.f_make.options[++optionCnt] = new Option(vehicles[i][0],vehicles[i][0]);
			}
		}
		formRef.f_model.disabled = true;
		with (formRef) {
			if (typeof(minMileage) != 'undefined') {
				minMileage.disabled = false;
				maxMileage.disabled = false;
			}
			else if (typeof(mileage) != 'undefined') {
				mileage.disabled = false;
			}
		}
	}
	else {
		for (i = 0; i < newmakes.length; i++) {
			var makeIndex = getVehiclesIndex(newmakes[i]);
			formRef.f_make.options[i+1] = new Option(vehicles[makeIndex][0],vehicles[makeIndex][0]);
		}
		if (formRef.f_make.options.length == 2) { // special case for 1 franchise - load models immediately
			formRef.f_make.selectedIndex = 1;
			getModels(formRef.f_make);
			formRef.f_model.disabled = false;
		}
		else { formRef.f_model.disabled = true; }
		with (formRef) {
			if (typeof(minMileage) != 'undefined') {
				minMileage.disabled = true;
				maxMileage.disabled = true;
			}
			else if (typeof(mileage) != 'undefined') {
				mileage.disabled = true;
			}
		}
	}
}

function getModels(makeRef) {
	var formRef = document.forms['carfinderForm'];
	clearoptionlist(formRef.f_model);
	if (makeRef.selectedIndex != 0) { // hides model list not found message from getVehiclesIndex
		var makeIndex = getVehiclesIndex(makeRef.options[makeRef.selectedIndex].value);
		if (makeIndex == -1) { formRef.f_model.disabled = true; }
		else {
			var type = document.forms['carfinderForm'].elements['vehicle_type'].value;
			var optionCnt = 0;
			for (i = 1; i < vehicles[makeIndex].length; i++) {
				if ((type != 2) || ((type == 2) && (scrubModels(makeIndex,i)))) {
					formRef.f_model.options[++optionCnt] = new Option(vehicles[makeIndex][i],vehicles[makeIndex][i]);
				}
			}
			formRef.f_model.disabled = false;
		}
	}
}


function getBodyStyles() {
	var formRef = document.forms['carfinderForm'];
	for (i = 0; i < bodystyles.length; i++) {
		formRef.f_bodyStyle.options[i+1] = new Option(bodystyles[i],bodystyles[i]);
	}
}

function getColors() {
	var formRef = document.forms['carfinderForm'];
	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['carfinderForm'];
	formRef.transmission.options[1] = new Option('Automatic','Automatic');
	formRef.transmission.options[2] = new Option('Standard','Standard');
}

function getPrices(x) {
	var formRef = document.forms['carfinderForm'];
	if (typeof(formRef.minPrice) != 'undefined') {
		for (i = 0; i < prices.length; i++) {
			if (!x) { formRef.minPrice.options[i+1] = new Option('$ '+priceLabels[i],prices[i]); }
			formRef.maxPrice.options[i+1] = new Option('$ '+priceLabels[i],prices[i]);
		}
	}
	else {
		for (i = 0; i < prices.length; i++) {
			formRef.price.options[i+1] = new Option('$ '+priceLabels[i],prices[i]);
		}
	}
}

function getMileages(x) {
	var formRef = document.forms['carfinderForm'];
	if (typeof(formRef.minMileage) != 'undefined') {
		for (i = 0; i < mileages.length; i++) {
			if (!x) { formRef.minMileage.options[i+1] = new Option(mileageLabels[i],mileages[i]); }
			formRef.maxMileage.options[i+1] = new Option(mileageLabels[i],mileages[i]);
		}
	}
	else {
		for (i = 0; i < mileages.length; i++) {
			formRef.mileage.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 (makeIndex == -1) { alert('Model list not found for: '+makename+'.\n\nPlease contact Dealer.com support at 888-895-2994.'); }
	return(makeIndex);
}

function modelstylecheck(objRef) {
	
	
	with(document.forms['carfinderForm']) {
		if ((f_model.value != '') && (f_bodyStyle.value != '')) {
			if (objRef.name == 'f_model') 
			{ 
			resetObj = f_bodyStyle;
			}
			else {
				resetObj = f_model; 
				}
			
			alert('Please Select a Model **OR** a Bodystyle.\n\nResetting Model.');
			resetObj.selectedIndex = 0;
		}
	}
}

function rangecheck(datatype) {
	
	var minRef = document.forms['carfinderForm'].elements['m'+datatype];
	
	var maxRef = document.forms['carfinderForm'].elements['mx'+datatype]
	var minValue = parseInt(minRef.options[minRef.selectedIndex].value);
	var maxValue = parseInt(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;
		}
	}
}

function rangecheck_old(datatype) {
	
	var minRef = document.forms['carfinderForm'].elements['min'+datatype];
	
	var maxRef = document.forms['carfinderForm'].elements['max'+datatype]
	var minValue = parseInt(minRef.options[minRef.selectedIndex].value);
	var maxValue =parseInt( 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;
		}
	}
}


