(function ($) {

    var Config = {
        ServerURL: "/Controller/Login.ashx",
        ServerUtilityURL: "/Controller/Utility.ashx",
        ClientURL: "/Plugins/modLogin/Login.htm",
        StyleURL: "/Plugins/modLogin/Login.css",
        B2bURL: "/B2B/AgenziaOperatoriCredenziali.aspx",
        Container: "",
        Sid: "",
        IsB2B2C: false,
        IsB2B: false,
        Agenzia: {}
    };


    $.fn.Login = 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.Login.Destroy = function () { }


    function Init() {
        // carico la pagina html
        Config.Container.load(Config.ClientURL, function () {

            // Login automatico
            if (Config.Sid != "") {
                LogInAutomatico();
            }

            // creo i bindigns sull'interfaccia
            Bindings();
        });
    }


    function Bindings() {
        // bottone b2b

        $("#btn-b2b").bind("click", ApriB2B);
        //Da ripristinare l'if non appena ci danno l'ok. Cristian 23/05/2011
        if ($.isEmptyObject(Config.Agenzia) || Config.Agenzia.Id == 0) {
            $("#btn-b2b").hide();
        }
        $("#btn-logout").hide();

        // bottone logout
        //if (Config.IsB2B)
        //    $("#btn-logout").bind("click", LogOut);

    }


    function LogInAutomatico() {
        var parameters = {};
        parameters.action = "LogIn";
        parameters.idAgenzia = Config.Sid;
        parameters.IsB2B2C = Config.IsB2B2C;
        parameters.IsB2B = Config.IsB2B;
        $.ajax({
            async: false,
            cache: false,
            type: "POST",
            url: Config.ServerURL,
            data: parameters,
            success: function (returnData) { RenderizzaBenvenuto(returnData); }
        });
    }


    function RenderizzaBenvenuto(returnData) {
        // il server è andato in errore
        if (returnData == "-1") {
            ShowMessage("Errore", "Si è verificato un errore durante il login, se il problema persiste contattare un amministratore.");
            return;
        }
        // l'utente non è stato riconosciuto
        if (returnData == "0") {
            ShowMessage("Attenzione", "L'utenza non &egrave; stata riconosciuta, si prega di riprovare.");
            return;
        }
        // è andato tutto bene
        if (returnData != "") {
            Config.Agenzia = $.parseJSON(returnData);
            if (!Config.IsB2B2C) {
                $("#logged").fadeIn("slow");
            }
        }
    }


    function LogOut() {
        var parameters = {};
        parameters.action = "LogOut";
        $.ajax({
            async: false,
            cache: false,
            url: Config.ServerURL,
            data: parameters,
            success: function (returnData) {
                if (returnData != "-1") {
                    $("#logged").fadeOut("fast", function () {
                        Config.Agenzia = {};
                        window.location.href = "/Default.htm";
                    });
                } else {
                    ShowMessage("Errore", "Si è verificato un errore durante il logout, se il problema persiste contattare un amministratore");
                }
            }
        });
    }


    function ApriB2B() {
        var url = Config.B2bURL;
        //url = url.replace("[IdAgenzia]", Config.Agenzia.Id); 
        //url = url.replace("[Sid]", Config.Sid);
        window.open(url);
    }


    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);
