﻿var VehicleTypeString = '';
var defaultMakeText = 'Select Brand (0)';
var defaultRangeText = 'Select Model (0)';
var defaultToPriceText = 'Select To Price';
var CheckChangeCount = 0;


$(function () {
    //    $("select[id$='cboMake']").removeAttr('disabled');
    //    $("input[id$='chkNew']").removeAttr('disabled');
    //    debugger
    //    $("input[id$='chkUsed']").attr('disabled', false);
    //    $("input[id$='chkDemo']").removeAttr('disabled');
    //    $("select[id$='cboFromPrice']").removeAttr('disabled');
    //    $("a[id$='hlSearch']").removeAttr('disabled');
    $("select[id$='cboMake']").bind("change", function () {
        //debugger
        if (!BuildVehicleTypeString()) {
            return;
        }

        var Make = $(this).val();
        if (Make != '') {
            ReadRanges(Make, '');
        }
    });
    $("input[id$='chkNew'],input[id$='chkUsed'],input[id$='chkDemo']").bind("click", function () {

        if (!BuildVehicleTypeString()) {
            return;
        }

        CheckChangeCount = 0;

        $("input[id$='chkNew'],input[id$='chkUsed'],input[id$='chkDemo']").attr('disabled', 'disabled');

        var MakeToRemember = $("select[id$='cboMake'] :selected").val();
        var RangeToRemember = $("select[id$='cboRange'] :selected").val();

        ReadMakes(MakeToRemember);

        ReadRanges(MakeToRemember, RangeToRemember);
    });
    $("select[id$='cboFromPrice']").bind("change", function () {

        var FromPrice = $("select[id$='cboFromPrice'] :selected").val();
        if (FromPrice != 'ALL') {
            $("select[id$='cboToPrice']>option").remove();
            $("select[id$='cboToPrice']").attr('disabled', 'disabled');
            $("select[id$='cboToPrice']").get(0).options[0] = new Option(defaultToPriceText, "-1");

            $.ajax({
                type: "GET",
                url: "/AjaxWCFHelper.svc/ReadToPrice/" + FromPrice,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    $("select[id$='cboToPrice']>option").remove();
                    for (var i = 0; i <= response.length - 1; i++) {
                        $("select[id$='cboToPrice']").append($('<option></option>').val(response[i].Key).html(response[i].Value));
                    }

                    $("select[id$='cboToPrice']").removeAttr('disabled');
                },
                error: function (response) {
                    if (response.length != 0)
                        alert(response.status + ' ' + response.responseText);
                },
                beforeSend: AjaxStart($("select[id$='cboFromPrice']")),
                complete: AjaxComplete
            });
        }
        else {
            $("select[id$='cboToPrice']>option").remove();
            $("select[id$='cboToPrice']").get(0).options[0] = new Option(defaultToPriceText, "-1");
        }
    });
    function ReadMakes(MakeToRemember) {
        var makeCbo = $("select[id$='cboMake']");

        $("select[id$='cboMake']>option").remove();
        makeCbo.attr('disabled', 'disabled');
        makeCbo.get(0).options[0] = new Option(defaultMakeText, "-1");

        $.ajax({
            type: "GET",
            url: "/AjaxWCFHelper.svc/ReadMakes/" + VehicleTypeString,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                $("select[id$='cboMake']>option").remove();
                for (var i = 0; i <= response.length - 1; i++) {
                    makeCbo.append($('<option></option>').val(response[i].Key).html(response[i].Value));
                }

                if (MakeToRemember != '')
                    $("select[id$='cboMake']>option[value='" + MakeToRemember + "']").attr("selected", true);

                makeCbo.removeAttr('disabled');

                CheckChangeCount++;
                if (CheckChangeCount == 2) {
                    $("input[id$='chkNew'],input[id$='chkUsed'],input[id$='chkDemo']").removeAttr('disabled');
                    CheckChangeCount = 0;
                }
            },
            error: function (response) {
                if (response.length != 0)
                    alert(response.status + ' ' + response.responseText);
            },
            beforeSend: AjaxStart(makeCbo),
            complete: AjaxComplete
        });
    }
    function ReadRanges(Make, RangeToRemember) {
        var rangeCbo = $("select[id$='cboRange']");

        $("select[id$='cboRange']>option").remove();
        rangeCbo.attr('disabled', 'disabled');
        rangeCbo.get(0).options[0] = new Option("Loading Models...", "-1");

        $.ajax({
            type: "GET",
            url: "/AjaxWCFHelper.svc/ReadRanges/" + VehicleTypeString + "/" + Make,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                $("select[id$='cboRange']>option").remove();
                for (var i = 0; i <= response.length - 1; i++) {
                    rangeCbo.append($('<option></option>').val(response[i].Key).html(response[i].Value));
                }

                if (RangeToRemember != '')
                    $("select[id$='cboRange']>option[value='" + RangeToRemember + "']").attr("selected", true);

                rangeCbo.removeAttr('disabled');

                CheckChangeCount++;
                if (CheckChangeCount == 2) {
                    $("input[id$='chkNew'],input[id$='chkUsed'],input[id$='chkDemo']").removeAttr('disabled');
                    CheckChangeCount = 0;
                }
            },
            error: function (response) {
                if (response.length != 0)
                    alert(response.status + ' ' + response.responseText);
            },
            beforeSend: AjaxStart(rangeCbo),
            complete: AjaxComplete
        });
    }

    function BuildVehicleTypeString() {
        VehicleTypeString = '';
        var NoTypeCount = 0;


        if ($("input[id$='chkNew']").attr("checked")) {
            VehicleTypeString = 'New-';
            NoTypeCount += 1;
            }

        if ($("input[id$='chkUsed']").attr("checked")) {
            VehicleTypeString += 'Used-';
            NoTypeCount += 1;
        }

        if ($("input[id$='chkDemo']").attr("checked")) {
            VehicleTypeString += 'Demo-';
            NoTypeCount += 1;
        }

        if (NoTypeCount == 0) {
            $("select[id$='cboMake']>option").remove();
            $("select[id$='cboMake']").get(0).options[0] = new Option(defaultMakeText, "-1");

            $("select[id$='cboRange']>option").remove();
            $("select[id$='cboRange']").get(0).options[0] = new Option(defaultRangeText, "-1");

            $("a[id$='hlSearch']").attr('disabled', 'disabled');

            return false;
        }
        else {
            $("a[id$='hlSearch']").removeAttr('disabled');
            VehicleTypeString = VehicleTypeString.substring(0, VehicleTypeString.length - 1);
            return true;
        }
    }

    $("a[id$='hlSearch']").bind("click", function () {
        var NavUrl = "/Cars/";


        if (!BuildVehicleTypeString()) {
            //NavUrl += 'Used-Demo';
            NavUrl += 'New-Used-Demo';
        }
        else {
            NavUrl += VehicleTypeString;
        }


        if ($("select[id$='cboMake']").attr("selectedIndex") > 0)
            NavUrl += '/' + $("select[id$='cboMake'] :selected").val();
        else
            NavUrl += '/All';

        if ($("select[id$='cboRange']").attr("selectedIndex") > 0)
            NavUrl += '/' + $("select[id$='cboRange'] :selected").val().replace('/', '#');
        else
            NavUrl += '/All';

        //From Year, To Year
        NavUrl += '/Any/Any';

        if ($("select[id$='cboFromPrice']").attr("selectedIndex") > 0)
            NavUrl += '/' + $("select[id$='cboFromPrice'] :selected").val();
        else
            NavUrl += '/Any';

        if ($("select[id$='cboToPrice']").attr("selectedIndex") > 0)
            NavUrl += '/' + $("select[id$='cboToPrice'] :selected").val();
        else
            NavUrl += '/Any';


        $(this).attr('href', NavUrl);
    });

    //This is for when somebody hovers over a dropdown menu item and if the resolution is very small it will scroll into view
    $(".linkopacity").hover(function () {
        if ($(window).height() <= 422 && $("html,body").scrollTop() <= 50) {
            $("html,body").animate({ scrollTop: 100 }, 500);
        }
    }, function () { });


    function AjaxComplete() {
        $("a[id$='hlSearch']").removeAttr('disabled');
        $(".AjaxLoadingBackground2").fadeOut(1000);
    }
    function AjaxStart(loadTarget) {
        if (loadTarget != null) {
            $("a[id$='hlSearch']").attr('disabled', 'disabled');
            $(".AjaxLoadingBackground2").css({ top: loadTarget.offset().top, left: loadTarget.offset().left }).fadeIn(200);
        }
    }

}); 
