//////////////////////Global Vars//////////////////////////////
var BLANK = "";
var BASE_THUMBNAIL_PATH = BASE_CONTEXT + "/assets/en/images/vehicles/compare/thumbnails/";
var THUMBNAIL_IMAGE_NAME = "vehicleImage";

/*****Selects****/
var SEPARATOR = " ";
var SELECT_ID_YEAR = "sYear";
var SELECT_SHOW_OPTIONAL_YEAR = true;

var SELECT_ID_BRAND = "sBrand";
var SELECT_SHOW_OPTIONAL_BRAND = true;

var SELECT_ID_SUBBRAND = "sSubBrand";
var SELECT_SHOW_OPTIONAL_SUBBRAND = true;

var SELECT_ID_TRIM = "sTrim";
var SELECT_SHOW_OPTIONAL_TRIM = true;

var selectData = null; //Data for Select
var selectedYear = false;
var selectedBrand = false;
var selectedSubBrand = false;
var selectedTrim = false;

//Return Array without repeated values
function arrayNotRepeat(data){
	var tmp = new Array();
	var index = 1;
	tmp[0] = data[0];
	for(i=1;i<data.length;i++){
		value = data[i];
		if(value!=""){
			repeat = false;
			for(k=0;k<tmp.length;k++){
				if(tmp[k] == value){
					repeat = true;
				}
			}
			if(!repeat){
				tmp[index++] = value;
			}
		}
	}
	return tmp;
}

//Get the Select Value From Id
function getSelectValue(id){
	try{
		if($(id).length > 0)
			return($(id).options[$(id).selectedIndex].value);
		else
			return null;
	}catch(e){
		return null;
	}
}


//Show data in the select (id)
function showDataSelect(data,id,opt,msg,value){
	$(id).length = 0;
	if(data.length==1 && !(opt)){
		optTmp = new Option(data[0],data[0],"","");
		$(id)[0] = optTmp;
		eval($(id).getAttribute("onchange"));
	}else{
		index = 0;
		if(opt){
			optTmp = new Option(msg,msg,"","");
			$(id)[index++] = optTmp;
		}
		for(i=0;i<data.length;i++){
			if (data[i].toLowerCase() === 'lucerne' && (INTERNAL_URL === '/tools/comparator/selectVehicle.do' || '/tools/messaging/raq.do' || '/tools/messaging/rat.do'))
			{
				mrm.$.noop();
			} else if (data[i].toLowerCase() === 'verano' && (INTERNAL_URL === '/tools/comparator/selectVehicle.do'))
			{
				mrm.$.noop();
			} else {
				optTmp = new Option(data[i],data[i],"","");
				if(value!=undefined)
					optTmp = new Option(data[i],value[i],"","");
				$(id)[index++] = optTmp;
			}
		}
	}
	if(!opt)
		eval($(id).getAttribute("onchange"));
}
/**********************************Parser***************************************/

//Parse Select XML (Only parse)
function parseSelectComplete(xmlDoc){
	selectData = xmlDoc;
	showSelects();
}

//Insert Dealers (Make the Request thosught makeRequest())
function insertSelectData(selectDataUrl){
	makeRequest(selectDataUrl,"parseSelectComplete","xml","vehicleLoadFail");
}

//Set Years
function setYearSelect(topYear){
	if (!topYear) {
		topYear = 9999;
	}
	pos = 0;
	data = new Array();
	var years = selectData.getElementsByTagName("year");
	for(i=0;i<years.length;i++){
		var year = years[i].childNodes.item(0).data;
		if (year < topYear) {
			data[pos++] = year;
		}
	}
	showDataSelect(arrayNotRepeat(data),SELECT_ID_YEAR,SELECT_SHOW_OPTIONAL_YEAR,SELECT_OPTIONAL_YEAR);
}
//Set Brands
function setBrandSelect(year){
	var selectedsYear = new Array();
	var data = new Array();
	var value = new Array();
	var index = 0;
	var years = selectData.getElementsByTagName("year");
	for(i=0;i<years.length;i++){
		if(years[i].childNodes.item(0).data==year){
			selectedsYear[index++] = years[i];
		}
	}
	index=0;
	for(i=0;i<selectedsYear.length;i++){
		var brand = selectedsYear[i].parentNode;
		value[index] = brand.getElementsByTagName("brandName").item(0).childNodes.item(0).data;
		data[index++] = brand.getElementsByTagName("displayName").item(0).childNodes.item(0).data;
	}
	showDataSelect(arrayNotRepeat(data),SELECT_ID_BRAND,SELECT_SHOW_OPTIONAL_BRAND,SELECT_OPTIONAL_BRAND, arrayNotRepeat(value));
}
//Set SubBrand
function setSubBrandSelect(year,brand){
	var selectedsYear = new Array();
	var selectedsBrand = new Array();
	var data = new Array();
	var index = 0;
	var years = selectData.getElementsByTagName("year");
	var subBrandName = "";
	for(i=0;i<years.length;i++){
		if(years[i].childNodes.item(0).data==year){
			selectedsYear[index++] = years[i];
		}
	}
	index=0;
	for(i=0;i<selectedsYear.length;i++){
		if(selectedsYear[i].parentNode.getElementsByTagName("brandName").item(0).childNodes.item(0).data==brand){
			selectedsBrand[index++] = selectedsYear[i].parentNode;
		}
	}
	index = 0;
	for(i=0;i<selectedsBrand.length;i++){
		var subBrand = selectedsBrand[i].getElementsByTagName("subbrand");
		for(k=0;k<subBrand.length;k++){
			try{
				cabType = subBrand[k].getElementsByTagName("cabType").item(0).childNodes.item(0).data;
			}catch(e){
				cabType = BLANK;
			}
			try{
				driveType = subBrand[k].getElementsByTagName("driveType").item(0).childNodes.item(0).data;
			}catch(e){
				driveType = BLANK;
			}
			try{
				boxType = subBrand[k].getElementsByTagName("boxType").item(0).childNodes.item(0).data;
			}catch(e){
				boxType = BLANK;
			}
			subBrandName = (driveType + SEPARATOR + cabType + SEPARATOR + boxType).trim();
			if ("" != subBrandName) {
				data[k] = subBrandName;
			} else {
				data[k] = "Standard";
			}
		}
	}
	showDataSelect(arrayNotRepeat(data),SELECT_ID_SUBBRAND,SELECT_SHOW_OPTIONAL_SUBBRAND,SELECT_OPTIONAL_SUBBRAND);
}

//Set Cab and DriveType
function setTrimSelect(year,brand,subbrand){
	var selectedsYear = new Array();
	var selectedsBrand = new Array();
	var selectedsSubBrand = new Array();
	var data = new Array();
	var value = new Array();
	var index = 0;
	var years = selectData.getElementsByTagName("year");
	var subBrandName = "";

	for(i=0;i<years.length;i++){
		if(years[i].childNodes.item(0).data==year){
			selectedsYear[index++] = years[i];
		}
	}
	index=0;
	for(i=0;i<selectedsYear.length;i++){
		if(selectedsYear[i].parentNode.getElementsByTagName("brandName").item(0).childNodes.item(0).data==brand){
			selectedsBrand[index++] = selectedsYear[i].parentNode;
		}
	}
	index = 0;
	for(i=0;i<selectedsBrand.length;i++){
		var subBrand = selectedsBrand[i].getElementsByTagName("subbrand");
		for(k=0;k<subBrand.length;k++){
			try{
				cabType = subBrand[k].getElementsByTagName("cabType").item(0).childNodes.item(0).data;
			}catch(e){
				cabType = BLANK;
			}
			try{
				driveType = subBrand[k].getElementsByTagName("driveType").item(0).childNodes.item(0).data;
			}catch(e){
				driveType = BLANK;
			}
			try{
				boxType = subBrand[k].getElementsByTagName("boxType").item(0).childNodes.item(0).data;
			}catch(e){
				boxType = BLANK;
			}
			subBrandName = (driveType + SEPARATOR + cabType + SEPARATOR + boxType).trim();

			if ("Standard" == subbrand) {
				subbrand = "";
			}

			if(subBrandName == subbrand) {
				selectedsSubBrand[index++] = subBrand[k];
			}
		}
	}

	index = 0;
	for(i=0;i<selectedsSubBrand.length;i++){
		var styles = selectedsSubBrand[i].getElementsByTagName("style");
		for(k=0;k<styles.length;k++){
			data[index] = styles[k].getElementsByTagName("name").item(0).childNodes.item(0).data;
			value[index] = styles[k].getElementsByTagName("pvc").item(0).childNodes.item(0).data;
			index++;
		}
	}
	showDataSelect(arrayNotRepeat(data),SELECT_ID_TRIM,SELECT_SHOW_OPTIONAL_TRIM,SELECT_OPTIONAL_TRIM,arrayNotRepeat(value));
}

//Change brand function
function onChangeYear(){
	selectedBrand = false;
	selectedSubBrand = false;
	selectedTrim = false;
	emptySelect(SELECT_ID_BRAND, SELECT_OPTIONAL_BRAND);
	emptySelect(SELECT_ID_SUBBRAND, SELECT_OPTIONAL_SUBBRAND);
	emptySelect(SELECT_ID_TRIM, SELECT_OPTIONAL_TRIM);
	if(!($(SELECT_ID_YEAR).selectedIndex == 0 && SELECT_SHOW_OPTIONAL_YEAR)){
		var year = getSelectValue(SELECT_ID_YEAR);
		if ($("dealersData")) {
			switchWinddownDealers(year);
		}
		setBrandSelect(year);
		selectedYear = true;
	}else{
		selectedYear = false;
	}
}

function switchWinddownYears(dealerType) {
	var currentSelectedValue = $(SELECT_ID_YEAR).value;
	if (dealerType == 'WD') {
		setYearSelect(WINDDOWN_TOP_YEAR);
	} else {
		setYearSelect();
	}
	for (i=0; i < $(SELECT_ID_YEAR).options.length; i++) {
		if ($(SELECT_ID_YEAR).options[i].value == currentSelectedValue) {
			$(SELECT_ID_YEAR).selectedIndex = i;
			break;
		}
	}
}

function switchWinddownDealers(year) {

	var displayBlockArr = new Array();
	$("dealersData").getElements("table").each(function(item, index){
		item.removeClass("altDealerRow");
		if ((year >= WINDDOWN_TOP_YEAR) && item.hasClass("WD")) {
			item.set("styles",{"display":"none"});
		} else {
			item.set("styles",{"display":"block"});
			displayBlockArr.extend([item]);
		}
	});

	var tmpClassId = 0;
	$A(displayBlockArr).each(function(item, index){
		if(tmpClassId == 0){
			item.addClass("altDealerRow");
			tmpClassId = 1;
		}else{
			tmpClassId = 0;
		}
	});

}

//Change brand function
function onChangeBrand(){
	selectedSubBrand = false;
	selectedTrim = false;
	emptySelect(SELECT_ID_SUBBRAND, SELECT_OPTIONAL_SUBBRAND);
	emptySelect(SELECT_ID_TRIM, SELECT_OPTIONAL_TRIM);
	if(!($(SELECT_ID_BRAND).selectedIndex == 0 && SELECT_SHOW_OPTIONAL_BRAND)){
		brandObj=getSelectValue(SELECT_ID_BRAND);//for tracking purpose
		try{
		if(dealerData!=null && dealerData!=undefined&&dealerData.length>1){
			for(i=0;i<dealerData.length;i++){
				//change the content for dealer select
				if(i < MAX_DEALER ){
					var selecteDealerObj0= document.getElementById("selectedDealerID"+i);
					selecteDealerObj0.onclick= function(){
							contactDealerTracking(BRAND,brandObj);
							showDealerSelected(i);
					}
				}
				else{
					break;
				}

			}
		}
		}catch(err){}
		setSubBrandSelect(getSelectValue(SELECT_ID_YEAR),getSelectValue(SELECT_ID_BRAND));
		selectedBrand = true;
	}else{
		selectedBrand = false;
	}
}

//Change brand function
function onChangeSubBrand(){
	selectedTrim = false;
	emptySelect(SELECT_ID_TRIM, SELECT_OPTIONAL_TRIM);
	if(!($(SELECT_ID_SUBBRAND).selectedIndex == 0 && SELECT_SHOW_OPTIONAL_SUBBRAND)){
		setTrimSelect(getSelectValue(SELECT_ID_YEAR),getSelectValue(SELECT_ID_BRAND),getSelectValue(SELECT_ID_SUBBRAND));
		selectedSubBrand = true;
	}else{
		selectedSubBrand = false;
	}
}

//Change DriveType function
function onChangTrim(){
	if(!($(SELECT_ID_TRIM).selectedIndex == 0 && SELECT_OPTIONAL_TRIM)){
		selectedTrim = true;
		if(document.getElementById(THUMBNAIL_IMAGE_NAME) !=null){
			document.getElementById(THUMBNAIL_IMAGE_NAME).src=BASE_THUMBNAIL_PATH+getSelectValue(SELECT_ID_YEAR) + "/" + getSelectValue(SELECT_ID_TRIM) + ".gif";
		}
	}else{
		selectedTrim = false;
	}
}
function onErrorImage(){
	if(!($(SELECT_ID_TRIM).selectedIndex == 0 && SELECT_OPTIONAL_TRIM)){
		selectedTrim = true;
		if(document.getElementById(THUMBNAIL_IMAGE_NAME) !=null)
			document.getElementById(THUMBNAIL_IMAGE_NAME).src=BASE_THUMBNAIL_PATH+"common/notAvailable.gif";
		else
		selectedTrim = false;
	}
}

//Show all the selects
function showSelects(){
	emptySelect(SELECT_ID_YEAR, SELECT_OPTIONAL_YEAR);
	emptySelect(SELECT_ID_BRAND, SELECT_OPTIONAL_BRAND);
	emptySelect(SELECT_ID_SUBBRAND, SELECT_OPTIONAL_SUBBRAND);
	emptySelect(SELECT_ID_TRIM, SELECT_OPTIONAL_TRIM);
	setYearSelect();
}

function emptySelect(id,msg){
	data = Array();
	showDataSelect(data,id,true,msg);
}

function validateDropdowns(){
	if(selectedTrim && selectedYear){
		return true;
	} else {
		return false;
	}
}

function trackingChangeBrand(selectElement) {
	var modelName = selectElement.options[selectElement.selectedIndex].value.toLowerCase();
	var parts = Omniture_s.prop33.split(' | '); 
	var trackObj = {
		prop33: modelName+' | '+parts[1],
		prop35: modelName+' | '+parts[1]+' | index'
	};
	clickTrack(trackObj);
}

