var BASE_AJAX_URL = "/FordUSCommApp";
var ACTION_VEHICLE_SELECTION = "vehicleSelectionAction";
var FUNCTION_GET_MODEL_FILTER_GRID = "getModelFilterGrid.do";
var FUNCTION_GET_VEHICLE_FILTER_QUESTIONS = "getVehicleFilterQuestions.do";

var filterGridArray = new Array();
var aggregateAcodesList = new Array();
var modelYearIdArray = new Array();

//Array of 'arrays' to store the aggregate acodes list so you can go back to change your answer to a previous question
var aggregateAcodesHistory = new Array();
aggregateAcodesHistory[1] = new Array();
aggregateAcodesHistory[2] = new Array();
aggregateAcodesHistory[3] = new Array();


/*
Reset the drop-downs if a selection is changed above it
*/
function resetFilterChoices(columnNumber, startingNumber){

	if( ! startingNumber ){
		startingNumber = 1;
	}else{
		startingNumber++;
	}

	for(var i = startingNumber; i <= 4; i++){
		modelSelect = document.getElementById('select_fq_' + columnNumber + "_" + i);
		clearSelectBoxOptions(modelSelect);

		//TODO: clear the saved aggregate acodes list
		$("#select_fq_" + columnNumber + "_" + i).fadeOut("fast");
		$("#trimSelectLink_" + columnNumber).fadeOut("normal");

		$("#compareVehicleTitle_" + columnNumber).html('&nbsp;');
		$("#comparePrice_" + columnNumber).html('&nbsp;');
	}

	if( startingNumber == 1){
		$("#compareVehicleModel_" + columnNumber).html('Select a vehicle');
	}

}



//Clear all of the filter choices for a column
function newFilterGrid(columnNumber, modelYearId){

	modelYearIdArray[columnNumber] = modelYearId;

	filterGridArray[columnNumber] = null;
	aggregateAcodesList[columnNumber] = null;

	aggregateAcodesHistory[columnNumber] = new Array();
 	vehicleComparisonAcodesArray[columnNumber] = null;

	showHideCompareButton();

	resetFilterChoices(columnNumber);
}

/*
Show the next questions filter choices in a drop-down below it. If it is the last question, show the trim select button.
Preselect any values that have been passed in the URL
*/
function completeGetVehicleFilterQuestions(filterSequenceId, columnNumber){

	if( filterSequenceId == null){
		filterSequenceId = 1;
	}else{
		filterSequenceId++;
	}

	modelSelect = document.getElementById('select_fq_' + columnNumber + "_" + filterSequenceId);
	filterGrid = filterGridArray[columnNumber];

	//Save the aggregate acodes list
	aggregateAcodesHistory[columnNumber][filterSequenceId] = filterGrid.acodesList;

	//If you are on the 4th drop-down, answer the question and show the trim selection link
	if( ! modelSelect ){
		//filterGrid = filterGridArray[columnNumber];
		aggregateAcodesList[columnNumber] = filterGrid.acodesList;

		$("#spinner_model_" + columnNumber ).fadeOut("slow");
		$("#trimSelectLink_" + columnNumber).fadeIn("slow");
		return;
	}

	var doc = modelSelect.ownerDocument;
	if (!doc)
		doc = modelSelect.document;
	if(filterGridArray){
		filterDescription = "";

		clearSelectBoxOptions(modelSelect);
		//filterGrid = filterGridArray[columnNumber];

		if( filterGrid.type == "COMPLEX" ){

			if( filterGrid.filters.length == 0){
				aggregateAcodesList[columnNumber] = filterGrid.acodesList;
				$("#spinner_model_" + columnNumber ).fadeOut("fast", function () {
	    			$("#trimSelectLink_" + columnNumber).fadeIn("slow");
				});
			}else{
				for( var i = 0; i < filterGrid.filters.length; i++ ){
					//Get correct filter question and choices
					if( filterGrid.filters[i].id == filterSequenceId ){
						aggregateAcodesList[columnNumber] = filterGrid.acodesList;
						for( var j = 0 ; j < filterGrid.filters[i].filterchoice.length ; j++ ){
								//Only add enabled filter choices
								if(filterGrid.filters[i].filterchoice[j]){
									if(filterGrid.filters[i].filterchoice[j].enabled) {
										filterDescription = filterGrid.filters[i].filterchoice[j].filterDescription;
										opt1 = doc.createElement('OPTION');
										opt1.value = filterGrid.filters[i].filterchoice[j].answerId;
										opt1.text = filterGrid.filters[i].filterchoice[j].filterValue;
										modelSelect.options.add(opt1,1);
									}
								}
						}
						opt1 = doc.createElement('OPTION');
						opt1.value = "-1";
						opt1.text = "Select " + filterDescription;
						modelSelect.options.add(opt1,0);
						modelSelect.selectedIndex = 0;

						$("#spinner_model_" + columnNumber ).fadeOut("slow", function () {
					    	$("#select_fq_" + columnNumber + "_" + filterSequenceId).fadeIn("slow");
						});

						//CHECK FOR PRESELECT param

						if(filterSequenceId == 1 ){
							var preselect = getParameter("preselect" + (columnNumber-1));
							if( preselect != "0" ){
								$("#select_fq_" + columnNumber + "_" + filterSequenceId).val(preselect);

								if( $("#select_fq_" + columnNumber + "_" + filterSequenceId).val() != "-1" ){
									getSelectedVehicleImage(columnNumber, null, null);
									getVehicleFilterQuestions(1, $("#select_fq_" + columnNumber + "_" + filterSequenceId).val() , columnNumber);
								}else{
									document.getElementById( "select_fq_" + columnNumber + "_" + filterSequenceId ).selectedIndex = 1;
									getSelectedVehicleImage(columnNumber, null, null);
									getVehicleFilterQuestions(1, $("#select_fq_" + columnNumber + "_" + filterSequenceId).val() , columnNumber);
								}
							}
						}
						//Hardcoded work-around to answer the second question automatically if PL
						if( filterSequenceId == 2 ){
							var preselect = getParameter("preselect" + (columnNumber-1));
							if( preselect == "Pro_Loader" ){
								$("#select_fq_" + columnNumber + "_" + filterSequenceId).val("Pro Loader");
								if( $("#select_fq_" + columnNumber + "_" + filterSequenceId).val() != "-1" ){
									getVehicleFilterQuestions(2, $("#select_fq_" + columnNumber + "_" + filterSequenceId).val() , columnNumber);
								}
							}
						}

						break;
					}
				}
			}

		}else{
			$("#spinner_model_" + columnNumber ).fadeOut("fast", function () {
				$("#select_fq_" + columnNumber + "_" + filterSequenceId).fadeIn("slow");
			});
		}

	}
}

/*
Get the model filter grid for the choices if a question is answered
*/
function getVehicleFilterQuestions(filterSequenceId, answerId, columnNumber) {

	resetFilterChoices( columnNumber, filterSequenceId );

	if(answerId == -1)
		return;


	select = filterSequenceId;
	select++;



	if( ! modelYearIdArray[columnNumber] || modelYearIdArray[columnNumber] == -1 ){
		return;
	}

	$("#spinner_model_" + columnNumber ).fadeIn("slow");

	setSelectedVehicleName(modelYearIdArray[columnNumber], columnNumber);

 	acodes = "";
	url = BASE_AJAX_URL + "/" + ACTION_VEHICLE_SELECTION + "/" + FUNCTION_GET_VEHICLE_FILTER_QUESTIONS + "?";
	url += "modelYearId=" + modelYearIdArray[columnNumber];
	if( filterSequenceId ){
		url += "&filterSequence=" + filterSequenceId;
	}
	if( answerId ){
		url += "&answerId=" + answerId;
	}
	if( filterSequenceId && filterSequenceId != 1 ){
		//alert(aggregateAcodesHistory[columnNumber][filterSequenceId]);
		if(aggregateAcodesList[columnNumber] && aggregateAcodesList[columnNumber] != null && aggregateAcodesList[columnNumber] != 'null'){
			//url += "&aCodeList=" + aggregateAcodesList[columnNumber];
			url += "&aCodeList=" + aggregateAcodesHistory[columnNumber][filterSequenceId];
		}
	}

 	$.getJSON(url, function(json, textResponse){
		if( json ){
			filterGridArray[columnNumber] = json;
			completeGetVehicleFilterQuestions(filterSequenceId, columnNumber);
		}
	});
}


