﻿

var vehicleLocation = "Any"
var vehicleType = "Any";
var vehicleConditionType = "Any";

// Gets Account's make list from the Web service.
function GetAccountMakeListByLocation() {

    var selectedLocation = getLocationListObject();
    if (selectedLocation != null) {
        // Filter Makes if Locations has been selected
        vehicleLocation = selectedLocation.value;
    }

    // Call the Web service method to change the models.
    AutoExposure.CarService.GetMakeListByLocation(vehicleLocation, vehicleType, vehicleConditionType,
                        SucceededCallback, FailedCallback);

}

function OnLocationChange(comboObject) {
    // Get the user's selected Location.
    vehicleLocation = comboObject.value;

    var selectMakeObject = getMakeListObject();
    //disable makes select object
    selectMakeObject.disabled = true;

    var hiddenObject = getMakeHolderObject();
    hiddenObject.setAttribute("state", "");
    
    var selectModelObject = getModelListObject();
    //Leave "Model/Any" item
    selectModelObject.options.length = 1;
    
    // Call the Web service method to change the makes.
    AutoExposure.CarService.GetMakeListByLocation(
                vehicleLocation, vehicleType, vehicleConditionType, SucceededCallback, FailedCallback);
}


// Pass the make selected
// by the user to the Web service.
function OnMakeChange(comboObject) {
    // Get the user's selected Make.
    var selectionValue = comboObject.value;

    var selectObject = getModelListObject();
    //disable models select object
    selectObject.disabled = true;

    if (selectionValue != "Any") {
        // Call the Web service method to change the models.
        AutoExposure.CarService.GetModelListByLocation(
                vehicleLocation, selectionValue, vehicleType, vehicleConditionType, SucceededCallback, FailedCallback);
    }
    else {

        //Leave "Model/Any" item
        selectObject.options.length = 1;
        selectObject.disabled = false;
    }

    var hiddenObject = getMakeHolderObject();
    //save selected Make
    hiddenObject.value = selectionValue;
}

function OnModelChange(comboObject) {

    var hiddenObject = getModelHolderObject();
    //save selected Model
    hiddenObject.value = comboObject.value;
}

// Callback function to process the type returned by the Web service.
function SucceededCallback(result, userContext, methodName) {
    switch (methodName) {
        case ("GetMakeListByLocation"):
            {
                var selectObject = getMakeListObject();
                if (selectObject != null) {

                    //Leave "Model/Any" item
                    selectObject.options.length = 1;

                    for (var i = 0; i < result.length; i++) {

                        option = new Option(result[i], result[i]);
                        // Keep 'any' item in select
                        selectObject.options[i + 1] = option;
                    }

                    //Set selected state
                    var hiddenObject = getMakeHolderObject();
                    if (hiddenObject != null) {

                        hiddenObject.value = selectObject.value;

                        var stateValue = hiddenObject.getAttribute("state");
                        if (stateValue != "") {

                            selectObject.value = stateValue;
                            //Load all models of selected Make
                            AutoExposure.CarService.GetModelListByLocation(
                                    vehicleLocation, stateValue, vehicleType, vehicleConditionType, SucceededCallback, FailedCallback);
                        }
                    }

                    // Release makes object
                    selectObject.disabled = false;
                }

                break;
            }
        case ("GetModelListByLocation"):
            {
                // Get the select object.
                var selectObject = getModelListObject();
                if (selectObject != null) {

                    //Leave "Model/Any" item
                    selectObject.options.length = 1;

                    for (var i = 0; i < result.length; i++) {

                        option = new Option(result[i], result[i]);
                        // Keep 'any' item in select
                        selectObject.options[i + 1] = option;
                    }

                    //Set selected state
                    var hiddenObject = getModelHolderObject();
                    if (hiddenObject != null) {
                        //Save selected Model
                        hiddenObject.value = selectObject.value;

                        var stateValue = hiddenObject.getAttribute("state");
                        if (stateValue != "") {
                            selectObject.value = stateValue;
                            //skip next execution
                            hiddenObject.setAttribute("state", "");
                        }
                    }

                    selectObject.disabled = false;

                    //switch back to Makes select object
                    selectObject = getMakeListObject();

                    hiddenObject = getMakeHolderObject();
                    if (hiddenObject != null) {
                        //save selected Make
                        hiddenObject.value = selectObject.value;
                    }
                }

                break;
            }
        default:
            {
                //todo 
            }
    }
}

function SetSelectState(selectObject, value) {

    var i = 1;
    value = value.toLowerCase();
    for (var option in selectObject.options) {
        if (selectObject.options[i].value.toLowerCase() == value) {
            selectObject.options[i].selected = true;
            break;
        }
        i++;
    }

}

// Callback function invoked on failure 
// of the Web service methods.
function FailedCallback(error, userContext, methodName) {
    if (error !== null) {
        //displayResult.innerHTML = "An error occurred: " + error.get_message();
        //alert("An error occurred, please try again..."); 
    }
}

// Gets the Web service selection list colors 
// and the default color.
function pageLoad() {

    //Only for Search Panel contained pages
    if (document.getElementById("pnlSearch") != null) {
        // Get selection list makes.
        GetAccountMakeListByLocation();

    }
}


if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

