﻿Type.registerNamespace('casapadova.widgets.searchengine');

casapadova.widgets.searchengine.simpleSearchUrl = "/Search/Simple";

casapadova.widgets.searchengine.advancedSearchUrl = "/Search/Advanced";

casapadova.widgets.searchengine.originalHtml = null;

casapadova.widgets.searchengine.showEffect = {
    effect: "slide",
    options: { direction: "down" },
    speed: 250
};

casapadova.widgets.searchengine.hideEffect = {
    effect: "slide",
    options: { direction: "up" },
    speed: 250
};

casapadova.widgets.searchengine.getSearchCount = function(type, zoneSelector) {
    if (casapadova.widgets.searchengine.originalHtml == null)
        casapadova.widgets.searchengine.originalHtml = $("#hasbeenfound").html();
    var realEstateTypeSelector = document.getElementById(type + "RealEstateTypes");
    var locationIdSelector = document.getElementById(type + "Locations");
    isForSale = (type == "Sale");
    realEstateType = realEstateTypeSelector.options[realEstateTypeSelector.selectedIndex].value;
    locationId = locationIdSelector.options[locationIdSelector.selectedIndex].value;
    if (realEstateType == "") {
        realEstateType = -1;
    }
    if (locationId == "") {
        locationId = -1;
    }
    var refillZones = false;
    if (zoneSelector && zoneSelector.selectedIndex > 0)
        zone = zoneSelector.options[zoneSelector.selectedIndex].value || zoneSelector.options[zoneSelector.selectedIndex].text;
    else {
        refillZones = true;
        zoneSelector = document.getElementById(type + "LocationZone");
        zone = "";
    }
    if (realEstateType > 0 || locationId > 0 || zone != "") {
        if ($('#hasbeenfound').is(':visible'))
            $("#hasbeenfound").hide(
            casapadova.widgets.searchengine.hideEffect.effect,
            casapadova.widgets.searchengine.hideEffect.options,
            casapadova.widgets.searchengine.showEffect.speed);
        casapadova.common.toggleLoader("show");
        var proxy = new ajax.casapadova.it.AjaxRealEstateService();
        proxy.GetSearchCount(locationId, realEstateType, zone, isForSale, !isForSale,
        function(successResult) {
            var proxy = new ajax.casapadova.it.AjaxResourceService();
            proxy.GetResourceString("Widgets.SearchEngine, HasBeenFound", "~/", [successResult.Count], function(result) {
                $("#hasbeenfound").html(result);
                $("#hasbeenfound").show(
                casapadova.widgets.searchengine.showEffect.effect,
                casapadova.widgets.searchengine.showEffect.options,
                casapadova.widgets.searchengine.showEffect.speed);
            }, casapadova.common.showError);
            if (refillZones) casapadova.widgets.searchengine.fillZones(zoneSelector, successResult.Zones);
            casapadova.common.toggleLoader("hide");
        }, casapadova.common.showError);
    } else {
        casapadova.widgets.searchengine.resetPayoff();
    }
};

casapadova.widgets.searchengine.fillZones = function(selector, elements) {
    var nullOption = selector.options[0];
    selector.options.length = 0;
    selector.options.add(nullOption);
    $(elements).each(function(index, elem) {
        selector.options.add(new Option(elem));
    });
};

casapadova.widgets.searchengine.toggleAdvanced = function(type) {
    $("#advancedSearch" + type).toggle("blind", {}, 500, function() {
        if ($("#advancedSearch" + type + ":visible").length > 0) {
            $("#" + type + "Form").attr("action", casapadova.widgets.searchengine.advancedSearchUrl);
        }
        else {
            $("#" + type + "Form").attr("action", casapadova.widgets.searchengine.simpleSearchUrl);
        }
    });
    $("#SimpleCommand" + type).toggle();
    $("#AdvancedCommand" + type).toggle();
    return false;
}


casapadova.widgets.searchengine.setFromTo = function(type) {
    var from = parseInt($("select#" + type + "From").val());
    var to = parseInt($("select#" + type + "To").val());
    
    if (from > 0 && (to > 0 && to <= from)) {
        $("select#" + type + "To option").each(function(i, elem) {
            if (elem.value > from) {
                $(elem).attr("selected", "selected");
                return false;
            }
        });
    }
}

casapadova.widgets.searchengine.resetPayoff = function() {
    if (casapadova.widgets.searchengine.originalHtml == null)
        casapadova.widgets.searchengine.originalHtml = $("#hasbeenfound").html();
    $("#hasbeenfound").hide(
            casapadova.widgets.searchengine.hideEffect.effect,
            casapadova.widgets.searchengine.hideEffect.options,
            casapadova.widgets.searchengine.showEffect.speed, function() {
                $("#hasbeenfound").html(casapadova.widgets.searchengine.originalHtml);
                $("#hasbeenfound").show(
                            casapadova.widgets.searchengine.showEffect.effect,
                            casapadova.widgets.searchengine.showEffect.options,
                            casapadova.widgets.searchengine.showEffect.speed);
            });
}


casapadova.widgets.searchengine.showSale = function() {
    casapadova.widgets.searchengine.resetPayoff();
    var imgtabvendita = $("#imgtabvendita")
    var imgtabaffitto = $("#imgtabaffitto");
    var tmpDivAffi = $("#divricercaaffitto");
    var tmpDivVend = $("#divricercavendita");

    imgtabvendita.attr("src", "/Content/Images/tabvendita_on.gif");
    imgtabaffitto.attr("src", "/Content/Images/tabaffitto_off.gif");
    tmpDivAffi.fadeOut("fast", function() {
        tmpDivVend.fadeIn("fast", function() {
            if ($.browser.msie)
                this.style.removeAttribute('filter');
        });
    });
};

casapadova.widgets.searchengine.showRent = function() {
    casapadova.widgets.searchengine.resetPayoff();
    var imgtabvendita = $("#imgtabvendita")
    var imgtabaffitto = $("#imgtabaffitto");
    var tmpDivAffi = $("#divricercaaffitto");
    var tmpDivVend = $("#divricercavendita");

    imgtabvendita.attr("src", "/Content/Images/tabvendita_off.gif");
    imgtabaffitto.attr("src", "/Content/Images/tabaffitto_on.gif");
    tmpDivVend.fadeOut("fast", function() {
        tmpDivAffi.fadeIn("fast", function() {
            if ($.browser.msie)
                this.style.removeAttribute('filter');
        });
    });
};