(function ($) {

    var Config = {
        ServerURL: "/Controller/Login.ashx",
        ServerUtilityURL: "/Controller/Utility.ashx",
        ClientURL: "/Plugins/modPromo/Promo.htm",
        StyleURL: "/Plugins/modPromo/Promo.css",
        Container: "",
        Agenzia: {}
    };


    $.fn.Promo = 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.Promo.Destroy = function () { }


    function Init() {

        // carico la pagina html
        Config.Container.load(Config.ClientURL, function () {

            // cerco di caricare l'agenzia dalla sessione
            CheckAgenziaInSessione();

            Bindings();

        });
    }


    function CheckAgenziaInSessione() {
        if ($.fn.Utility.IsAgenziaLoggata()) {

            var parameters = {};
            parameters.action = "SelAgenzia";
            $.ajax({
                async: false,
                cache: false,
                url: Config.ServerUtilityURL,
                data: parameters,
                success: function (returnData) {
                    Config.Agenzia = (returnData != "" && returnData != "-1") ? $.parseJSON(returnData) : {};
                }
            });

            $("#promo #form").hide();
            $("#promo #welcome").show("fast");
            $("#lblNomeCanale").html(Config.Agenzia.Canale.Nome);
        }
    }


    function Bindings() {
        //login promo
        $("#promo #btnLoginPromo").bind("click", LoginPromo);

        // logout promo
        $("#promo #btnLogoutPromo").bind("click", LogOutPromo);

        $("#promo #txtCodicePromo").bind("click", function () {
            $("#promo #txtCodicePromo").val("");
        });

    }

    function LoginPromo() {
        var promo = $("#txtCodicePromo").val();
        if (promo != "") {
            var parameters = {};
            parameters.action = "LogIn";
            parameters.idAgenzia = promo;
            $.ajax({
                async: false,
                cache: false,
                type: "POST",
                url: Config.ServerURL,
                data: parameters,
                success: function (returnData) {
                    if (returnData != "-1" && returnData != "0") {
                        Config.Agenzia = $.parseJSON(returnData);
                        $("#promo #form").hide();
                        $("#promo #welcome").show();
                        $("#lblNomeCanale").html(Config.Agenzia.Canale.Nome);
                        //Loggo su google Analytics
                        $.fn.Utility.Analytics("EVENT", "CANALE", "LOGIN", promo);

                    } else {
                        ShowMessage("Attenzione", "Il Codice Promo non &egrave; stato riconosciuto");
                    }
                }
            });
        } else {
            ShowMessage("Attenzione", "Inserire un Codice Promo");
        }
    }







    function LogOutPromo() {
        var parameters = {};
        parameters.action = "LogOut";
        $.ajax({
            async: false,
            cache: false,
            url: Config.ServerURL,
            data: parameters,
            success: function (returnData) {
                if (returnData != "-1") {
                    $("#promo #welcome").hide();
                    $("#promo #form").show();
                } else {
                    ShowMessage("Errore", "Si &egrave; verificato un errore durante il logout, se il problema persiste contattare un amministratore");
                }
            }
        });
    }


    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);
