﻿/// <reference name="MicrosoftAjax.js" />

function addToCartClick() 
{
    var isVehicleSpecific = $get("isVehicleSpecific").value;
    var variantID = $get("selectedVariant").value;

    if (isVehicleSpecific == "False" && variantID.length > 0) {
        return true;
    }

    if (!isVehicleSelected())
    {
        alert("Please select your vehicle.");
        return false;
    }
    else
    {
        return true;
    }
}

function isVehicleSelected() {
    var returnValue = false;
    var variantID = $get("selectedVariant").value;
    if (variantID.indexOf("|") != -1) {
        returnValue = true;
    }
    return returnValue;
}

function setVehicle(vehicleID)
{
    var variantID = $get("selectedVariant").value;
        
    if (variantID.indexOf("|") != -1)   // has previous vehicle?
    {
        variantID = variantID.substring(0, variantID.indexOf("|")); // remove previous vehicle
    }
    variantID += "|" + vehicleID;       // add pipe and vehicle id to variant id

    $get("selectedVariant").value = variantID;
    $get("selectedVehicle").value = vehicleID;

    getContent();
    
} 

function getContent()
{
    var variantID = $get("selectedVariant").value;
    if (variantID.indexOf("|") != -1)   // has previous vehicle?
    {
        variantID = variantID.substring(0, variantID.indexOf("|")); // remove previous vehicle
    }
    var vehicleID = $get("selectedVehicle").value;

    if (vehicleID == "")
    {
        vehicleID = 0;
    }

    AutoAnything.Website.AutoAnything.WebServices.VehicleFormPartNumberWebService.GetContent(variantID, vehicleID, getContentCallback, onError);
}

function getContentCallback(result)
{
    if (result != null)
    {
        var vehicleVariantContentSpan = $get("vehicleVariantContent"); 
        if (typeof(vehicleVariantContentSpan) != 'undefined' && vehicleVariantContentSpan != null)
        {
            vehicleVariantContentSpan.innerHTML = result.VehicleVariantContent;
        }
                
        var m = result.MediaFilename;
        if (m != null && m != "")
        {
            $get("productImageFileName").src = result.MediaFilename;
        }

        var productImageDescriptionDiv = $get("productImageDescription");

        if (typeof(productImageDescriptionDiv) != 'undefined' && productImageDescriptionDiv != null)
        {
            productImageDescriptionDiv.innerHTML = result.MediaDesc;
        }

        var largeMediaID = result.MediaID;
        if (largeMediaID != null && largeMediaID != 0)
        {
            var LargeImageIDHidden = $get("LargeImageID");
            if (typeof(LargeImageIDHidden) != 'undefined' && LargeImageIDHidden != null)
            {
                LargeImageIDHidden.value = result.MediaID;
            }
        }
    }
}

function selectRadioButton()
{
    // click single radio button
    var inputs = document.getElementsByTagName("input");

    for (var i = 0; i < inputs.length; i++)
    {
        if (inputs[i].type == "radio")
        {
            inputs[i].click();
        }
    }
}

function removeVehicleIDFromVariantID()
{
    var variantID = $get("selectedVariant").value;

    if (variantID.indexOf("|") != -1)// has previous vehicle?
    {
        variantID = variantID.substring(0, variantID.indexOf("|")); // remove previous vehicle
    }
    $get("selectedVariant").value = variantID;
}

// 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>";
    document.getElementById("vehicleModelList").innerHTML = s.join("");
    vehicleModel.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>";
    document.getElementById("vehicleYearList").innerHTML = s.join("");
    vehicleYears.disabled = "true";
}

// Remove all submodels in the submodel list box
// set the selected option to "Select Year First"
function clearYears()
{
    var vehicleSubModels = document.getElementById("vehicleSubModel");
    vehicleSubModels.options.length = 1;
    vehicleSubModels.options[0].value = "";
    vehicleSubModels.options[0].text = "Select Year First";

    var s = new Array();
    s[s.length] = "<select id=\"vehicleSubModel\">";
    s[s.length] = "<option value=\"\">Select Year First</option>";
    s[s.length] = "</select>";
    document.getElementById("vehicleSubModelList").innerHTML = s.join("");
    //document.getElementById("submitVehicleImage").style.marginTop = "0px";
}

// Resets all four vehicle dropdown menus
function resetDropDowns()
{
    clearMakes();
    clearModels();
    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 getVehicleModels(variantID, vehicleMakeID)
{
    clearYears();
    clearModels();
    removeVehicleIDFromVariantID();

    var partNumber = document.getElementById("partNumber").value;

    if (vehicleMakeID == "")
    {
        clearMakes();
    }
    else
    {
        displayLoading();

        AutoAnything.Website.AutoAnything.WebServices.VehicleFormPartNumberWebService.GetVehicleModels(variantID, vehicleMakeID, partNumber, getVehicleModelsCallback, onError);
    }

    var vehicleYear = document.getElementById("vehicleYear");
    var vehicleModel = document.getElementById("vehicleModel");
    var vehicleSubModel = document.getElementById("vehicleSubModel");
    if (vehicleYear != null)
    {
        vehicleYear.disabled = "true";
        vehicleModel.disabled = "true";
        vehicleSubModel.disabled = "true";
    }
}

function getVehicleModelsCallback(result)
{
    if (result != null)
    {
        var vehicleModelIDFromQueryString = result[0].VehicleModelIDFromQueryString;

        var s = new Array();
        s[s.length] = "<select id=\"vehicleModel\" onchange=\"getVehicleYears(variantID, " + result[0].VehicleMakeID + ", this.options[selectedIndex].value);\">";
        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("");

        if (vehicleModelIDFromQueryString != 0)
        {
            document.getElementById("vehicleYear").options[0].text = "Select Year";
        }
        else
        {
            document.getElementById("vehicleYear").options[0].text = "Select Model First";
        }

        //if vehicleModelIDFromQueryString exists from Brand, select it
        var vehicleModel = document.getElementById("vehicleModel");

        //loop through and grab index of model
        var indexOfVmoID = 0;
        for (var j = 0; j < vehicleModel.length; j++)
        {
            if (vehicleModelIDFromQueryString == vehicleModel.options[j].value)
            {
                indexOfVmoID = j;
                break;
            }
        }

        //select make in drop down		
        if (indexOfVmoID > 0)
        {
            document.getElementById("vehicleModel").selectedIndex = indexOfVmoID;
        }
        else
        {
            document.getElementById("vehicleModel").selectedIndex = 0;
        }

        document.getElementById("vehicleModel").focus();

        hideLoading();
    }
}

function getVehicleYears(variantID, vehicleMakeID, vehicleModelID)
{
    clearYears();
    removeVehicleIDFromVariantID();
    var partNumber = document.getElementById("partNumber").value;
        
    if (vehicleModelID == "")
    {
        clearModels();
    }
    else
    {
        displayLoading();
        AutoAnything.Website.AutoAnything.WebServices.VehicleFormPartNumberWebService.GetVehicleYears(variantID, vehicleMakeID, vehicleModelID, partNumber, getVehicleYearsCallback, onError);
    }


    var vehicleYear = document.getElementById("vehicleYear");
    var vehicleSubModel = document.getElementById("vehicleSubModel");
    if (vehicleYear != null)
    {
        vehicleYear.disabled = "true";
        vehicleSubModel.disabled = "true";
    }
}

function getVehicleYearsCallback(result)
{
    if (result != null)
    {
        var vehicleYearIDFromQueryString = result[0].VehicleYearIDFromQueryString;

        var s = new Array();
        s[s.length] = "<select id=\"vehicleYear\" onchange=\"submitVehicle();\">";
        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>";
        s[s.length] = "<span id=\"vehicleYearLoading\"></span>";
        document.getElementById("vehicleYearList").innerHTML = s.join("");

        //if vehicleYearIDFromQueryString exists from Brand, select it
        var vehicleYear = document.getElementById("vehicleYear"); //vehicle year drop down list object

        //loop through and grab index of year
        var indexOfVyrID = 0;
        for (var j = 0; j < vehicleYear.length; j++)
        {
            if (vehicleYearIDFromQueryString == 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;
        }

        //select year dropdown
        document.getElementById("vehicleYear").focus();

        hideLoading();
    }
}

function submitVehicle()
{
    var vehicleMake = document.getElementById("vehicleMake");
    var vehicleMakeID = vehicleMake.options[vehicleMake.options.selectedIndex].value;
    var vehicleModel = document.getElementById("vehicleModel");
    var vehicleModelID = vehicleModel.options[vehicleModel.options.selectedIndex].value;
    var vehicleYear = document.getElementById("vehicleYear");
    var vehicleYearID = vehicleYear.options[vehicleYear.options.selectedIndex].value;

    var partNumber = document.getElementById("partNumber").value;

    if (vehicleMakeID == "" || vehicleModelID == "" || vehicleYearID == "")
    {
        clearYears();

        var vehicleSubModel = document.getElementById("vehicleSubModel");
        if (vehicleSubModel != null)
        {
            vehicleSubModel.disabled = "true";
        }
    }
    else
    {
        displayLoading();
        removeVehicleIDFromVariantID();
        AutoAnything.Website.AutoAnything.WebServices.VehicleFormPartNumberWebService.SubmitVehicle(variantID,
                                                                                                    vehicleMakeID,
                                                                                                    vehicleModelID,
                                                                                                    vehicleYearID,
                                                                                                    visitID, 
                                                                                                    partNumber,
                                                                                                    submitVehicleCallback,
                                                                                                    onError);
    }
}

function submitVehicleCallback(result)
{
    if (result != null)
    {
        var max_vehicle_submodel_desc = 0;
        var s = new Array();
        s[s.length] = "<select id=\"vehicleSubModel\" onchange=\"submitSubModel();\" [StylePlaceHolder]>";
        s[s.length] = "<option value=\"\">Select Submodel</option>";

        if (result.length == 1)
        {
            //add one submodel and store it's length
            max_vehicle_submodel_desc = result[0].VehicleSubModelDescription.length;
            s[s.length] = "<option value=\"" + result[0].VehicleID + "\">" + result[0].VehicleSubModelDescription + "</option>";
        }
        else
        {
            //populate list with returned submodels
            for (var i = 0; i < result.length; i++)
            {
                //retain max desc
                max_vehicle_submodel_desc = Math.max(max_vehicle_submodel_desc, result[i].VehicleSubModelDescription.length);
                s[s.length] = "<option value=\"" + result[i].VehicleID + "\">" + result[i].VehicleSubModelDescription + "</option>";
            }
        }
        s[s.length] = "</select>";

        //get style and replace placeholder
        s[0] = s[0].replace("[StylePlaceHolder]", getSubmodelStyle(max_vehicle_submodel_desc));
        hideLoading();
        document.getElementById("vehicleSubModelList").innerHTML = s.join("");
    }
}

function submitSubModelForSubModelDLL() {

    if (isIE()) {
        var vehicleSubModel = document.getElementById("ctl00$ctl00$BodyCPH$ProductCPH$priceStackControl$vehicleFormPartNumber$subModelDDL");
    }
    else {
        var vehicleSubModel = document.getElementById("ctl00_ctl00_BodyCPH_ProductCPH_priceStackControl_vehicleFormPartNumber_subModelDDL");
    }

    var vehicleID = vehicleSubModel.options[vehicleSubModel.options.selectedIndex].value;

    if (vehicleID != "") {
        setVehicle(vehicleID);
        // disable submit button (ie6 bug)
        //var button = document.getElementById("vehicleSubmitButton").href = "#";
    }
    else {
        removeVehicleIDFromVariantID();
    }
}

function submitSubModel()
{
    var vehicleSubModel = document.getElementById("vehicleSubModel");
    var vehicleID = vehicleSubModel.options[vehicleSubModel.options.selectedIndex].value;

    if (vehicleID != "")
    {
        setVehicle(vehicleID);
        // disable submit button (ie6 bug)
        //var button = document.getElementById("vehicleSubmitButton").href = "#";
    }
    else
    {
        removeVehicleIDFromVariantID();
    }
}

function validateSubModel()
{
    var vehicleSubModel = document.getElementById("vehicleSubModel");
    var vehicleSubModelID = vehicleSubModel.options[vehicleSubModel.options.selectedIndex].value;

    if (vehicleSubModelID == "")
    {
        submitAlert("submodel");
    }
}

function validateVehicle()
{
    var vehicleMake = document.getElementById("vehicleMake");
    var vehicleMakeID = (vehicleMake != null) ? vehicleMake.options[vehicleMake.options.selectedIndex].value : " ";
    var vehicleModel = document.getElementById("vehicleModel");
    var vehicleModelID = (vehicleModel != null) ? vehicleModel.options[vehicleModel.options.selectedIndex].value : " ";
    var vehicleYear = document.getElementById("vehicleYear");
    var vehicleYearID = (vehicleYear != null) ? vehicleYear.options[vehicleYear.options.selectedIndex].value : " ";
    var vehicleSubModel = document.getElementById("vehicleSubModel");
    var vehicleSubModelID = (vehicleSubModel != null) ? vehicleSubModel.options[vehicleSubModel.options.selectedIndex].value : " ";
    var error_type = "";

    //in reverse order
    if (vehicleSubModelID == "") error_type = "submodel";
    if (vehicleYearID == "") error_type = "year";
    if (vehicleModelID == "") error_type = "model";
    if (vehicleMakeID == "") error_type = "make";

    if (error_type != "")
    {
        submitAlert(error_type);
    }
}

function submitAlert(selectionType)
{
    var s = "Select your vehicle.";
    switch (selectionType)
    {
        case "submodel":
            //only show message is submodel is visible
            if (document.getElementById("vehicleSubModelList").style.display != "none")
            {
                alert(s);
            }
            break;
        case "year":
            alert(s);
            document.getElementById("vehicleYear").focus();
            break;
        case "model":
            alert(s);
            document.getElementById("vehicleModel").focus();
            break;
        case "make":
            alert(s);
            document.getElementById("vehicleMake").focus();
            break;
    }
}

function getSubmodelStyle(numCharacters)
{
    var newSubmodelStyleForIE = "";
    var selectWidth = numCharacters * 6 + 10; // 5 pixels/char + 10 extra

    //var submitVehicleButton = document.getElementById("submitVehicleImage");

    //only set style if greater than 40 characters	
    if (numCharacters > 40 && isIE())
    {
        newSubmodelStyleForIE = "style=\"z-index: 100; width: " + selectWidth + "px;\"";
        
        //submitVehicleButton.style.marginTop = "27px";
    }

    return newSubmodelStyleForIE;
}

function isIE()
{
    var isMac = (navigator.appVersion.indexOf("Mac") != -1) ? true : false;
    var NS4 = (document.layers) ? true : false;
    var IEmac = ((document.all) && (isMac)) ? true : false;
    var IE4plus = (document.all) ? true : false;
    var IE4 = ((document.all) && (navigator.appVersion.indexOf("MSIE 4.") != -1)) ? true : false;
    var IE5 = ((document.all) && (navigator.appVersion.indexOf("MSIE 5.") != -1)) ? true : false;
    var IE6 = ((document.all) && (navigator.appVersion.indexOf("MSIE 6.") != -1)) ? true : false;
    var ver4 = (NS4 || IE4plus) ? true : false;
    var NS6 = (!document.layers) && (navigator.userAgent.indexOf('Netscape') != -1) ? true : false;
    return (IEmac || IE4plus || IE4 || IE5 || IE6) ? true : false;
}

function isIE6()
{
    return ((document.all) && (navigator.appVersion.indexOf("MSIE 6.") != -1)) ? true : false;
}