// script for building the Cars.com select fields


// variables used to change selection when "===" selected
var nModelPrevSelected = new Number(0);
var nMakePrevSelected = new Number(0);

var makesName = new Array();
// used as a cross reference table for name and number
// the following are used as a 2D table for makes and models
var makes = new Array();
var models = new Array();
// load the arrays and construct the selections on the page

function initDocument()
{
initCars();
fillMakeSelect();
fillModelSelect( "1" );       
}

// create car make objects and fill arrays
function K( makenumber, make )
{
makesName[make] = new MakesName(make,makenumber);
makes[makenumber] = new Make( make,makenumber );
}

// make name constructor
function MakesName( makeName,makeNumber )
{
this.makeNumber = makeNumber;
}

// make constructor
function Make( makeName,makeNumber )
{
this.makeName = makeName;
this.makeNumber = makeNumber;
// create array associated with makes
this.models = new Array();
}

// construct make selection on page
function fillMakeSelect(  )
{

document.QuickForm.mknm.options.selectedIndex = 0;
// init selection index
document.QuickForm.mknm.options.length = 1;
// clear select

// fill selection with makes
var i = 0;
for ( makesIdx in makes )
{
var aMake = makes[makesIdx];
document.QuickForm.mknm.options[ i ] = 
new Option( aMake.makeName, aMake.makeName );
i++;
}
document.QuickForm.mknm.options[ i ] = new Option( "===============" , "" );

document.QuickForm.mknm.options[ 0 ].selected = true;
// select first item
}

// create car model objects and fill arrays
function D( makeNumber, model )
{
var modelObj = new Model( model, makeNumber);
makes[makeNumber].models[model] = modelObj;
}

// model constructor
function Model( model,makeNumber )
{
this.modelName = model;
this.makeNumber = makeNumber;
}

// construct model selection on page
function fillModelSelect( makeNbr )
{
document.QuickForm.mdnm.options.selectedIndex = 0;
document.QuickForm.mdnm.options.length = 1; 
var selectedModels;

selectedModels = (makes[makeNbr].models);
var i=0;
document.QuickForm.mdnm.options[ i ] = new Option( "Modelo" , "Modelo" );
i++;
for ( aModelIdx in selectedModels )
{
aModel = selectedModels[ aModelIdx ];
document.QuickForm.mdnm.options[ i ] = 
new Option( aModel.modelName, aModel.modelName );
i++;
}
document.QuickForm.mdnm.options[ i ] = new Option( "===============" , "" );

document.QuickForm.mdnm.options[ 0 ].selected = true;
}

// when make selected fill model selection
function selectedMake( aSelectedMake )
{
var selectedIdx = aSelectedMake.selectedIndex;
var selectedMakeName = (aSelectedMake.options[ selectedIdx ]).value;

var i = 0;
for (aIdx in makesName)
{
if (aIdx == selectedMakeName)
i++;
}

if (i == 0)
{
Populate(document.QuickForm.mknm,0);
}		
else
{
var makeNBR = makesName[selectedMakeName].makeNumber;
// use cross reference table to get makeintid
fillModelSelect( makeNBR );	
}
}
function PopulateClient(listBox, prevSelected)
{
var selectedValue = new String(listBox.options[listBox.selectedIndex].value);

with (document.QuickForm)
{                       
if(listBox.selectedIndex != listBox.options.length-1)
selectedMake(listBox);
else
{
listBox.options[prevSelected].selected = true;
selectedMake(listBox);
}
}
}

// check user selection on model selection list
function validateModel()
{
with (document.QuickForm)
{
if(mdnm.options[mdnm.selectedIndex].value == "")
mdnm.options[nModelPrevSelected].selected = true;
}
}

function Validate() {
with (document.QuickForm) {
//allows us to quantify use of widget
// change mypngtag to your profile name
// example: chitrib.png
var random_number = Math.round( Math.random() * 1000000000 );
document.images["tracker"].src = "http://www.cars.com/rd/usertrack/widgets/mypngtag.png?rand=" +
random_number;
// check user input for zipcode entry field
if (zc.value == "") {zc.value = prompt ("Please enter a Zip Code:","");}
}

}
function processError()
{
with (document.QuickForm)
{
if(mknm.options[mknm.selectedIndex].value != "")
{
Populate(mknm,0);
}
else
mknm.options[0].selected = true;			 
}
return true;
}
