var hasused;
var rmodels = {
    'Honda' : {
        'Accord Crosstour' :[ 2010,2010 ],
        'Accord Hybrid' :[ 2005,2007 ],
        'Accord' : [ 1982,2009 ],
        'Civic Hybrid': [ 2003,2009 ],
        'Civic': [ 1968,2009 ],
        'CR-V' : [ 1996,2009 ],
        'Del Sol' : [ 1992,1997 ],
        'EV Plus' : [ ], // scrapped after leases expired
        'Element' : [ 2003,2009 ],
        'Fit' : [ 2007,2009 ],
        'Insight' : [ 1999,2006 ],
        'Odyssey' : [ 1995,2009 ],
        'Passport' : [ 1993,2001 ],
        'Pilot' : [ 2003,2011 ],
        'Prelude' : [ 1980,2001 ],
        'Ridgeline' : [ 2006,2009 ],
        'S1999' : [ ], // no idea what this is
        'S2000' : [ 1999,2009 ]
    },
    'Acura' : {
        'CL' : [ 1997,2003 ],
        'EL' : [ 1997,2005 ],
        'Integra' : [ 1980,2001 ],
        'Legend' : [ 1980,1995 ],
        'MDX' : [ 2001,2010 ],//this will need updating once 2011 are available
        'NSX' : [ 1991,2005 ],
        'NSX-T' : [ 1995,2005 ],
        'RDX' : [ 2007,2011 ],//this will need updating once 2011 are available
        'RL' : [ 1996,2010 ],//this will need updating once 2011 are available
        'RSX' : [ 2002,2006 ],
        'SLX' : [ 1996,1999 ],
        'TL' : [ 1996,2010 ],//this will need updating once 2011 are available
        'TSX' : [ 2004,2010 ],//this will need updating once 2011 are available
        'Vigor' : [ 1992,1995 ],
		'ZDX': [2010, 2010]//this will need updating once 2011 are available
    },
    'Volkswagen' : {
        'Cabrio' : [ 1993,1999 ]
    },
    'Scion' : {
        'xA' : [ 2004,2006 ],
        'xB' : [ 2004,2100 ],
        'tC' : [ 2005,2100 ],
        'xD' : [ 2008,2100 ]
    },
    'Toyota' : {
        'Prius' : [ 2001,2009 ]
    }
};

function scrubModels(make, model) {
    var formRef = document.forms['carfinder'];
    var typeRef = formRef.elements['vehicle.type'].value;
    // DNA1151733 - Task: soniccresthonda : compliance issue with CarFinder
    // resetting minYear for Honda
    var minYear = (formRef.minYear.value !== '') ? formRef.minYear.value : (typeRef == 2 && make == 'Honda') ? formRef.minYear.options[1].value :  0;
    var maxYear = (formRef.maxYear.value !== '') ? formRef.maxYear.value : 2500; // good until the year 2500
    var addmodel = true;
    if (country == 'US' || country == 'UNITED STATES') {// scrubing for contry
        var makeIndex = getVehiclesIndex('Acura');
        for (var i = 1; i < vehicles[makeIndex].length; i++) {
            if (vehicles[makeIndex][i] == 'CSX') {
                vehicles[makeIndex].splice(i, i);
            }
        }
    }
    if ((typeof(rmodels[make]) != 'undefined') && (typeof(rmodels[make][model]) != 'undefined')) {
        // DNA1153817
        if ((make === 'Honda' && model === 'Insight')) {
			// DNA1153817
            //if( ( maxYear >= 2010 || minYear >= 2010 )){
                //  do nothing
			
			// DNA1435337
			if ((maxYear == 2010 || minYear == 2010)) {
				// do nothing
            } else if (((minYear > rmodels['Honda']['Insight'][1]) || (maxYear < rmodels['Honda']['Insight'][0]))) {
                addmodel = false;
            }
        }else if((rmodels[make][model].length === 0) || ((minYear > rmodels[make][model][1]) || (maxYear < rmodels[make][model][0]))) {
            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['carfinder'];
    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['carfinder'];
    var typeRef = formRef.elements['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].replace('&apos;', '\''), 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;
    }
    else if (hasused === 0) { // disable used vehicle choices for new-only dealers
        typeRef.options[0] = null;
        typeRef.selectedIndex = 0;
        typeRef.options[1] = null;
    }
    else { // disable "new & preowned" searching for compliancy
        if ((newmakes[0].toLowerCase() == 'honda') || (newmakes[0].toLowerCase() == 'acura')) {
            typeRef.options[0] = null;
            typeRef.selectedIndex = 1;
        }
    }
}

function getYears(x) {
    var formRef = document.forms['carfinder'];
    var typeRef = (typeof(formRef.elements['vehicle.type']) != 'undefined') ? formRef.elements['vehicle.type'] : formRef.type;
    var startyr = 0;
    var j = 1;
    var today = new Date;
    var thisYear = today.getFullYear();
    var thisMonth = today.getUTCMonth();
    if (!x) {
        clearoptionlist(formRef.minYear);
        clearoptionlist(formRef.maxYear);
    }
    //  DNA1146931
    //  hard coding the startyr for honda at 2009
    //  default logicad
    if (typeRef.options[typeRef.selectedIndex].value == 2) {
        if(newmakes != undefined && newmakes.length == 1 && newmakes[0] === "honda"){
            for(var index = 0; index < years.length; index++){
                if (years[index] === 2009){
                    startyr = index;
                }
            }
        }else{
            startyr = (years.length - ((years[years.length - 1] == thisYear) ? 2 : 3));
        }
    }
    for (i = startyr; i < years.length; i++) {
        if (!x) {
            formRef.minYear.options[j] = new Option(yearLabels[i], years[i]);
        }
        formRef.maxYear.options[j++] = new Option(yearLabels[i], years[i]);
    }


    if ((!x) && (startyr > 0)) {
        formRef.minYear.selectedIndex = 1;
        formRef.maxYear.selectedIndex = formRef.maxYear.length - 1;
        formRef.maxYear.selectedIndex = (formRef.maxYear.options.length > 3) ? 3 : (formRef.maxYear.options.length - 1);
    }
}

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

    if (!type) {
        type = typeRef.options[typeRef.selectedIndex].value;
    }
    clearoptionlist(formRef.make);
    clearoptionlist(formRef.model);
    formRef.make.disabled = false;

    if (type != 2) {
        var makeIndex, optionCnt = 0;
        if (newmakes.length > 0) {
            if (newmakes[0].toLowerCase() == 'honda') {
                makeIndex = getVehiclesIndex('Honda');
                formRef.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') {
                makeIndex = getVehiclesIndex('Acura');
                formRef.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.make.options[++optionCnt] = new Option(vehicles[i][0], vehicles[i][0]);
            }
        }
        formRef.model.disabled = true;
        if (typeof(formRef.minMileage) != 'undefined') {
            formRef.minMileage.disabled = false;
            formRef.maxMileage.disabled = false;
        }
    }
    else {
        for (i = 0; i < newmakes.length; i++) {
            makeIndex = getVehiclesIndex(newmakes[i]);
            formRef.make.options[i + 1] = new Option(vehicles[makeIndex][0], vehicles[makeIndex][0]);
        }
        if (formRef.make.options.length == 2) { // special case for 1 franchise - load models immediately
            formRef.make.selectedIndex = 1;
            getModels(formRef.make);
            formRef.model.disabled = false;
        }
        else {
            formRef.model.disabled = true;
        }
        if (typeof(formRef.minMileage) != 'undefined') {
            formRef.minMileage.disabled = true;
            formRef.maxMileage.disabled = true;
        }
    }
}

function getModels(makeRef) {
    var formRef = document.forms['carfinder'];
    var typeRef = formRef.elements['vehicle.type'];
    var oldModel = formRef.model.value;

    clearoptionlist(formRef.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.model.disabled = true;
        }
        else {
            var optionCnt = 0;
            for (i = 1; i < vehicles[makeIndex].length; i++) {
                if (scrubModels(vehicles[makeIndex][0], vehicles[makeIndex][i])) {
                    formRef.model.options[++optionCnt] = new Option(vehicles[makeIndex][i], vehicles[makeIndex][i]);
                }
            }
            formRef.model.disabled = false;
        }
    }
    formRef.model.value = oldModel;
    if (formRef.model.selectedIndex < 0) {
        formRef.model.selectedIndex = 0;
    }
}

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

function getColors() { /* not used */
    var formRef = document.forms['carfinder'];
    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['carfinder'];
    formRef.transmission.options[1] = new Option('Automatic', 'Automatic');
    formRef.transmission.options[2] = new Option('Standard', 'Standard');
}

function getPrices(x) {
    var formRef = document.forms['carfinder'];
    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]);
    }
}

function getMileages(x) {
    var formRef = document.forms['carfinder'];
    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]);
        }
    }
}

function getVehiclesIndex(makename) {
    var makeIndex = -1;
    if (makename.toLowerCase().replace(/ /g, '') === 'mercedes') {
        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['carfinder'];
    if ((formRef.model.value !== '') && (formRef.bodyStyle.value !== '')) {
        if (objRef.name == 'model') {
            resetObj = formRef.bodyStyle;
        }
        else {
            resetObj = formRef.model;
        }
        alert('Please select a Model **OR** a Bodystyle.\n\nResetting ' + resetObj.name + '.');
        resetObj.selectedIndex = 0;
    }
}

function rangecheck(datatype) {
    var formRef = document.forms['carfinder'];
    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;
        }
    }
}

function submitCarfinder() {
    //alert('Ouch, you  clicked me');
    var formRef = document.forms['carfinder'];
    if (formRef.bodyStyle.value !== '') {
        validate($('#carfinder')[0]);
        return false;
    }
    if (formRef.minPrice.value !== '' && formRef.maxPrice.value !== '') {
        validate($('#carfinder')[0]);
        return false;
    }
    if (formRef.minMileage.value !== '' && formRef.maxMileage.value !== '') {
        validate($('#carfinder')[0]);
        return false;
    }
    if (formRef.minYear.value !== '' && formRef.maxYear.value !== '') {
        validate($('#carfinder')[0]);
        return false;
    }
    if (formRef.make.value !== '' && formRef.model.value !== '') {
        validate($('#carfinder')[0]);
        return false;
    }
    alert('Please select a make, bodystyle or a year, mileage, price range');
    return false;
}


