
function LoadDropDown(element, selectedValue, initialValue, ary){
	
	element.options.length = 0; //reset the states dropdown
		
	if(initialValue != ""){
		element.options[element.options.length] = new Option(initialValue, "");
	}
	
	for (var i=0; i<ary.length; i++)
	{						
		var opt = new Option(ary[i].Text, ary[i].Value);
		element.options[element.options.length] = opt;
		
		if(ary[i].Value == selectedValue){
			opt.selected = true;		
		}
		else {
			opt.selected =false;
		}		
	}
}

function LoadYears(type, selectedYear, yearFieldName, makeFieldName, modelFieldName){
	var selYear = document.getElementById(yearFieldName);	
	
	var selMake = document.getElementById(makeFieldName + "_1");
	var txtMake = document.getElementById(makeFieldName + "_2");
	
	var selModel = document.getElementById(modelFieldName + "_1");
	var txtModel = document.getElementById(modelFieldName + "_2");
	
	var response = FormBuilderManager.GetYears(type);	
	var aryValues = response.value;	
	
	//if there is an error reading the year, populate it in the client
	if(! IsValidResponse(response) || aryValues.length == 0){
	
		//This code is only execute if there was an error when reading the years from the server
		var currentYear = (new Date()).getYear() + 1;
		selYear.options.length = 0;
		selYear.options[selYear.options.length] = new Option("--- Select a year ---", "");				
		for(var i=currentYear; i>=1950; i--){
			var opt = new Option(i, i);
			selYear.options[selYear.options.length] = opt;
		
			if(i == parseInt(selectedYear)){
				opt.selected = true;		
			}
			else {
				opt.selected =false;
			}		
		}
	}
	else{
		LoadDropDown(selYear, selectedYear, "--- Select a year ---", aryValues);
	}
	selYear.disabled = false;
	selMake.disabled = true;
	selModel.disabled = true;
	
	selMake.style.display = "block";
	txtMake.style.display = "none";
	txtMake.value = "";
	
	selModel.style.display = "block";
	txtModel.style.display = "none";
	txtModel.value = "";
	
	selMake.selectedIndex = 0;
	selModel.selectedIndex = 0;
}

function LoadMakes(type, fieldName, selectedMake, modelFieldName, bvdid, scfgid, indid, siteMakes){	
	
	var selMake = document.getElementById(fieldName + "_1");
	var txtMake = document.getElementById(fieldName + "_2");
	
	var selModel = document.getElementById(modelFieldName + "_1");
	var txtModel = document.getElementById(modelFieldName + "_2");
		
	var response = FormBuilderManager.GetMakes(type, bvdid, scfgid, indid, siteMakes);
	var aryValues = response.value;
	
	var isValid = IsValidResponse(response)
	if(! isValid || aryValues.length == 0){
		
		//if there was an error getting the makes of if the make list was empty, 
		//display text fields instead of drop downs		
		if(!isValid){
			alert("invalid response. error:" + response.error);
		}
		selMake.style.display = "none";
		selMake.selectedIndex = 0;
		
		txtMake.style.display = "block";
		txtMake.value = selectedMake;
		
		selModel.style.display = "none";
		selModel.selectedIndex = 0;
		
		txtModel.style.display = "block";
		txtModel.value = "";
	}
	else{
				
		selMake.disabled = false;
		selMake.style.display = "block";
		txtMake.style.display = "none";
		
		selModel.disabled = true;
		selModel.selectedIndex = 0;
		selModel.style.display = "block";		
		txtModel.style.display = "none";
		
		LoadDropDown(selMake, selectedMake, "--- Select a Manufacturer ---", aryValues);	
	}
}


function LoadModels(year, make, fieldName, selectedModel){	
	
	var response = FormBuilderManager.GetModels(year, make);
	var aryItems = response.value;
	var selModels = document.getElementById(fieldName + "_1");
	var txtModels = document.getElementById(fieldName + "_2");
	
	if(! IsValidResponse(response) || aryItems.length == 0){
		//alert("There was an error processing this request. Please refresh the page and try again. error:" + response.error);
		selModels.style.display="none";	
		selModels.selectedIndex = 0;	
		txtModels.style.display = "block";
		txtModels.value = selectedModel;
	}
	else{
		selModels.style.display = "block";
		selModels.disabled = false;
		txtModels.style.display = "none";
		txtModels.value = "";
		LoadDropDown(selModels, selectedModel, "--- Select a model ---", aryItems);
	}	
}


function LoadProductModels(index, modelControlName, selecteModel){
	
	var modelControl = document.getElementById(modelControlName);
	
	if(index < 0){
		//if the "Select a product" is selected, disable the model drop down and return
		modelControl.disabled = true;
		return
	}
	else{
		modelControl.disabled = false;
	}
	
	var aryModels = aryProductModels[index].split("||");
	
	modelControl.options.length = 0;
	modelControl.options[modelControl.options.length] = new Option("--- Select a model ---", "");
	
	for(var i=0; i<aryModels.length; i++){
		var opt = new Option(aryModels[i], aryModels[i]);
		modelControl.options[modelControl.options.length] = opt;
	
		if(aryModels[i] == selecteModel){
			opt.selected = true;
		}
		else {
			opt.selected = false;
		}
	}
	

}

function IsValidResponse(response){
	//if the server-side code threw an exception
	if (response.error != null)
	{		
		return false; 		
	}
	else if(response.value == null || typeof(response.value) != "object")
	{		
		return false;
	}
	else
	{
		return true;
	}
} 

