﻿
//Page Load events
var ddlTyreBrand;
var ddlTyreCategory;
var ddlTyreSize;
var ddlTyreModel;

var ddlPriceFrom;
var ddlPriceTo;

function searchTyre() {

    if (ddlTyreBrand.selectedIndex < 1) {
        alert("Please Select tyre Brand");
        ddlTyreBrand.focus();
        return false;
    }

    if ($get("SelectedPostcode").value.length < 4) {
        alert("Please enter valid Postcode");
        $get("SelectedPostcode").focus();
        return false;
    }

    return true;
}

function pageLoad() {
    ddlTyreBrand = $get("SelectedTyreBrand");
    ddlTyreCategory = $get("SelectedTyreCategory");
    ddlTyreSize = $get("SelectedTyreSize");
    ddlTyreModel = $get("SelectedTyreModel");

    ddlPriceFrom = $get("SelectedPriceFrom");
    ddlPriceTo = $get("SelectedPriceTo");

    $addHandler(ddlTyreBrand, "change", tyreBrandChanged);
    $addHandler(ddlTyreCategory, "change", tyreCategoryChanged);
    $addHandler(ddlTyreSize, "change", tyreSizeChanged);
    $addHandler(ddlPriceFrom, "change", tyrePriceFromChanged);
    $addHandler(ddlPriceTo, "change", tyrePriceToChanged);

    //tyreBrandChanged();
}
//-------------------------------------------------------

function tyreBrandChanged() {
    ddlTyreCategory.length = 0;
    ddlTyreSize.length = 0;
    ddlTyreModel.length = 0;

    if (ddlTyreBrand.selectedIndex > 0) {
        var tyreBrandID = ddlTyreBrand.value;

        Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreCategoryByBrand", false, { "tyreBrandID": tyreBrandID }, bindCategory, bindCategoryErr);
        showProgress('img-category-loading');
        Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreSizeByBrand", false, { "tyreBrandID": tyreBrandID }, bindSize, bindSizeErr);
        showProgress('img-size-loading');
        Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreModelByBrand", false, { "tyreBrandID": tyreBrandID }, bindModel, bindModelErr);
        showProgress('img-model-loading');
    }
    else {
        var newOption = new Option('Select...', '0');
        var newOption2 = new Option('Select...', '0');
        var newOption3 = new Option('Select...', '0');
        ddlTyreCategory.options.add(newOption);
        ddlTyreSize.options.add(newOption2);
        ddlTyreModel.options.add(newOption3);
    }
}

//        function getContent(url, callback) {
//            var request = new Sys.Net.WebRequest();  
//            request.set_url(url);  
//            request.set_httpVerb("GET");  
//            var del = Function.createCallback(getContentResults, callback);  
//            request.add_completed(del);  
//            request.invoke();
//        }
//        function getContentResults(executor, eventArgs, callback) {
//            if (executor.get_responseAvailable()) {
//                callback(eval("(" + executor.get_responseData() + ")"));
//            }
//            else {
//                if (executor.get_timedOut())
//                    alert("Timed Out");
//                else if (executor.get_aborted())
//                    alert("Aborted");
//            }
//         }

function tyreCategoryChanged() {
    ddlTyreSize.length = 0;
    ddlTyreModel.length = 0;

    var tyreBrandID = ddlTyreBrand.value;
    var tyreCategoryID = ddlTyreCategory.value;

    if (ddlTyreCategory.selectedIndex > 0) {
        Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreSizeByBrandAndCategory", false, { "tyreBrandID": tyreBrandID, "tyreCategoryID": tyreCategoryID }, bindSize, bindSizeErr);
        showProgress('img-size-loading');
        Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreModelByBrandAndCategory", false, { "tyreBrandID": tyreBrandID, "tyreCategoryID": tyreCategoryID }, bindModel, bindModelErr);
        showProgress('img-model-loading');
        
    }
    else {
        if (ddlTyreBrand.selectedIndex > 0) {
            Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreSizeByBrand", false, { "tyreBrandID": tyreBrandID }, bindSize, bindSizeErr);
            showProgress('img-size-loading');
            Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreModelByBrand", false, { "tyreBrandID": tyreBrandID }, bindModel, bindModelErr);
            showProgress('img-model-loading');
        }
        else {
            var newOption2 = new Option('Select...', '0');
            var newOption3 = new Option('Select...', '0');
            ddlTyreSize.options.add(newOption2);
            ddlTyreModel.options.add(newOption3);
        }
    }
}
function tyreSizeChanged() {
    ddlTyreModel.length = 0;
    var tyreBrandID = ddlTyreBrand.value;
    var tyreCategoryID = ddlTyreCategory.value;
    var tyreSize = ddlTyreSize.value;

    if (ddlTyreSize.selectedIndex > 0) {
        if (ddlTyreCategory.selectedIndex > 0) {
            Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreModelByBrandCategoryAndSize", false, { "tyreBrandID": tyreBrandID, "tyreCategoryID": tyreCategoryID, "tyreSize": tyreSize }, bindModel, bindModelErr);
            showProgress('img-model-loading');
        }
        else {
            Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreModelByBrandAndSize", false, { "tyreBrandID": tyreBrandID, "tyreSize": tyreSize }, bindModel, bindModelErr);
            showProgress('img-model-loading');
        }
    }
    else {
        if (ddlTyreBrand.selectedIndex > 0 && ddlTyreCategory.selectedIndex > 0) {
            Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreModelByBrandAndCategory", false, { "tyreBrandID": tyreBrandID, "tyreCategoryID": tyreCategoryID }, bindModel, bindModelErr);
            showProgress('img-model-loading');
        }
        else if (ddlTyreBrand.selectedIndex > 0) {
        Sys.Net.WebServiceProxy.invoke("/Services/TyreSearch.asmx", "GetTyreModelByBrand", false, { "tyreBrandID": tyreBrandID }, bindModel, bindModelErr);
        showProgress('img-model-loading');
        }
        else {
            var newOption3 = new Option('Select...', '0');
            ddlTyreModel.options.add(newOption3);
        }
    }
}
function tyrePriceFromChanged() {
}
function tyrePriceToChanged() {
}

function bindCategory(data) {
    hideProgress('img-category-loading');
    var newOption;
    newOption = new Option('Select...', '0');
    ddlTyreCategory.options.add(newOption);
    for (var k = 0; k < data.length; k++) {
        newOption = new Option(data[k].CategoryName, data[k].CategoryID);
        ddlTyreCategory.options.add(newOption);
    }
}
function bindSize(data) {
    hideProgress('img-size-loading');
    var newOption;
    newOption = new Option('Select...', '0');
    ddlTyreSize.options.add(newOption);
    for (var k = 0; k < data.length; k++) {
        newOption = new Option(data[k].SizeName, data[k].SizeName);
        ddlTyreSize.options.add(newOption);
    }
}
function bindModel(data) {
    hideProgress('img-model-loading');
    var newOption;
    newOption = new Option('Select...', '0');
    ddlTyreModel.options.add(newOption);
    for (var k = 0; k < data.length; k++) {
        newOption = new Option(data[k].ModelName, data[k].ModelID);
        ddlTyreModel.options.add(newOption);
    }
}


function bindCategoryErr() {
    hideProgress('img-category-loading');
    alert('Could not load Tyre Categories');
}
function bindSizeErr() {
    hideProgress('img-size-loading');
    alert('Could not load Tyre Size(s)');
}
function bindModelErr() {
    hideProgress('img-model-loading');
    alert('Could not load Tyre Model(s)');
}

function showProgress(id) {
    $get(id).style.visibility = 'visible';
}

function hideProgress(id) {
    $get(id).style.visibility = 'hidden';
}


