﻿
// Remove all models in model list box
// set the selected option to "Select Make First"
function clearYears()
{
    var vehicleYear = document.getElementById("vehicleYear");
    if (vehicleYear != null)
    {
        vehicleYear.options[0].selected = true;
    }

    var s = new Array();
    s[s.length] = "<select id=\"vehicleMake\">";
    s[s.length] = "<option value=\"\">Select Make</option>";
    s[s.length] = "</select>";

    var vehicleMakeList = window.document.getElementById("vehicleMakeList");
    if (vehicleMakeList != null)
    {
        vehicleMakeList.innerHTML = s.join("");
        vehicleMakeList.style["background"] = "none";
    }

    var vehicleModelList = document.getElementById("vehicleModelList");
    if (vehicleModelList != null)
    {
        vehicleModelList.style["background"] = "none";
    }

    //disable vehicleMake drop down list
    var vehicleMake = document.getElementById("vehicleMake");
    if (vehicleMake != null)
    {
        vehicleMake.disabled = "true";
    }
}

// Remove all models in model list box
// set the selected option to "Select Make First"
function clearMakes()
{
    var vehicleModels = document.getElementById("vehicleModel");
    vehicleModels.options.length = 1;
    vehicleModels.options[0].value = "";
    vehicleModels.options[0].text = "Select Make First";

    var s = new Array();
    s[s.length] = "<select name=\"vehicleModel\" id=\"vehicleModel\">";
    s[s.length] = "<option value=\"\">Select Make First</option>";
    s[s.length] = "</select>";
    s[s.length] = "<span id=\"vehicleModelLoading\"></span>";
    window.document.getElementById("vehicleModelList").innerHTML = s.join("");

    document.getElementById("vehicleYearList").style["background"] = "none";
    document.getElementById("vehicleMakeList").style["background"] = "none";
    document.getElementById("vehicleModelList").style["background"] = "none";

    var vehicleModel = document.getElementById("vehicleModel");
    if (vehicleModel != null)
    {
        vehicleModel.disabled = "true";
    }
}

// Resets all three vehicle dropdown menus
function resetDropDowns()
{
    clearMakes();
    clearYears();
}

function displayLoading()
{
    document.getElementById("vehicleFormLoading").style["visibility"] = "visible";
}

function hideLoading()
{
    document.getElementById("vehicleFormLoading").style["visibility"] = "hidden";
}

function onError(error)
{
    alert("An error has occured while trying to process your request. Please refresh the browser and try again.");
}

function getVehicleMakes(vehicleYearID, selectedVehicleMakeName)
{
    if (typeof (selectedVehicleMakeName) == 'undefined' || selectedVehicleMakeName == null)
    {
        selectedVehicleMakeName = "";
    }

    clearMakes();
    if (vehicleYearID == "")
    {
        clearYears();
    }
    else
    {
        displayLoading();
        AutoAnything.Website.AutoAnything.WebServices.VehicleFormPartsWebService.GetVehicleMakes(endecaQueryString, vehicleYearID, getVehicleMakesCallback, onError, selectedVehicleMakeName);
    }
}

function getVehicleMakesCallback(result, userContext)
{
    if (result != null && result.length > 0)
    {
        var s = new Array();
        s[s.length] = "<select name=\"vehicleMake\" id=\"vehicleMake\" onchange=\"getVehicleModels(this.options[selectedIndex].value);\">";
        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>";
        s[s.length] = "<span id=\"vehicleMakeLoading\"></span>";
        window.document.getElementById("vehicleMakeList").innerHTML = s.join("");
        window.document.getElementById("vehicleModel").options[0].text = "Select Make First";

        if (typeof (userContext) != 'undefined' && userContext != null && userContext.length > 0)
        {
            selectOptionByText("vehicleMake", userContext);

            //get model id
            var makelID = getValueByText("vehicleMake", userContext); //userContext == selectedVehicleModelName
            if (makelID != null && makelID > 0)
            {
                getVehicleModels(makelID);
            }
        }
    }
    else
    {
        resetDropDowns();
    }
    hideLoading();
}

function getVehicleModels(vehicleMakeID)
{
    if (vehicleMakeID == "")
    {
        clearMakes();
    }
    else
    {
        displayLoading();
        AutoAnything.Website.AutoAnything.WebServices.VehicleFormPartsWebService.GetVehicleModels(endecaQueryString, vehicleMakeID, getVehicleModelsCallback, onError);
    }

    var vehicleModel = document.getElementById("vehicleModel");
    if (vehicleModel != null)
    {
        vehicleModel.disabled = "true";
    }
}

function getVehicleModelsCallback(result)
{
    if (result != null && result.length > 0)
    {
        var s = new Array();
        s[s.length] = "<select name=\"vehicleModel\" id=\"vehicleModel\" onchange=\"submitVehicle();\">";
        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>";
        s[s.length] = "<span id=\"vehicleModelLoading\"></span>";
        document.getElementById("vehicleModelList").innerHTML = s.join("");

        document.getElementById("vehicleYearList").style["background"] = "none";
        document.getElementById("vehicleMakeList").style["background"] = "none";
        document.getElementById("vehicleModelList").style["background"] = "none";
    }
    hideLoading();
}

function submitVehicle()
{
    var vehicleMake = document.getElementById("vehicleMake");
    var endecaVehicleMakeID = vehicleMake.options[vehicleMake.options.selectedIndex].value;
    var vehicleMakeName = vehicleMake.options[vehicleMake.options.selectedIndex].text;

    var vehicleModel = document.getElementById("vehicleModel");
    var endecaVehicleModelID = vehicleModel.options[vehicleModel.options.selectedIndex].value;
    var vehicleModelName = vehicleModel.options[vehicleModel.options.selectedIndex].text;

    var vehicleYear = document.getElementById("vehicleYear");
    var endecaVehicleYearID = vehicleYear.options[vehicleYear.options.selectedIndex].value;
    var vehicleYearID = vehicleYear.options[vehicleYear.options.selectedIndex].text;

    if (endecaVehicleMakeID != "" && endecaVehicleModelID != "" && endecaVehicleYearID != "")
    {
        AutoAnything.Website.AutoAnything.WebServices.VehicleFormPartsWebService.SubmitVehicle(endecaQueryString,
                                                                                                      endecaVehicleMakeID,
                                                                                                      vehicleMakeName,
		                                                                                              endecaVehicleModelID,
		                                                                                              vehicleModelName,
		                                                                                              endecaVehicleYearID,
		                                                                                              vehicleYearID,
		                                                                                              visitID,
		                                                                                              path,
		                                                                                              submitVehicleCallback,
		                                                                                              onError);
    }
    else
    {
        alert("Please select your vehicle's year, make and model.");
    }
}

function submitVehicleCallback(result)
{
    if (result != null)
    {
        location.href = result;
    }
}

function selectYearAndLoadMakes(selectedVehicleYearName, selectedVehicleMakeName)
{
    selectOptionByText("vehicleYear", selectedVehicleYearName);

    var yearID = getValueByText("vehicleYear", selectedVehicleYearName);

    if (yearID != null && yearID > 0)
    {
        getVehicleMakes(yearID, selectedVehicleMakeName);
    }
}

function selectOptionByText(selectControlName, text)
{
    var index = 0;
    var input = $get(selectControlName);
    if (typeof (input) != 'undefined' && input != null)
    {
        for (var i = 0; i < input.length; i++)
        {
            if (input.options[i].text == text)
            {
                index = i;
                break;
            }
        }
        if (index > 0)
        {
            input.selectedIndex = index;
        }
        else
        {
            input.selectedIndex = 0;
        }
    }
}

function getValueByText(selectControlName, id)
{
    var returnValue = 0;
    var index = 0;
    var input = $get(selectControlName);
    if (typeof (input) != 'undefined' && input != null)
    {
        for (var i = 0; i < input.length; i++)
        {
            if (input.options[i].text == id)
            {
                index = i;
                break;
            }
        }
        if (index > 0)
        {
            returnValue = input.options[index].value;
        }
    }
    return returnValue;
}