﻿var getResultCountUrl = "/carfinder/webservices/get_results_count.ashx";
var getModelGroupsForMakeUrl = "/carfinder/webservices/get_model_groups_for_make.ashx";

var searchParams;
var loading = true;

$(document).ready(function() {
    setTimeout("onDocumentReadyQuickSearch();", 500); //due to IE problems
});

function onDocumentReadyQuickSearch() {
    initParams();
    setDefaultValues();
    addHandlers();
    loading = false;
    doSearch();
}

function setDefaultValues() {
    $("#" + ddlMake).selectedIndex = 0;
    $("#" + ddlModel).selectedIndex = 0;
    $("#" + ddlFirstMatriculation).selectedIndex = 0;
    $("#" + ddlPrice).selectedIndex = 0;
    $("#" + ddlMileageTo).selectedIndex = 0;
    $("#" + ddlVehicleCategory).selectedIndex = 0;
}

function addHandlers() {
    $("#" + ddlMake).bind("change", function() {
        if (!loading) {
            if ($("#" + ddlMake).val() !== "0") {
                //load models
                getModelGroups4Make();
            }
            else {
                disableModel();
            }

            //reset model
            $("#" + modelHiddenClientID).val(-10);

            //set make value to hidden field
            $("#" + makeHiddenClientID).val($("#" + ddlMake).val());
            doSearch();
        }
    });

    $("#" + ddlModel).bind("change", function() {
        if ($("#" + ddlModel).val() !== -10) {
            $("#" + modelHiddenClientID).val($("#" + ddlModel).val());
        }
        else {
            $("#" + modelHiddenClientID).val(-10);
        }
        doSearch();
    });

    $("#" + ddlFirstMatriculation).bind("change", function() {
        if ($("#" + ddlFirstMatriculation).val() !== 0) {
            $("#" + firstMatriculationFromHiddenClientID).val($("#" + ddlFirstMatriculation).val());
        }
        else {
            $("#" + firstMatriculationFromHiddenClientID).val(-10);
        }
        doSearch();
    });

    $("#" + ddlPrice).bind("change", function() {
        if ($("#" + ddlPrice).val() !== -1) {
                    $("#" + priceToHiddenClientID).val($("#" + ddlPrice).val());
                }
        else {
            $("#" + priceToHiddenClientID).val(-10);
        }
        doSearch();
    });
        
    $("#" + ddlMileageTo).bind("change", function() {
        if ($("#" + ddlMileageTo).val() !== "1") {
            $("#" + milageToHiddenClientID).val($("#" + ddlMileageTo).val());
        }
        else {
            $("#" + milageToHiddenClientID).val(-10);
        }
        doSearch();
    });

    $("#" + ddlVehicleCategory).bind("change", function() {
        if ($("#" + ddlVehicleCategory).val() >0 ) {
            $("#" + vehicleCategoryHiddenClientID).val($("#" + ddlVehicleCategory).val());
        }
        else {
            $("#" + vehicleCategoryHiddenClientID).val("");
        }
        doSearch();
    });                
}

function getModelGroups4Make() {
    var make = $("#" + ddlMake).val();
    
    $.getJSON(
        getModelGroupsForMakeUrl,
        { make: make },
        function(msg) {
            $("#" + ddlModel + " option").remove();
            loadOptions(ddlModel, msg);
            $("#" + ddlModel).removeAttr("disabled");
        }
    );
}

function loadOptions(control, data) {
    //load all option
    $("#" + control).append($("<option></option>").val(0).html(allLabel));

    $.each(data, function() {
        $("#" + control).append($("<option></option>").val(this.Value).html(this.Key));
    });
}

function disableModel() {
    $("#" + ddlModel + " option").remove();
    $("#" + ddlModel).append($("<option></option>").val(0).html(allLabel));
    $("#" + ddlModel).attr("disabled", true);
}

function initParams() {
    searchParams = new Object();

    searchParams.Category = -10;
    searchParams.Marcode1 = -10;
    searchParams.Marcode2 = -10;
    searchParams.Marcode3 = -10;
    searchParams.Modcode1 = -10;
    searchParams.Modcode2 = -10;
    searchParams.Modcode3 = -10;
    searchParams.Typetag1 = -10;
    searchParams.Typetag2 = -10;
    searchParams.Typetag3 = -10;
    searchParams.ModType1 = "";
    searchParams.ModType2 = "";
    searchParams.ModType3 = "";
    searchParams.VehicleType = "";
    searchParams.Construction = "";
    searchParams.FirstMatriculationFromYear = -10;
    searchParams.FirstMatriculationToYear = -10;
    searchParams.PriceFrom = -10;
    searchParams.PriceTo = -10;
    searchParams.MilageFrom = -10;
    searchParams.MilageTo = -10;
    searchParams.MaxAdAge = -10;
    searchParams.MinComparisPoints = -10;
    searchParams.ImageRequired = -10;
    searchParams.OutsideColor = "";
    searchParams.OutsideColorMetallic = -10;
    searchParams.Transmission = -10;
    searchParams.FuelType = -10;
    searchParams.PerformanceFrom = -10;
    searchParams.PerformanceTo = -10;
    searchParams.UsageFrom = -10;
    searchParams.UsageTo = -10;
    searchParams.SeatsFrom = -10;
    searchParams.SeatsTo = -10;
    searchParams.DoorsFrom = -10;
    searchParams.DoorsTo = -10;
    searchParams.GeoSearchDistance = -10;
    searchParams.GeoSearchCenterX = -10;
    searchParams.GeoSearchCenterY = -10;
    searchParams.Cantons = "";
    searchParams.ComfortOptions = "";
    searchParams.SecurityOptions = "";
    searchParams.GarageID = -10;
    searchParams.VendorType = -10;
    searchParams.IsFromSearchSubscription = false;
    searchParams.ModGroup1 = -10;
    searchParams.ModGroup2 = -10;
    searchParams.ModGroup3 = -10;
    searchParams.SearchParameterID = -10;
    searchParams.ActivityDataHeaderID = -10;
}

//Description: Run Ajax search method when user changes some criteria.
function doSearch() {
    if (!loading) {
        $("#lblResults").html('<div class="SpinningWheelSmall">&nbsp;</div>');
        $("#lblResults_desc").hide();
        with (searchParams) {
            Marcode1 = checkSelectionInt32($("#" + makeHiddenClientID).val());
            ModGroup1 = checkSelectionInt32($("#" + modelHiddenClientID).val());
            Construction = checkSelectionString($("#" + vehicleCategoryHiddenClientID).val());
            FirstMatriculationFromYear = checkSelectionInt32($("#" + firstMatriculationFromHiddenClientID).val());
            PriceTo = checkSelectionInt32($("#" + priceToHiddenClientID).val());
            MilageTo = checkSelectionInt32($("#" + milageToHiddenClientID).val());
        }
        getCount();

    }
}


function checkSelectionInt32(value) {
    if (value != "" && value > 0) {
        return value;
    }
    return -10;
}

function checkSelectionString(value) {
    if (typeof value == "undefined") {
        return "";
    }
    return value;
}

function getCount() {
    $.post(
            getResultCountUrl,
            { searchParams: JSON.stringify(searchParams), 'lang': language },
            function(msg) {
                displayCount(msg);
            },
            "json"
        );
}

function displayCount(count) {
    if (count == "0" || count == "") {
        $("#resultsFoundSpan").hide();
        $("#noResultSpan").show();
    }
    else {
        $("#noResultSpan").hide();
        $("#resultsFoundSpan").show();
        $("#lblResults").html(count);
        $("#lblResults_desc").show();
    }
}

//do not remove (backward compatibility)
function OnDropDownListSelectedIndexChanged(cntrl, hiddenField) { 

}