﻿// Remove all models in model list box
// set the selected option to "Select Make First"
function clearMakes()
{
	var vehicleMake = document.getElementById("vehicleMake");
	vehicleMake.options[0].selected = true;

	var vehicleModel = document.getElementById("vehicleModel");
	vehicleModel.options[0].value = "Select Make First";

	var s = new Array();
	s[s.length] = "<select id=\"vehicleModel\">";
	s[s.length] = "<option value=\"\">Select Make First</option>";
	s[s.length] = "</select>";
	window.document.getElementById("vehicleModelList").innerHTML = s.join("");
	
	//disable vehicleModel and vehicleYear drop down list
	if (vehicleModel != null)
	{
		vehicleModel.disabled = "true";
	}

	var vehicleYear = document.getElementById("vehicleYear");
	if (vehicleYear != null)
	{
		vehicleYear.disabled = "true";
	}
}

// Remove all years in year list box
// set the selected option to "Select Model First"
function clearModels()
{
	var vehicleYears = document.getElementById("vehicleYear");
	vehicleYears.options.length = 1;
	vehicleYears.options[0].value = "";
	vehicleYears.options[0].text = "Select Model First";
	
	var s = new Array();
	s[s.length] = "<select id=\"vehicleYear\">";
	s[s.length] = "<option value=\"\">Select Model First</option>";
	s[s.length] = "</select>";
	window.document.getElementById("vehicleYearList").innerHTML = s.join("");
	
	var vehicleYear = document.getElementById("vehicleYear");
	if (vehicleYear != null)
	{
		vehicleYear.disabled = "true";
	}
}

// Remove all makes in make list box
// set the selected option to "Select Make"
function clearMakesForReload()
{
	var vehicleMakes = document.getElementById("vehicleMake");
	vehicleMakes.options.length = 1;
	vehicleMakes.options[0].value = "";
	vehicleMakes.options[0].text = "Select Make";
}

// Resets all three vehicle dropdown menus
function resetDropDowns()
{
	clearModels();
	clearMakes();
}

function getVehicleMakes()
{
	var brandOnly = window.document.getElementById("brandOnly");
	
	var vehicleMakeIDSelected = window.document.getElementById("vehicleMake").value;
	if (vehicleMakeIDSelected == "")
	{
		vehicleMakeIDSelected = 0;
	}

	var vehicleModelIDSelected = window.document.getElementById("vehicleModel").value;
	if (vehicleModelIDSelected == "")
	{
		vehicleModelIDSelected = 0;
	}

	var vehicleYearIDSelected = window.document.getElementById("vehicleYear").value;
	if (vehicleYearIDSelected == "")
	{
		vehicleYearIDSelected = 0;
	}
				
	resetDropDowns();
	clearMakesForReload();
	
	VehicleFormBrandWebService.GetVehicleMakes(brandOnly.checked ? brandPageID : 0, 
	                                           vehicleMakeIDSelected, 
	                                           vehicleModelIDSelected, 
	                                           vehicleYearIDSelected, 
	                                           getVehicleMakesCallback, 
	                                           onBrandError);
}

function getVehicleMakesCallback(result)
{
	if(result != null)
    {
		var vehicleMakeIDSelected = result[0].VehicleMakeIDSelected;
		var vehicleModelIDSelected = result[0].VehicleModelIDSelected;
		var vehicleYearIDSelected = result[0].VehicleYearIDSelected;
		var brandOnly = window.document.getElementById("brandOnly");

        var tempBrandID = brandOnly.checked ? brandPageID : 0;
		var s = new Array();
		s[s.length] = "<select id=\"vehicleMake\" onchange=\"getVehicleModels(" + tempBrandID + ", this.options[selectedIndex].value, " + vehicleModelIDSelected + ", " + vehicleYearIDSelected + ");\">";
		s[s.length] = "<option value=\"\">Select Make</option>";
		for( var i = 0; i < result.length; i++ )
		{
			s[s.length] = "<option value=\"" + result[i].VehicleMakeID + "\">" + result[i].VehicleMakeName + "</option>";
		}
		s[s.length] = "</select>";
		window.document.getElementById("vehicleMakeList").innerHTML = s.join("");
		window.document.getElementById("vehicleModel").options[0].text = "Select Make First";
		window.document.getElementById("vehicleYear").options[0].text = "Select Model First";
		
		if (vehicleMakeIDSelected > 0)
		{
			var vehicleMake	= window.document.getElementById("vehicleMake"); //vehicle model drop down list object

			//loop through and grab index of model
			var indexOfVmkID = 0;
			for (var j = 0; j < vehicleMake.length; j++)
			{
				if (vehicleMakeIDSelected == vehicleMake.options[j].value)
				{
					indexOfVmkID = j;
					break;
				}			
			}

			//select make in drop down		
			if (indexOfVmkID > 0)
			{
				document.getElementById("vehicleMake").selectedIndex = indexOfVmkID; 
				getVehicleModels(brandPageID, vehicleMakeIDSelected, vehicleModelIDSelected, vehicleYearIDSelected);
			}
			else
			{
				document.getElementById("vehicleMake").selectedIndex = 0; 
			}
		}
	}
}

function getVehicleModels(brandPageID, vehicleMakeID, vehicleModelIDSelected, vehicleYearIDSelected)
{
	clearModels();
	if( vehicleMakeID == "" )
	{
		clearMakes();
	}
	else
	{	    
		var brandOnly = window.document.getElementById("brandOnly");
		
		if (vehicleModelIDSelected == null || vehicleModelIDSelected == "")
	    {
	        vehicleModelIDSelected = 0;
	    }	
	    
	    if (vehicleYearIDSelected == null || vehicleYearIDSelected == "")
	    {
	        vehicleYearIDSelected = 0;
	    }
	    		
		VehicleFormBrandWebService.GetVehicleModels(brandOnly.checked ? brandPageID : 0, 
		                                            vehicleMakeID, 
		                                            vehicleModelIDSelected, 
		                                            vehicleYearIDSelected, 
		                                            getVehicleModelsCallback, 
		                                            onBrandError);
	}
	document.getElementById("vehicleYear").disabled = "disabled";
}

function getVehicleModelsCallback(result)
{
    if(result != null)
    {
        var vehicleMakeIDSelected = result[0].VehicleMakeID;
		var vehicleModelIDSelected = result[0].VehicleModelIDSelected;
		var vehicleYearIDSelected = result[0].VehicleYearIDSelected;

		var s = new Array();
		s[s.length] = "<select id=\"vehicleModel\" onchange=\"getVehicleYears(brandPageID, " + result[0].VehicleMakeID + ", this.options[selectedIndex].value, " + vehicleYearIDSelected + ");\">";
		s[s.length] = "<option value=\"\">Select Model</option>";
		for( var i = 0; i < result.length; i++ )
		{
			s[s.length] = "<option value=\"" + result[i].VehicleModelID + "\">" + result[i].VehicleModelName + "</option>";
		}
		s[s.length] = "</select>";
		window.document.getElementById("vehicleModelList").innerHTML = s.join("");
		window.document.getElementById("vehicleYear").options[0].text = "Select Model First";

		if (vehicleModelIDSelected > 0)
		{
			var vehicleModel = window.document.getElementById("vehicleModel"); //vehicle model drop down list object

			//loop through and grab index of model
			var indexOfVmoID = 0;
			for (var j = 0; j < vehicleModel.length; j++)
			{
				if (vehicleModelIDSelected == vehicleModel.options[j].value)
				{
					indexOfVmoID = j;
					break;
				}			
			}

			//select make in drop down		
			if (indexOfVmoID > 0)
			{
				document.getElementById("vehicleModel").selectedIndex = indexOfVmoID; 
				getVehicleYears(brandPageID, vehicleMakeIDSelected, vehicleModelIDSelected, vehicleYearIDSelected);
			}
			else
			{
				document.getElementById("vehicleModel").selectedIndex = 0; 
			}
		}
    }
}

function getVehicleYears(brandPageID, vehicleMakeID, vehicleModelID, vehicleYearIDSelected)
{
	if( vehicleModelID == "" )
	{
		clearModels();
	}
	else
	{
		var brandOnly = window.document.getElementById("brandOnly");
		
		if (vehicleYearIDSelected == null || vehicleYearIDSelected == "")
	    {
	        vehicleYearIDSelected = 0;
	    }
				
		VehicleFormBrandWebService.GetVehicleYears(brandOnly.checked ? brandPageID : 0, 
		                                           vehicleMakeID, 
		                                           vehicleModelID,
		                                           vehicleYearIDSelected, 
		                                           getVehicleYearsCallback, 
		                                           onBrandError);
	}
	
	var vehicleYear = document.getElementById("vehicleYear");
	if(vehicleYear != null)
	{
		vehicleYear.disabled = "true";
	}
}

function getVehicleYearsCallback(result)
{
	if(result != null)
    {
		var vehicleMakeIDSelected = result[0].VehicleMakeIDSelected;
		var vehicleModelIDSelected = result[0].VehicleModelIDSelected;
		var vehicleYearIDSelected = result[0].VehicleYearIDSelected;

		var s = new Array();
		s[s.length] = "<select id=\"vehicleYear\">";
		s[s.length] = "<option value=\"\">Select Year</option>";
		
		for( var i = 0; i < result.length; i++ )
		{
			s[s.length] = "<option value=\"" + result[i].VehicleYearID + "\">" + result[i].VehicleYearID + "</option>";
		}
		s[s.length] = "</select>";
		document.getElementById("vehicleYearList").innerHTML = s.join("");

		if (vehicleYearIDSelected > 0)
		{
			var vehicleYear = window.document.getElementById("vehicleYear"); //vehicle model drop down list object

			//loop through and grab index of model
			var indexOfVyrID = 0;
			for (var j = 0; j < vehicleYear.length; j++)
			{
				if (vehicleYearIDSelected == vehicleYear.options[j].value)
				{
					indexOfVyrID = j;
					break;
				}			
			}

			//select make in drop down		
			if (indexOfVyrID > 0)
			{
				document.getElementById("vehicleYear").selectedIndex = indexOfVyrID; 
			}
			else
			{
				document.getElementById("vehicleYear").selectedIndex = 0; 
			}
		}
	}
}

function submitVehicle()
{
	var vehicleMake = document.getElementById("vehicleMake");
	var vehicleMakeID = vehicleMake.options[vehicleMake.options.selectedIndex].value;
	var vehicleMakeName = vehicleMake.options[vehicleMake.options.selectedIndex].text;
	var vehicleModel = document.getElementById("vehicleModel");
	var vehicleModelID = vehicleModel.options[vehicleModel.options.selectedIndex].value;
	var vehicleModelName = vehicleModel.options[vehicleModel.options.selectedIndex].text;
	var vehicleYear = document.getElementById("vehicleYear");
	var vehicleYearID = vehicleYear.options[vehicleYear.options.selectedIndex].value;
	
	if( vehicleMakeID == "" || vehicleModelID == "" || vehicleYearID == "" )
	{
		alert("Please select your vehicle's make, model, and year before proceeding with your search.");
	}
	else
	{
	    VehicleFormBrandWebService.GetVehicleTypeByMakeModel(vehicleMakeID, 
		                                                     vehicleModelID, 
		                                                     submitVehicleCallback, 
		                                                     onBrandError);
	}
}

function submitVehicleCallback(result)
{
    if(result != null)
    {
        var vehicleMake = document.getElementById("vehicleMake");
	    var vehicleMakeID = vehicleMake.options[vehicleMake.options.selectedIndex].value;
	    var vehicleMakeName = vehicleMake.options[vehicleMake.options.selectedIndex].text;
	    var vehicleModel = document.getElementById("vehicleModel");
	    var vehicleModelID = vehicleModel.options[vehicleModel.options.selectedIndex].value;
	    var vehicleModelName = vehicleModel.options[vehicleModel.options.selectedIndex].text;
	    var vehicleYear = document.getElementById("vehicleYear");
	    var vehicleYearID = vehicleYear.options[vehicleYear.options.selectedIndex].value;
    	
	    var vehicleType = result;
	    if( vehicleType != null && typeof(vehicleType) == "string" )
	    {
		    var vehicleTypeID;
    		
		    switch( vehicleType )
		    {
			    case "CAR":
				    vehicleTypeID = 1;
				    break;
			    case "TRUCK":
				    vehicleTypeID = 3;
				    break;
			    case "SUV":
				    vehicleTypeID = 4;
				    break;
			    case "VAN":
				    vehicleTypeID = 5;
				    break;
			    case "CYCLE":
				    vehicleTypeID = 2;
				    break;
			    default:
				    vehicleTypeID = 1
				    break;
		    }
    		
		    var brandOnly = window.document.getElementById("brandOnly");		
		    if( brandOnly.checked )
		    {
			    var newLocation = "/Brands/SearchResults.aspx?BrandPageID=" + brandPageID + "&VehicleMakeID=" + vehicleMakeID + "&VehicleModelID=" + vehicleModelID + "&VehicleYearID=" + vehicleYearID;
			    window.location = wwwRoot + newLocation;
		    }
		    else
		    {
			    var urlVehicleMakeName = new String(vehicleMakeName);
			    var urlVehicleModelName = new String(vehicleModelName);
			    var urlVehicleType = new String(vehicleType);
    			
			    urlVehicleMakeName = urlVehicleMakeName.toLowerCase().replace(new RegExp(/\//g),"_").replace(new RegExp(/\s/), "-");
			    urlVehicleModelName = urlVehicleModelName.toLowerCase().replace(new RegExp(/\//g),"_").replace(new RegExp(/\s/), "-");
			    urlVehicleType = urlVehicleType.toLowerCase();
    			
			    var newLocation = "/" + urlVehicleType + "/" + urlVehicleMakeName + "/" + urlVehicleModelName + "/96A" + vehicleTypeID + "A" + vehicleMakeID + "A" + vehicleModelID + "A" + vehicleYearID + ".aspx";
			    window.location = wwwRoot + newLocation;
		    }
	    }
    }
}

function onBrandError(error)
{
    alert("An error has occured while trying to process your request. Please refresh the browser and try again.");
}