//using moo class and vector
/****************************************** CLASSES *********************************************/
var certifiedCombos = new Class({
    initialize: function(){
        this.makes = new Array();
    }
});
var Make = new Class({
    initialize: function(id, display){
        this.models =  new Array();
		this.display = display;
		this.id = id;
    }
});
var Model = new Class({
    initialize: function(id, display){
        this.years = new Array();
		this.display = display;
		this.id = id;
    }
});

function show(){
	var i, j, k;
	var jmakes, kmodels, iyears, out=" ";
	jmakes = this.makes.length;

	for(j=0; j < jmakes; j++){
		out = out + "\n\n" + this.makes[j].display + "\n\n";
		kmodels = this.makes[j].models.length;
		for(k=0; k < kmodels; k++){
			out = out + "\n" + this.makes[j].models[k].display + "/";
			iyears = this.makes[j].models[k].years.length;
			for (i=0; i < iyears; i++){
				out = out + this.makes[j].models[k].years[i] + "-";
			}
		}
	}
	alert(out);
}

//return the position of the id inside the makes vector, if doesn't exists return -1
function indexOfMake(makeId){
	for(i=0; i<this.makes.length; i++){
		if(this.makes[i].id == makeId){
			return i;
		}
	}
	return -1;
}
function indexOfModel(modelId){
	for(i=0; i<this.models.length; i++){
		if(this.models[i].id == modelId){
			return i;
		}
	}
	return -1;
}
function indexOfYear(yearId){
	for(i=0; i<this.years.length; i++){
		if(this.years[i] == yearId){
			return i;
		}
	}
	return -1;
}

certifiedCombos.prototype.indexOfMake = indexOfMake;
certifiedCombos.prototype.show = show;
Make.prototype.indexOfModel = indexOfModel;
Model.prototype.indexOfYear = indexOfYear;

function loadCombos(){
	fillMakes();
	loadYears();
	document.forms['cpoYMMForm'].makes[1].selected=true;
	document.forms['cpoYMMForm'].makes[0].selected=false;
	var searchTypeEL = new Element('input', {
		id: 'searchType',
		name: 'searchType',
		value: 'QS',
		type: 'hidden'
	});
	$(document.forms['cpoYMMForm']).grab(searchTypeEL);
	fillModels(1);
	//combosData.show();
}

function clearSelect(select){
	select.length = 0;
}

function setSelectToDefault(select, defaultValue, defaultText){
	clearSelect(select);
	select.options[0] = new Option(defaultText,defaultValue);
}

function fillMakes(){
	var i, imakes, select;
	select = document.forms['cpoYMMForm'].makes;
	clearSelect(select);
	setSelectToDefault(document.forms['cpoYMMForm'].models, "","MODEL");
	setSelectToDefault(document.forms['cpoYMMForm'].years, "","YEAR");
	imakes = combosData.makes.length;
	select.options[0] = new Option("MAKE","");
	for(i=0; i < imakes; i++){
		select.options[i+1] = new Option(combosData.makes[i].display,combosData.makes[i].id);
	}
}

function fillModels(selectedIndex){
	var i, imodels, select;
	select = document.forms['cpoYMMForm'].models;
	clearSelect(select);
	setSelectToDefault(document.forms['cpoYMMForm'].years, "","YEAR");
	actMakeObj = combosData.makes[document.forms['cpoYMMForm'].makes.selectedIndex-1];
	imodels = actMakeObj.models.length;
	select.options[0] = new Option("MODEL","");
	for(i=0; i < imodels; i++){
		select.options[i+1] = new Option(actMakeObj.models[i].display, actMakeObj.models[i].id);
	}
}

function fillYears(selectedIndex){
	var i, iyears, select, actModelObj;
	var yearText = "";
	if (selectedIndex>0){
		select = document.forms['cpoYMMForm'].years;
		clearSelect(select);
		actModelObj = combosData.makes[document.forms['cpoYMMForm'].makes.selectedIndex-1].models[selectedIndex-1];
		iyears = actModelObj.years.length;
		select.options[0] = new Option("All years","2003");
		for (i=0; i < iyears; i++){
			if(i==0){yearText = ""}else{yearText = " or newer";}
			select.options[i+1] = new Option(actModelObj.years[i]+yearText,actModelObj.years[i]);
		}
	}else{
		 setSelectToDefault(document.forms['cpoYMMForm'].years, "","YEAR");
		}
}

function validationForm() {
	document.getElementById("vehilceErrorMsg").innerHTML = "&nbsp;";
	document.getElementById("zipErrorMsg").innerHTML = "&nbsp;";
	var errorMsg = "";
	var returnStatus = true;
	if((document.forms['cpoYMMForm'].Make.options[document.forms['cpoYMMForm'].Make.selectedIndex].value == "") ||
   	   (document.forms['cpoYMMForm'].selectedModelList.options[document.forms['cpoYMMForm'].selectedModelList.selectedIndex].value == "") ||
   	   (document.forms['cpoYMMForm'].startYear.options[document.forms['cpoYMMForm'].startYear.selectedIndex].value == "")) {
		errorMsg = "Please select Model and Year.";
   	}
	if(errorMsg.length > 0) {
		document.getElementById("vehilceErrorMsg").innerHTML = errorMsg;
		css.addClassName(document.getElementById("vehilceErrorMsg"), "active");
	}
	var zipErrorMsg = "";
	if(!validateZip(document.forms['cpoYMMForm'].zipCode.value)){
		return false;
	}
	if(errorMsg.length <= 0 && zipErrorMsg.length<=0){
		css.removeClassName(document.getElementById("vehilceErrorMsg"), "active");
		css.removeClassName(document.getElementById("zipErrorMsg"), "active");
		document.forms['cpoYMMForm'].submit();
	} else {
		return false;
	}
}
function trackingCPOAdvanced(){
	var divisionObj=BRAND.toUpperCase();
	clickTrack({pageName: divisionObj+' | DIVISIONAL | CPO | CPO HOME', prop1: 'DIVISIONAL', prop2:'CPO', prop3: 'DIVISIONAL | CPO', prop4:'CPO HOME', prop5:'CPO | CPO HOME', prop6: 'DIVISIONAL | CPO | CPO HOME', prop7:'CPO VEHICLE SEARCH', prop8: 'CPO HOME | CPO VEHICLE SEARCH', prop9:'CPO | CPO HOME | CPO VEHICLE SEARCH', prop10:'DIVISIONAL | CPO | CPO HOME | CPO VEHICLE SEARCH',prop11:'CPO COMAPARE',prop12:'CPO VEHICLE SEARCH | CPO COMAPARE',prop13:'CPO HOME | CPO VEHICLE SEARCH | CPO COMAPARE',prop14:'CPO | CPO HOME | CPO VEHICLE SEARCH | CPO COMAPARE',prop15:'DIVISIONAL | CPO | CPO HOME | CPO VEHICLE SEARCH | CPO COMAPARE',prop25:divisionObj, prop26:(new Date()).getHours(), prop27: weekday[(new Date()).getDay()]});
}
