/**
 * Search form Page
 *
 * This is the javascript file for search.php
 * @author David Vélez <david.velez@entersoftweb.com>
 * @version 1.0
 * @package javascript
 */

/**
 * Form inicialization
 */
$(document).ready(function() {        

    // Select all cities
    $("#btn_locationAll").click(function(){
        $("#txt_location option").attr("selected","selected");
    });

    // Clear all cities
    $("#btn_locationClear").click(function(){
        $("#txt_location option").attr("selected","");
    });

    // Load previus values
    $.post(
        "/include/ajax/ajaxAdvSearch.php", {action: "ADVSEARCH_GET_PRICERANGE", typeOffer:  (($("#radio_sale").attr("checked"))?"1":"0")},
        function(data){
            // Recargamos las listas de precios
            $("#advSearch_priceMin").empty().append(data.priceRangeMinHTML);
            $("#advSearch_priceMax").empty().append(data.priceRangeMaxHTML);
        }, "json"
    );
    $.post(
        "/include/ajax/ajaxAdvSearch.php", {action: "ADVSEARCH_GET_BATHROOMSRANGE"},
        function(data){
            // Recargamos las listas de baños
            $("#advSearch_bathroomsRange").empty().append(data.bathroomsRangeHTML);
        }, "json"
    );
    $.post(
        "/include/ajax/ajaxAdvSearch.php", {action: "ADVSEARCH_GET_BEDROOMSRANGE"},
        function(data){
            // Recargamos las listas dormitorios
            $("#advSearch_bedroomsRange").empty().append(data.bedroomsRangeHTML);
        }, "json"
    );
        

    $("#advSearch_priceMin").change(function(){advSearch_setPrices()});
    $("#advSearch_priceMax").change(function(){advSearch_setPrices()});
    $("#advSearch_bedroomsRange").change(function(){advSearch_setBedrooms()});
    $("#advSearch_bathroomsRange").change(function(){advSearch_setBathrooms()});
    
    $("#radio_sale").change(function(){advSearch_setOffer()});
    $("#radio_rent").change(function(){advSearch_setOffer()});


    $("#advSearch_price_btnOpenCustomRange").click(function(e){openPopup(e, "priceRange");return false;});
    $("#advSearch_bedrooms_bathrooms_btnOpenCustomRange").click(function(e){openPopup(e, "bedBathroomsRange");return false;});
    
    $("#resetFormButton").click(function(e){
        $("#txt_ref").val("");
        //$("#radio_sale").click();
        //advSearch_setOffer();
        $("#txt_location").val("0");
        $("#txt_type").val("0");
        $("#advSearch_priceMin").val("0");
        $("#advSearch_priceMax").val("0");
        $("#advSearch_bedroomsRange").val("0");
        $("#advSearch_bathroomsRange").val("0");

        advSearch_setPrices();
        advSearch_setBathrooms();
        advSearch_setBedrooms();

        $("#chkBox_garaje").attr("checked", "");
        $("#chkBox_piscina").attr("checked", "");
    });
});

function advSearch_setBathrooms(){
    $.post(
        "/include/ajax/ajaxAdvSearch.php",
        {
            action: "ADVSEARCH_SET_BATHROOMSRANGE",
            bathroomsMin:   $("#advSearch_bathroomsRange").val()
        },
        function(data){
            // Recargamos las listas de baños
            $("#advSearch_bathroomsRange").empty().append(data.bathroomsRangeHTML);
        },
        "json"
    );
}

function advSearch_setBedrooms(){

    $.post(
        "/include/ajax/ajaxAdvSearch.php",
        {
            action: "ADVSEARCH_SET_BEDROOMSRANGE",
            bedroomsMin:   $("#advSearch_bedroomsRange").val()
        },
        function(data){
            // Recargamos las listas dormitorios
            $("#advSearch_bedroomsRange").empty().append(data.bedroomsRangeHTML);
        },
        "json"
    );
}

function advSearch_setOffer(opt){
    $("#txt_ref").val("");
    $("#txt_location").val("0");
    $("#txt_type").val("0");
    $("#advSearch_priceMin").val("0");
    $("#advSearch_priceMax").val("0");
    $("#advSearch_bedroomsRange").val("0");
    $("#advSearch_bathroomsRange").val("0");

    advSearch_setPrices();
    advSearch_setBathrooms();
    advSearch_setBedrooms();

    $("#chkBox_garaje").attr("checked", "");
    $("#chkBox_piscina").attr("checked", "");

    $.post(
        "/include/ajax/ajaxAdvSearch.php",
        {
            action: "ADVSEARCH_SET_PRICERANGE",
            typeOffer:  (($("#radio_sale").attr("checked"))?"1":"0"),
            priceMin:   0,
            priceMax:   0
        },
        function(data){
            // Recargamos las listas de precios
            $("#advSearch_priceMin").empty().append(data.priceRangeMinHTML);
            $("#advSearch_priceMax").empty().append(data.priceRangeMaxHTML);
        }, "json"
    );

    $.post(
        "/include/ajax/ajaxAdvSearch.php",
        {
            action: "ADVSEARCH_GET_LOCATIONS",
            typeOffer:  (($("#radio_sale").attr("checked"))?"0":"1")
        },
        function(data){
            // Recargamos las listas de precios
            $("#txt_location").empty().append(data.locationRegsHTML);

            $("#txt_location").val("0");
        }, "json"
    );

    $.post(
        "/include/ajax/ajaxAdvSearch.php",
        {
            action: "ADVSEARCH_GET_TYPES",
            typeOffer:  (($("#radio_sale").attr("checked"))?"0":"1")
        },
        function(data){
            // Recargamos las listas de precios
            $("#txt_type").empty().append(data.typesRegsHTML);

            $("#txt_type").val("0");
        }, "json"
    );
}

function openPopup(e, popupType){

    var params = {
        draggable : false,
        resizable: false
    }
    if(popupType == "priceRange"){

        $.post(
            "/include/ajax/ajaxAdvSearch.php",
            {action: "ADVSEARCH_OPEN_PRICERANGE"},
            function(data){

                params["title"] = data["title"];
                params["width"] = data["width"];
                params["height"] = data["height"];
                    
                var buttons = {};
                buttons["Ok"] = function(){if(advSearch_setPricesDialog(data["errorTxt"])) $(this).dialog("close");};
                buttons[data["btnCancel"]] = function(){$(this).dialog("close");};
                params["buttons"] = buttons;

                openDialog(e, "priceRange", "advSearch_price_btnOpenCustomRange", params);
                $("#priceRange").empty().append(data["contentHTML"]);
            },
            "json"
        );


    }else if(popupType == "bedBathroomsRange"){

        $.post(
            "/include/ajax/ajaxAdvSearch.php",
            {action: "ADVSEARCH_OPEN_BEDBATHROOMSRANGE"},
            function(data){

                params["title"] = data["title"];
                params["width"] = data["width"];
                params["height"] = data["height"];

                var buttons = {};
                buttons["Ok"] = function(){if(advSearch_setBedBathroomsDialog()) $(this).dialog("close");};
                buttons[data["btnCancel"]] = function(){$(this).dialog("close");};
                params["buttons"] = buttons;

                openDialog(e, "bedBathroomsRange", "advSearch_bedrooms_bathrooms_btnOpenCustomRange", params);
                $("#bedBathroomsRange").empty().append(data["contentHTML"]);
            },
            "json"
        );

    }

    return false;
}

function advSearch_setPrices(){

    $.post(
        "/include/ajax/ajaxAdvSearch.php",
        {
            action: "ADVSEARCH_SET_PRICERANGE",
            typeOffer:  (($("#radio_sale").attr("checked"))?"1":"0"),
            priceMin:   $("#advSearch_priceMin").val(),
            priceMax:   $("#advSearch_priceMax").val()
        },
        function(data){
            // Recargamos las listas de precios
            $("#advSearch_priceMin").empty().append(data.priceRangeMinHTML);
            $("#advSearch_priceMax").empty().append(data.priceRangeMaxHTML);
        },
        "json"
    );
}

function advSearch_setPricesDialog(errorTxt){

    // Compruebo que son numeros
    if(isNaN($("#advSearch_priceDialog_priceMin").val()) || isNaN($("#advSearch_priceDialog_priceMax").val())){
        $("#advSearch_priceDialog_errorsZone")
            .empty()
            .hide()
            .append(errorTxt)
            .fadeIn("slow");

        return false;

    }else{
        // Parseo el valor vacio a 0;
        if(!$("#advSearch_priceDialog_priceMin").val()) $("#advSearch_priceDialog_priceMin").val(0);
        if(!$("#advSearch_priceDialog_priceMax").val()) $("#advSearch_priceDialog_priceMax").val(0);

        $.post(
            "/include/ajax/ajaxAdvSearch.php",
            {
                action: "ADVSEARCH_SET_PRICERANGE",
                typeOffer:  (($("#radio_sale").attr("checked"))?"1":"0"),
                priceMin:   parseInt($("#advSearch_priceDialog_priceMin").val()),
                priceMax:   parseInt($("#advSearch_priceDialog_priceMax").val())
            },
            function(data){
                // Recargamos las listas de precios
                $("#advSearch_priceMin").empty().append(data.priceRangeMinHTML);
                $("#advSearch_priceMax").empty().append(data.priceRangeMaxHTML);
            },
            "json"
        );

        return true;
    }
}

function advSearch_setBedBathroomsDialog(){
    $.post(
        "/include/ajax/ajaxAdvSearch.php",
        {
            action: "ADVSEARCH_SET_BEDBATHROOMSRANGE",
            bedroomsMin:    $("#advSearch_bedBathroomsDialog_bedroomsMin").val(),
            bedroomsMax:    $("#advSearch_bedBathroomsDialog_bedroomsMax").val(),
            bathroomsMin:   $("#advSearch_bedBathroomsDialog_bathroomsMin").val(),
            bathroomsMax:   $("#advSearch_bedBathroomsDialog_bathroomsMax").val()
        },
        function(data){
            // Recargamos las listas de dormitorios y baños
            $("#advSearch_bedroomsRange").empty().append(data.bedroomsRangeHTML);
            $("#advSearch_bathroomsRange").empty().append(data.bathroomsRangeHTML);
        },
        "json"
    );

    return true;
}