/**************************************************************************************************************/

function ModelObj(modelId, modelName, msrp, fullmsrp, bodyStyleName, mmcList, pvcList, styleList, gmModelId){
	this.modelId = modelId;
	this.modelName = modelName;
	this.msrp = msrp;
	this.fullmsrp = fullmsrp;
	this.bodyStyleName = bodyStyleName;
	this.mmcList = mmcList;
	this.pvcList = pvcList;
	this.styleList = styleList;
	this.gmModelId = gmModelId;
}

ModelObj.prototype.toString = function (){
	return this.bodyStyleName + "||" + this.modelId + "||" + this.modelName + "||" + this.msrp + "||" + this.fullmsrp + "||" + this.mmcList[0] + "||" + this.pvcList[0]+ "||" + this.styleList[0]+ "||" + this.gmModelId;
}

ModelObj.prototype.fromString = function (modelObjString){
	var elements = modelObjString.split("||");
	this.modelId = elements[1];
	this.modelName = elements[2];
	this.msrp = elements[3];
	this.fullmsrp = elements[4]
	this.bodyStyleName = elements[0];
	this.mmcList = elements[5].split("::");
	this.pvcList = elements[6].split("::");
	this.styleList = elements[7].split("::");
	this.gmModelId = elements[8];
}
/**************************************************************************************************************/

function selectLocale() {
    //do request
    var request = getRequest();
    request.open("get", "chromeSelector.do?data=locale&locale=esUS", false);
    request.send(null);
}

function selectMode() {
    //do request
    var request = getRequest();
    request.open("get", "chromeSelector.do?data=orderAvailability&orderAvailability=Retail", false);
    request.send(null);
}

//Check integrity on the tool's parameters.
function checkParameters(){
	if(!hasParameters()){
		redirectCommon(getRelativePath() + BASE_CONTEXT + "/locate-vehicle/");
		return true;
	}
	return false;
}

//Check the parameter in the url. OK->True, KO->False
function hasParameters(){
	var hasParam = true;
	var parametersToCheck = new Array();
	parametersToCheck[0] = "postalCode";
	var url = location.href;
	for(i=0;i<parametersToCheck.length;i++){
		if(url.indexOf(parametersToCheck[i]) == -1){
			hasParam = false;
		}
	}
	return hasParam;
}

function loadSelectCars() {
	if(checkParameters()){return;}
	selectLocale();
	selectMode();
	//do request
    var request = getRequest();
    request.open("get",  BASE_CONTEXT + "/chromeSelector.do?data=years", false);
    request.send(null);
    //populate year dropdown and disable division and model
    createModelsTable(request.responseText, IMAGE_PATH);
 	document.getElementById('content1').className = "divOn";
	document.getElementById('content2').className = "divOn";
	document.getElementById('content3').className = "divOn";
}

function createModelsTable(yearResponse, imagePath) {
	var years = yearResponse.split(";;");
	var contentHtml = '<div id="title"><span class="vh">LOCATE A VEHICLE</span></div>';
	contentHtml += '<div id="subtitle"><span class="textInfo">Select Vehicle to Locate</span></div>';
	var tabsHtml = '<ul id="tabs">';
	var containerHtml = '<div id="container">';
	for (var i = 0; i < years.length; i++) {
		years[i] = years[i].split("~~")[0];
		tabsHtml += '<li id="tabVehicle'+(i+1)+'" class="'+(years[i]=="2008"?'cTabOn':'cTabOff')+'" onClick="showTabD(\'tabVehicle'+(i+1)+'\',\'content'+(i+1)+'\','+years.length+');" ><span class="vh">'+years[i]+'</span></li>';
		containerHtml += '<div id="content'+(i+1)+'" class="'+(years[i]=="2008"?'divOn':'divOff')+'">';
		containerHtml += loadModelsHtml("content"+(i+1), years[i], "33", imagePath);
		containerHtml += '</div>';
	}
	containerHtml += '</div>';
	tabsHtml += '</ul>';
	contentHtml += tabsHtml + containerHtml;
	document.getElementById("jsContent").innerHTML = contentHtml;
}

function loadModelsHtml(containerName, modelYear, divisionId, imagePath) {
    //do request
    var request = getRequest();
    request.open("get", "showAllVehiclesFilteredByYear.do?modelYear=" + modelYear + "&divisionId=" + divisionId, false);
    request.send(null);
	var modelHtml = '<ul class="ulContainer">';

    //sort models
    var models = request.responseText.split("::");
    var modelsInfo = new Array();
    var modelInfo;
    for (var i = 0; i < models.length; i++) {
        var _info = models[i].split("~~");
   		modelInfo = getModelInformation(_info[0],_info[1],_info[2],_info[3],_info[4]);
   		modelsInfo.push(modelInfo.toString());
	}
	modelsInfo.sort();
	var lastBodyStyle = "";
	var counter = 0;
	var joinedBodyName = "";
	modelHtml += '</ul><ul class="ulContainer">';
    for (i = 0; i < modelsInfo.length; i++) {
    	modelInfo.fromString(modelsInfo[i]);
		joinedBodyName = modelInfo.bodyStyleName.split(' ');
		lastBodyStyle = modelInfo.bodyStyleName;
   		modelHtml += '<li class="thumb"><div>';
   		modelHtml += '<div id=modelImg><img src="'+imagePath+'/locateVehicle/selectVehicle/thumbnails/'+modelYear+'/tile_car_'+modelYear+'_'+ replaceAll(modelInfo.modelName.toLowerCase()," ", "") +'.png" width="127" height="90" alt="" border="0" /></div>';
   		modelHtml += '<p class="cbrand">'+modelInfo.modelName+'</p>';
   		modelHtml += '<p class="cMSRP">MSRP<sup>1</sup>: Starting at $' + modelInfo.msrp + '</p>';
   		modelHtml += '<a href="javascript:inventoryResultsLink(\''+modelYear+'\', \''+modelInfo.mmcList[0]+'\', \''+modelInfo.modelId+'\', \''+modelInfo.pvcList[0]+'\', \''+modelInfo.styleList[0]+'\', \''+modelInfo.modelName+'\', \''+modelInfo.gmModelId+'\')"> <img src="'+imagePath+'/locateVehicle/selectVehicle/button/btn_select_off.gif" onmouseover="OverButton(this);" onmouseout="OutButton(this);" alt="" border="0"/> </a>';
   		modelHtml += '</div></li>';
   		counter++;
	}
    modelHtml += '</ul>';
	return modelHtml;
}

function inventoryResultsLink(year, mmc, modelId, pvc, style, modelName, gmModelId) {
	var vlirURL = BASE_CONTEXT+'/locateVehicle.do?year='+year+'&make='+makeCode+'&modelDesignator='+mmc;
	vlirURL += '&modelId='+modelId;
	vlirURL += '&gmModelId='+gmModelId;
	vlirURL += '&modelName='+modelName;
	vlirURL += '&pvc='+pvc;
	vlirURL += '&styleId='+style;
	vlirURL += '&searchType='+searchType;
	vlirURL += '&postalCode='+postalCode;
	vlirURL += '&proximity='+proximity;
	vlirURL += '&searchCity='+searchCity;
	vlirURL += '&searchState='+searchState;
	vlirURL += '&VIN='+VIN;
	vlirURL += '&vendorId='+vendorId;
	vlirURL += '&orderNumber='+orderNumber;
	vlirURL += '&multiVendorIds='+multiVendorIds;
	vlirURL += '&maximumCount='+((maximumCount=='')?'100':maximumCount);
	window.location.href = vlirURL;
}

function loadModelsText(modelYear) {
	//do request
    var request = getRequest();

    request.open("get",  BASE_CONTEXT + "/chromeSelector.do?data=divisions&modelYear=" + modelYear, false);
    request.send(null);

	alert(request.responseText);

    //populate division dropdown and clear model dropdown
    fillSelect(document.getElementById("division"), request.responseText);
    //clearSelect(document.getElementById("model"));
    clearSelect(document.getElementById("cfmodelname"));
}

function getModelInformation(modelId, modelName, msrplow, msrphigh, styleId){
	//do request
	var request = getRequest();
	var msrp= "0";
	//alert(modelId);
	request.open("get",  BASE_CONTEXT + "/chromeSelector.do?data=styles&modelId=" + modelId, false);
  	request.send(null);

  	var stylesData = request.responseText.split(";;");
  	var prices = new Array();
  	var counter = 0;

	//Msrp
  	for (var i = 0; i < stylesData.length; i++) {
  		var price = parseInt(stylesData[i].split("~~")[5].replace("$",""));
  		if (price > 0)
  			prices[counter++] = price;
  	}
  	prices.sort();

	if (prices.length == 1)
	    msrp = new String(prices[0]);
	if (prices.length > 1)
	    msrp = new String(prices[0] + " - " + prices[prices.length - 1]);

	//BodyStyleName
	var bodyStyleName = stylesData[0].split("~~")[9];
	var mmcList = new Array();
	var pvcList = new Array();
	var styleList = new Array();
	var counter = 0;
	var gmModelId = null;
	for (var i = 0; i < stylesData.length; i++) {
		if (styleId != "null") {
			var style = stylesData[i].split("~~")[6];
			var pvc = stylesData[i].split("~~")[12];
			if (style == styleId && !isNoE(pvc) && parseInt(pvc) > 0 ) {
				styleList[counter] = style;
				var mmc = stylesData[i].split("~~")[11];
				mmcList[counter] = mmc;
				var pvc = stylesData[i].split("~~")[12];
				pvcList[counter++] = pvc;
				gmModelId = stylesData[i].split("~~")[13];
			}
		}
		else {
			var style = stylesData[i].split("~~")[6];
			styleList[i] = style;
			var mmc = stylesData[i].split("~~")[11];
			mmcList[i] = mmc;
			var pvc = stylesData[i].split("~~")[12];
			pvcList[i] = pvc;
			gmModelId = stylesData[i].split("~~")[13];
		}
	}

    return new ModelObj(modelId, modelName, msrplow, msrphigh, bodyStyleName, mmcList, pvcList, styleList, gmModelId);
}

function fillSelect(selectElm, responseText) {
    selectElm.options.length = 0;
    selectElm.options[0] = new Option("", "0", true, true);
    var response = responseText.split(";;");
    var OptionSelected = false
    for (var i = 0; i < response.length; i++) {
        var style = response[i].split("~~");
        if (selectElm.id=='division' && style[1]=='Pontiac'){
        	OptionSelected =true;
        }
        else{
        	OptionSelected =false;
        }
       	selectElm.options[selectElm.options.length] = new Option(style[1], style[0], false, OptionSelected);
        if (selectElm.id=='division' && style[1]=='Pontiac'){
        	selectDivision(style[0]);
        	selectElm.disabled = true;
        	return;
        }

    }
    selectElm.disabled = false;
}

function showTabD(tabOn, contentOn, maxTabs){
	try{
		for (var i = 1; i < (maxTabs+1); i++) {
			var tabName = "tabVehicle"+i;
			var contentName = "content"+i;

			if (tabOn == tabName) {
				document.getElementById(tabName).className = "cTabOn";
				document.getElementById(contentName).className = "divOn";
			}
			else {
				document.getElementById(tabName).className = "cTabOff";
				document.getElementById(contentName).className = "divOff";
			}
		}
	}catch(e){}
}

AttachEvent(window, "load", ieLoad);

function ieLoad(){
	showTabD('tabVehicle2','content2',3);
}