var BASE_AJAX_URL = "/FordUSCommApp";
var ACTION_VEHICLE_SELECTION = "vehicleSelectionAction";
var FUNCTION_GET_VOCATIONS_LIST = "getVocationsList.do";
var FUNCTION_GET_MODEL_LIST = "getModelList.do";
var FUNCTION_GET_CATEGORIES_LIST = "getVehicleCategoriesList.do";
var FUNCTION_GET_MODEL_LIST_BY_CATEGORY = "getModelListByCategory.do";
var FUNCTION_GET_TRIM_INFORMATION = "getTrimInformation.do";
var FUNCTION_GET_DEFAULT_MODEL_LIST = "getDefaultModelList.do";
var FUNCTION_GET_MODEL_FILTER_GRID = "getModelFilterGrid.do";
var FUNCTION_GET_TRIM_VARIATIONS = "getTrimVariations.do";
var FUNCTION_GET_VEHICLE_FILTER_QUESTIONS = "getVehicleFilterQuestions.do";

var vehicleModelsArray;
var vehicleTrimList = new Array();
var vehicleComparisonAcodesArray = new Array();

/*
Retrieve the model lists on page load
*/
function initializeVehicleComparisonPage(){

 	$(document).ready(function() {
 		$("#spinner_compare").fadeIn("fast");
      	getModelList();
    });
}

function getCompareModelImage(id, preselect) {

	var str = "";

	switch (id) {
		case "10332":
		case "11260":
		case "9440": (preselect == "Wagon" ? str = "/images/compare/vehicles/e150w.png" : str = "/images/compare/vehicles/e150.png" ); break;
		case "10333":
		case "11307":
		case "9441": str = "/images/compare/vehicles/e250.png"; break;
		case "10362":
		case "11293":
		case "9477": str = "/images/compare/vehicles/e250cutaway.png"; break;
		case "10334":
		case "11261":
		case "9442": (preselect == "Wagon" ? str = "/images/compare/vehicles/e350w.png" : str = "/images/compare/vehicles/e350.png"); break;
		case "10363":
		case "11294":
		case "9478": str = "/images/compare/vehicles/e350chassis.png"; break;
		case "10360":
		case "11291":
		case "9475": str = "/images/compare/vehicles/e350cutaway.png"; break;
		case "10364":
		case "11295":
		case "9479": str = "/images/compare/vehicles/e450chassis.png"; break;
		case "10361":
		case "11292":
		case "9476": str = "/images/compare/vehicles/e450cutaway.png"; break;
		case "11124":
		case "8871": str = "/images/compare/vehicles/f250.png"; break;
		case "11191":
		case "8877": str = "/images/compare/vehicles/f350.png"; break;
		case "11177":
		case "8883": str = "/images/compare/vehicles/f350chassis.png"; break;
		case "11151":
		case "8870": str = "/images/compare/vehicles/f450.png"; break;
		case "11178":
		case "8884": str = "/images/compare/vehicles/f450chassis.png"; break;
		case "11179":
		case "8885": str = "/images/compare/vehicles/f550chassis.png"; break;
		case "9909":
		case "10952":
		case "8903": (preselect == "Pro_Loader" ? str = "/images/compare/vehicles/f650pl.png" : str = "/images/compare/vehicles/f650.png"); break;
		case "9911":
		case "10954":
		case "8902": str = "/images/compare/vehicles/f750.png"; break;
		case "9946":
		case "9225": str = "/images/compare/vehicles/l45.png"; break;
		case "USB80FOM401A0":
		case "USB90FOM401A0":
			str = "/images/compare/vehicles/l45.png"; break;
		case "USB80FOM402A0":
		case "USB90FOM402A0":
			str = "/images/compare/vehicles/l55.png"; break;
		case "USC00FOV321A0": str = "/images/compare/vehicles/tc_van.png"; break;
		case "USC00FOV322A0": str = "/images/compare/vehicles/tc_wagon.png"; break;
		case "USB90FOV172A0": str = "/images/compare/vehicles/e150w.png"; break;
		case "USB90FOV233A0": str = "/images/compare/vehicles/e350w.png"; break;
		case "USB90FOV234A0": str = "/images/compare/vehicles/e350elw.png"; break;
		case "USC00FOM011A0": str = "/images/compare/vehicles/f650pl.png"; break;
		case "USC00FOM101A0": str = "/images/compare/vehicles/f650.png"; break;
		case "USC00FOM201A0": str = "/images/compare/vehicles/f750.png"; break;
		case "10820": (preselect == "Wagon" ? str = "/images/compare/vehicles/tc_wagon.png" : str = "/images/compare/vehicles/tc_van.png"); break;
		default: str = "images/compare/img_novehicleselected.jpg"; break;

	}

	return str;
}

/*
See if the array of models has been retrieved from the database.
This is retrieved once and reused throughout the compare process.
*/
function checkEmptyModelList(objList){
	if(! vehicleModelsArray ){
		initializeVehicleComparisonPage();
	}
}

/*
Set the model image when the model selection drop-down is changed.
*/
function getSelectedVehicleImage(columnNumber, modelYearId, preselect){

	if( ! modelYearId ){
		modelYearId =  $("#select_models_" + columnNumber +" :selected").val();
		preselect = $("#select_fq_" + columnNumber +"_1 :selected").text();

		if( ! modelYearId ){
			modelYearId = "-1";
		}
	}
	var img = getCompareModelImage( modelYearId, preselect );
	$("#compareImage_" + columnNumber).attr("src", img);
/*
	if(vehicleModelsArray){
		for(var i = 0 ; i < vehicleModelsArray.length; i++ ){
			if(vehicleModelsArray[i].modelYearId == modelYearId){
				var img = getCompareModelImage( modelYearId, preselect );
				$("#compareImage_" + columnNumber).attr("src", img);
 			}
		}
	}
*/
}

/*
Get the name of a vehicle from it's modelYearId
*/
function getSelectedVehicleName(columnNumber){
	modelYearId = modelYearIdArray[columnNumber];
	if(vehicleModelsArray){
		for(var i = 0 ; i < vehicleModelsArray.length; i++ ){
			if(vehicleModelsArray[i].modelYearId == modelYearId){
				return vehicleModelsArray[i].modelDesc;
			}
		}
	}
}

/*
Show the model name on the page after a model is selected from the drop-down
*/
function setSelectedVehicleName(modelYearId, columnNumber){

	if(vehicleModelsArray){
		for(var i = 0 ; i < vehicleModelsArray.length; i++ ){
			if(vehicleModelsArray[i].modelYearId == modelYearId){
				$("#compareVehicleModel_" + columnNumber).html(vehicleModelsArray[i].modelDesc);
				$("#comparePrice_" + columnNumber).html("Starts at $" + formatCurrency(vehicleModelsArray[i].baseMsrp));
			}
		}
	}else{

	}
}

/*
Temporarily set the acode, trim name, and image when the Trim Select panel is open
*/
var tempColumnNumber, tempACode, tempTrimDesc, tempImage, tempPrice;
//Set the acode of the trim the user selected
function setVehicleComparisonAcode( columnNumber, aCode, trimDesc, price, image ){
	tempColumnNumber = columnNumber;
	tempACode = aCode;
	tempTrimDesc = trimDesc;
	tempPrice = price;
	tempImage = image;

}
/*
Return number of selected vehicles. You must have atleast two trims selected to perform a compare
*/
function getVehicleComparisonAcodesCount(){
	count = 0;
	for(var i = 0 ; i < vehicleComparisonAcodesArray.length; i++){
		if( vehicleComparisonAcodesArray[i] ){
			count++;
		}
	}
	return count;
}
/*
Show the Compare button if more than two trims are selected
*/
function showHideCompareButton(){
	if( getVehicleComparisonAcodesCount() >= 2 ){
		//enable compare button
		$("#compareVehiclesButton").fadeIn("slow");
		return true;
	}else{
		$("#compareVehiclesButton").fadeOut("slow");
		return false;
	}
}

/*
Finalize the trim acode, etc after the CONTINUE button is clicked on the trim select panel
*/
function completeSetVehicleComparisonAcode(){
	vehicleComparisonAcodesArray[tempColumnNumber] = tempACode;
	$("#compareVehicleTitle_" + tempColumnNumber).html(tempTrimDesc);
	$("#comparePrice_" + tempColumnNumber).html("Starts at $" + tempPrice);


	showHideCompareButton();

	tempColumnNumber = "";
	tempACode  = "";
	tempTrimDesc = "";
	tempPrice = "";

	closeTrimSelection();
}

/*
Show the list of models for a column
*/
function showModelSelect(columnNumber){

	$("#featuresTable").fadeOut("slow");

	resetFilterChoices(columnNumber);

	document.getElementById("select_models_" + columnNumber ).selectedIndex = 0;
	if(vehicleComparisonAcodesArray){
		vehicleComparisonAcodesArray[columnNumber] = null;
	}

	$("#select_models_" + columnNumber).fadeIn("slow");
	$("div[id^='selectContainer_']").fadeIn("slow");


	showHideCompareButton();

	//Reset Image
	$("#compareImage_" + columnNumber).attr( 'src', 'images/compare/img_novehicleselected.jpg' );

}

/*
Get a list of models and populate the model select drop-down on complete
*/
function getModelList(divisionCode, validModelIDList) {
	modelSelect1 = document.getElementById("select_models_1");
	modelSelect2 = document.getElementById("select_models_2");
	modelSelect3 = document.getElementById("select_models_3");

	modelSelect1.disabled = true;
	modelSelect2.disabled = true;
	modelSelect3.disabled = true;


	if( ! vehicleModelsArray ){
		url = BASE_AJAX_URL + "/" + ACTION_VEHICLE_SELECTION + "/" + FUNCTION_GET_MODEL_LIST + "?";
		if(divisionCode){
			url += "&divisionCode=" + divisionCode;
		}
		if(validModelIDList){
			url += "&validModelIDList=" + validModelIDList;
		}
	 	$.getJSON(url, function(json, textResponse){
			if( json ){
				vehicleModelsArray = json;
				completeGetModelList();
			}
		});
	}else{
		completeGetModelList();
	}
}
/*
populate the model select drop-down
*/
function completeGetModelList(){
	//Hide the spinner after the models list is loaded
	$("#spinner_compare").fadeOut("fast");

	showHideCompareButton();

	modelSelect1 = document.getElementById("select_models_1");
	modelSelect2 = document.getElementById("select_models_2");
	modelSelect3 = document.getElementById("select_models_3");

	modelSelect1.disabled = false;
	modelSelect2.disabled = false;
	modelSelect3.disabled = false;


	var doc = modelSelect1.ownerDocument;
	if (!doc)
		doc = modelSelect1.document;
	if(vehicleModelsArray){
		clearSelectBoxOptions(modelSelect1);
		clearSelectBoxOptions(modelSelect2);
		clearSelectBoxOptions(modelSelect3);

		for( var i = 0; i < vehicleModelsArray.length; i++ ){
			opt1 = doc.createElement('OPTION');
			opt1.value = vehicleModelsArray[i].modelYearId;
			opt1.text = vehicleModelsArray[i].modelDesc;

			opt2 = doc.createElement('OPTION');
			opt2.value = vehicleModelsArray[i].modelYearId;
			opt2.text = vehicleModelsArray[i].modelDesc;

			opt3 = doc.createElement('OPTION');
			opt3.value = vehicleModelsArray[i].modelYearId;
			opt3.text = vehicleModelsArray[i].modelDesc;

			modelSelect1.options.add(opt1,1);
			modelSelect2.options.add(opt2,1);
			modelSelect3.options.add(opt3,1);
		}
		opt1 = doc.createElement('OPTION');
		opt1.value = "-1";
		opt1.text = "Select a Model";

		opt2 = doc.createElement('OPTION');
		opt2.value = "-1";
		opt2.text = "Select a Model";

		opt3 = doc.createElement('OPTION');
		opt3.value = "-1";
		opt3.text = "Select a Model";
		modelSelect1.options.add(opt1,0);
		modelSelect2.options.add(opt2,0);
		modelSelect3.options.add(opt3,0);

		modelSelect1.selectedIndex = 0;
		modelSelect2.selectedIndex = 0;
		modelSelect3.selectedIndex = 0;

		var source = getParameter("source");
		if( source == "bnp" ){
			getTrimInformationForAcode(  getParameter("aCode0"), 1  );
			return;
		}

 		getTrimLevelDetails( getParameter("aCode0"), 1);
		getTrimLevelDetails( getParameter("aCode1"), 2);
		getTrimLevelDetails( getParameter("aCode2"), 3);

		if(	showHideCompareButton() ){
			return;
		}

 		setTimeout("setPreselects()", 500);
	}
}

function setPreselects()
{
	setPreselectedModels(getParameter("modelYearId0"), getParameter("preselect0"), 1);
	setPreselectedModels(getParameter("modelYearId1"), getParameter("preselect1"), 2);
	setPreselectedModels(getParameter("modelYearId2"), getParameter("preselect2"), 3);
}

/*
If an acode is passed in, set the values on the page for model name, trim name, price
*/
function getTrimLevelDetails(aCode, columnNumber){
	if( aCode && aCode != "0" ){

		if( ! trimLevelCompareDetails[aCode] ){
			$("#alertContent").html("We could not find the selected vehicle. Please select another from the list below");
			$("#alertOverlay").jqmShow();
			return;
		}

		$("#compareVehicleModel_" + columnNumber).html(trimLevelCompareDetails[aCode].modelName);
		$("#compareVehicleTitle_" + columnNumber).html(trimLevelCompareDetails[aCode].trimName);
		$("#comparePrice_" + columnNumber).html("Starts at " + trimLevelCompareDetails[aCode].price);

		var img = getCompareModelImage(aCode, "" );
		$("#compareImage_" + columnNumber).attr("src", img);

		//SET acode in array
		vehicleComparisonAcodesArray[columnNumber] = aCode;
		return true;
	}

	return false;
}
/*
If a model is passed in, select the model name in the drop-down and get the base image
*/
function setPreselectedModels(modelYrId, preselect, columnNumber){
	if( modelYrId && modelYrId != "0" ){
		$("#select_models_" + columnNumber).fadeIn("normal");
		document.getElementById("select_models_" + columnNumber).value = modelYrId;
		if( document.getElementById("select_models_" + columnNumber).selectedIndex != 0 ){
			getSelectedVehicleImage(columnNumber, modelYrId, preselect);

		 	newFilterGrid(columnNumber, modelYrId );
			getVehicleFilterQuestions(null, null, columnNumber);
		}
	}
}

function getTrimInformationForAcode( aCode, columnNumber){

	if( ! aCode || aCode =="0" ){
		return;
	}
	url = BASE_AJAX_URL + "/" + ACTION_VEHICLE_SELECTION + "/" + FUNCTION_GET_TRIM_INFORMATION + "?";
	url += "&aCodeList=" + aCode;
 	$.getJSON(url, function(json, textResponse){
		if( json ){
			vehicleTrimList[columnNumber] = json;
			completeGetTrimInformationForAcode(columnNumber, aCode);
		}
	});
}
function completeGetTrimInformationForAcode(columnNumber, aCode){

		if( ! vehicleTrimList[columnNumber][0] ){
			return;
		}

		$("#compareVehicleModel_" + columnNumber).html(vehicleTrimList[columnNumber][0].modelDesc);
		$("#compareVehicleTitle_" + columnNumber).html(vehicleTrimList[columnNumber][0].customTrimDesc);
		$("#comparePrice_" + columnNumber).html("Starts at $" + formatCurrency(vehicleTrimList[columnNumber][0].msrp));
		var m = vehicleTrimList[columnNumber][0].modelYearId;
		m += ""; //Hack to make it a string since the switch wont return an image if you pass a #
		var img = getCompareModelImage(m, "" );
		$("#compareImage_" + columnNumber).attr("src", img);
		vehicleComparisonAcodesArray[columnNumber] = aCode;

}
/*
Get the trim level details for a model year id and list of acodes
*/
function getTrimInformation(columnNumber, getModelIDExclude) {

	url = BASE_AJAX_URL + "/" + ACTION_VEHICLE_SELECTION + "/" + FUNCTION_GET_TRIM_INFORMATION + "?";
	url += "modelYearId=" + modelYearIdArray[columnNumber];
	if( aggregateAcodesList[columnNumber] && aggregateAcodesList[columnNumber] != null && aggregateAcodesList[columnNumber] != 'null' ){
		url += "&aCodeList=" + aggregateAcodesList[columnNumber];
	}
	if( getModelIDExclude ){
		url += "&getModelIDExclude=" + getModelIDExclude;
	}
 	$.getJSON(url, function(json, textResponse){
		if( json ){
			vehicleTrimList[columnNumber] = json;
			completeGetTrimInformation(columnNumber);
		}
	});
}

/*
Create the html for the trim select pop-up
*/
function completeGetTrimInformation(columnNumber){

	trimNames = "<ul>";
	trimDesc =  "";

	for(var i=0;i<vehicleTrimList[columnNumber].length; i++){
		//trimNames += '<li id="compareTrim' + i + '"  onclick="setVehicleComparisonAcode( '+columnNumber+', \''+vehicleTrimList[columnNumber][i].acode+'\', \''+vehicleTrimList[columnNumber][i].customTrimDesc+'\', \''+formatCurrency(vehicleTrimList[columnNumber][i].msrp)+'\', \''+vehicleTrimList[columnNumber][i].image+ '\'  )"><div>'+vehicleTrimList[columnNumber][i].customTrimDesc + '<br />Base MSRP:  $' + formatCurrency(vehicleTrimList[columnNumber][i].msrp)+'</div></li>';
		trimNames += "<li id=\"compareTrim" + i + "\"  onclick=\"setVehicleComparisonAcode( "+columnNumber+", '"+vehicleTrimList[columnNumber][i].acode+"', '"+TextUtils.escapeJson(vehicleTrimList[columnNumber][i].customTrimDesc)+"', '"+formatCurrency(vehicleTrimList[columnNumber][i].msrp)+"', '"+vehicleTrimList[columnNumber][i].image+ "')\"><div>"+vehicleTrimList[columnNumber][i].customTrimDesc + "<br />Base MSRP:  $" + formatCurrency(vehicleTrimList[columnNumber][i].msrp)+"</div></li>";
		//trimDesc += '<div class="compareTrim' + i + '"><p>Trim Option 1</p><ul><li>blah'+i+'</li><li>blah</li><li>blah</li></ul></div>';
		trimDesc += getTrimDescription( i, vehicleTrimList[columnNumber][i].marketingCopy );
	}

	trimNames += "</ul>";

	trimGridValues = "";
	trimGridValues += $("#select_fq_" + columnNumber +"_1 :selected").text() + " ";
	trimGridValues += $("#select_fq_" + columnNumber +"_2 :selected").text() + " ";
	trimGridValues += $("#select_fq_" + columnNumber +"_3 :selected").text() + " ";
	trimGridValues += $("#select_fq_" + columnNumber +"_4 :selected").text() + " ";

	$("#compareVehicleFilters_" + columnNumber).html(trimGridValues);
	$("#trimSelectModelName").html( "Ford " + getSelectedVehicleName(columnNumber) + "<br /><span>"+trimGridValues+"</span>");
	$("#compareTrimType").html(trimNames);
	$("#compareTrimDesc").html(trimDesc);
	$("#compareTrimImage").attr( "src", $("#compareImage_" + columnNumber).attr("src") );
	compareTrimLoaded();

	 $("div[id^='selectContainer_']").fadeOut("slow" , function(){
	 	$("#featuresTable").fadeOut("slow", function(){
	 		$("#trimOverlay").fadeIn("slow");
	 	});
	 });

}
/*
Generate a list of trim marketing copy show on roll-over on the trim select pop-up
*/
function getTrimDescription(trimNumber, marketingCopy){

	trimDesc = '<div class="compareTrim' + trimNumber + '">';
	if( ! marketingCopy )
		return trimDesc + '</div>';

  	 pieces = marketingCopy.split("|");

	 trimDesc += '<p>'+pieces[0]+'</p>';
	 trimDesc += '<ul>';

	 trimListItems = pieces[1].split("^");
	 for(var i=0;i<trimListItems.length;i++){
	 	if(trimListItems[i])
		 	trimDesc += '<li>' + trimListItems[i] + '</li>';
	 }
	 trimDesc += '</ul>';
	 trimDesc += '</div>';

	 return trimDesc;
}


