(function ($) {

    var Config = {
        ServerURL: "/Controller/CercaAgenzia.ashx",
        ServerUtilityURL: "/Controller/Utility.ashx",
        ClientURL: "/Plugins/modCercaAgenzia/CercaAgenzia.htm",
        StyleURL: "/Plugins/modCercaAgenzia/CercaAgenzia.css",
        AgenziaURL: "/Plugins/modCercaAgenzia/Agenzia.htm",
        TplProdotto: null,
        Container: "",
        CAPtoSearch: "",
        ProvToSearch: "",
        SearchByCAP: true,
        SearchByProv: true,
        Layout: "Left" //"Left" o "InPage"
    };


    $.fn.CercaAgenzia = function (options) {
        // integro le configurazioni con quelle passate (injection di parametri)
        if (options) {
            Config = $.extend(Config, options);
        }
        // setto il container
        Config.Container = $(this);
        // lancio la funzione di ingresso
        Init();
    };


    $.fn.CercaAgenzia.Destroy = function () { }


    function Init() {
        // carico la pagina html
        Config.Container.load(Config.ClientURL, function () {

            // renderizzo box ricerca
            RenderizzaBoxRicerca();

            // carico il template per l'impaginazione delle Agenzie
            CaricaTemplateAgenzia();

            // creo i bindigns sull'interfaccia
            Bindings();

            // stondo gli angoli
            $.fn.Travelmind.RoundCorners();
        });
    }


    function CaricaTemplateAgenzia() {
        $.ajax({
            async: false,
            cache: false,
            url: Config.AgenziaURL,
            success: function (returnData) {
                Config.TplAgenzia = returnData;
            }
        });
    }


    function RenderizzaBoxRicerca() {
        //visualizzo o meno la ricerca per CAP
        if (Config.SearchByCAP) {
            $("#CercaAgenzia_" + Config.Layout + " .CAP").show();
        } else {
            $("#CercaAgenzia_" + Config.Layout + " .CAP").hide();
        }

        //visualizzo o meno la ricerca per Prov
        if (Config.SearchByProv) {
            $("#CercaAgenzia_" + Config.Layout + " .Prov").show();
        } else {
            $("#CercaAgenzia_" + Config.Layout + " .Prov").hide();
        }

        //visualizzo il box ricerca
        $("#CercaAgenzia_" + Config.Layout).show();
    }


    function CercaAgenziePiuVicine() {
        var Agenzie = [];

        var parameters = {};
        parameters.action = "SelAgenzieByCAP";
        Config.CAPtoSearch = $("#CercaAgenzia_" + Config.Layout + " .inputCAP").val()
        parameters.CAP = Config.CAPtoSearch;
        $.ajax({
            async: false,
            cache: false,
            url: Config.ServerUtilityURL,
            data: parameters,
            success: function (returnData) {
                Agenzie = (returnData != "-1") ? $.parseJSON(returnData) : [];
            }
        });

        if (Agenzie.length > 0) {
            $content = $("<div/>", { "id": "ListaAgenzie" });
            $content.append($("<div/>", { "class": "titolo" }).html("Clicca sul nome dell'agenzia per selezionare dove effettuare il pagamento"));

            var htmlAgenziaNessuna = RenderizzaAgenzia(Config.TplAgenzia, {}, 0);
            $content.append($(htmlAgenziaNessuna));

            $.each(Agenzie, function (i) {
                var htmlAgenzia = RenderizzaAgenzia(Config.TplAgenzia, Agenzie[i], Agenzie[i].Id);
                $content.append($(htmlAgenzia));
            });

            $.fn.Utility.ApriPopUp("Lista Agenzie con CAP " + Config.CAP, $content, 800, 600);
        }
    }


    function Bindings() {
        // bottone login
        $(".btnCercaByCAP").bind("click", CercaAgenziePiuVicine);
		$(".btnCercaByProv").bind("click", CercaAgenziePiuVicine);
        
        $(".inputCAP").bind("click", function () {
            if ($(this).val() == "il tuo CAP") {
                $(this).val("");
            }
        });

        $(".inputProv").bind("click", function () {
            if ($(this).val() == "Provincia") {
                $(this).val("");
            }
        });
    }




    function RenderizzaAgenzia(tplAgenzia, Agenzia, cnt) {
        tplAgenzia = $(tplAgenzia).clone();

        if (!$.isEmptyObject(Agenzia)) {
            // dati agenzia
            $(tplAgenzia).attr("id", Agenzia.Id);
            if (Agenzia.RagioneSociale != undefined) { $(tplAgenzia).find(".ragionesociale").html(Agenzia.RagioneSociale); }
            if (Agenzia.Indirizzo != undefined) { $(tplAgenzia).find(".indirizzo").html(Agenzia.Indirizzo); }
            if (Agenzia.Cap != undefined) { $(tplAgenzia).find(".cap").html(Agenzia.Cap); }
            if (Agenzia.Citta != undefined) { $(tplAgenzia).find(".citta").html(Agenzia.Citta); }
            if (Agenzia.Provincia != undefined) { $(tplAgenzia).find(".provincia").html(Agenzia.Provincia); }
            if (Agenzia.Cellulare1 != undefined) { $(tplAgenzia).find(".cellulare1").html(Agenzia.Cellulare1); }
            if (Agenzia.Email != undefined) { $(tplAgenzia).find(".email").html(Agenzia.Email); }
        } else {
            // dati agenzia NESSUNA
            $(tplAgenzia).attr("id", 0);
            $(tplAgenzia).find(".ragionesociale").html("NESSUNA AGENZIA");
        }
        // bindings sul menu
        $(tplAgenzia).find(".ragionesociale").bind("click", function () {
            $("#ListaAgenzie").dialog("close");
            $("#acquista").trigger({ type: "agenziaCambiata", agenzia: Agenzia });
        });

        return $(tplAgenzia);
    }


    function ShowMessage(title, msg) {
        var msgBox = $("<div/>");
        $(Config.Container).append(msgBox);
        $(msgBox).html(msg).dialog({
            width: 500,
            title: title,
            modal: true,
            draggable: true,
            buttons: {
                "Chiudi": function () { $(this).dialog("close"); }
            },
            close: function () {
                $(this).dialog("destroy");
            }
        });
        $(msgBox).dialog('open');
    }


})(jQuery);
