(function ($) {

    var Config = {
        ServerURL: "/Controller/Conferma.ashx",
        ClientURL: "/Plugins/comConferma/Conferma.htm",
        EmailTemplateURL: "/Plugins/comConferma/MailConfirm.tmpl",
        EmailTemplateURLRQ: "/Plugins/comConferma/MailConfirmRq.tmpl",
        StyleURL: "/Plugins/comConferma/Conferma.css",
        Container: "",
        FormData: {},
        MsgConferma: {},
        IdProdotto: "",
        IdListino: "",
        EsitoInvioMail: "",
        NumeroOrdine: "",
        MessaggioPrenotazione: ""
    };


    $.fn.Conferma = function (options) {
        // integro le configurazioni con quelle passate (injection di parametri)
        if (options) {
            Config = $.extend(Config, options);
            Config.IdProdotto = Config.FormData.IdProdotto;
            Config.IdListino = Config.FormData.IdListino;
        }

        // setto il container
        Config.Container = $(this);

        // lancio la funzione di ingresso
        Init();
    };


    function Init() {
        // carico la pagina html
        Config.Container.load(Config.ClientURL, function () {

            //Loggo su google Analytics
            $.fn.Utility.Analytics("PAGEVIEW", "/Default.htm#Conferma");

            // renderizzo riepilogo prodotto
            RenderizzaRiepilogoProdotto();

            $("#box_riepilogo_prodotto").bind("ModuleLoaded", function () {

                // carico il riepilogo costi
                CaricaRiepilogoCosti();

                // renderizzo riepilogo costi
                RenderizzaRiepilogoCosti();

                // cambio di stato alla prenotazione
                ConfermaPrenotazione();

                //passo al server i dati per l'invio della mail
                InviaMail();

                //Recupero il messaggo in base al tipo di prenotazione
                RecuperaMessaggioPrenotazione();

                // espongo la conferma dell'ordine
                MostraConfermaOrdine();

                // bindings interfaccia
                Bindings();

                // salvo lo stato della pagina
                $.fn.Travelmind.SaveState("Conferma", Config);

                // rilancio l'evento "pagina pronta"            
                $(Config.Container).trigger("ComponentLoaded");

                // smusso gli angoli dell'interfaccia
                $.fn.Travelmind.RoundCorners();

            });
        });
    }

    $.fn.Conferma.Destroy = function () {
        // distruzione degli oggetti interni al plugin

    };



    function RenderizzaRiepilogoProdotto() {
        $("#box_riepilogo_prodotto").RiepilogoProdotto({ "Align": "vertical", "IdProdotto": Config.IdProdotto, "IdListino": Config.IdListino });
    }


    function CaricaRiepilogoCosti() {
        if ($.isEmptyObject(Config.RiepilogoCosti)) {
            var parameters = {};
            parameters.action = "RiepilogoCosti";
            parameters.idListino = Config.IdListino;
            $.ajax({
                async: false,
                cache: false,
                url: "/Controller/Acquista.ashx",
                data: parameters,
                success: function (returnData) {
                    Config.RiepilogoCosti = (returnData != "-1") ? $.parseJSON(returnData) : {};
                }
            });
        }
    }


    function RenderizzaRiepilogoCosti() {
        var $div = null;
        var $text = null;
        var $value = null;
        if (!$.isEmptyObject(Config.RiepilogoCosti)) {
            var RiepilogoCosti = (Config.MostraPrezzoNetto) ? Config.RiepilogoCosti.CostiNetti : Config.RiepilogoCosti.CostiBase;
            $.each(RiepilogoCosti, function (i) {
                $div = $("<div/>", { "class": "costo" }).appendTo("#riepilogo_costi .contents");
                var totalclass = RiepilogoCosti[i].Text.toLowerCase() == "totale" ? " totale" : "";
                $text = $("<div/>", { "class": "text" + totalclass }).html(RiepilogoCosti[i].Text).appendTo($div);
                $value = $("<div/>", { "class": "value" + totalclass }).html(RiepilogoCosti[i].Value + " &euro;").appendTo($div);
            });
        }
    }


    function RecuperaMessaggioPrenotazione() {
        var parameters = {};
        parameters.action = "MostraMessaggioPrenotazione";
        $.ajax({
            async: false,
            cache: false,
            url: Config.ServerURL,
            data: parameters,
            success: function (returnData) {
                Config.MessaggioPrenotazione = returnData;

            }
        });
    }


    function ConfermaPrenotazione() {
        var parameters = {};
        parameters.action = "ConfermaPrenotazione";
        $.ajax({
            async: false,
            cache: false,
            url: Config.ServerURL,
            data: parameters,
            success: function (returnData) {
                Config.MsgConferma = (returnData != "-1") ? $.parseJSON(returnData) : {};

            }
        });
    }


    function MostraConfermaOrdine() {
        var $conferma = $("<div/>").appendTo("#riepilogo_ordine .contents");

        if (Config.MsgConferma.NumeroOrdine.indexOf("RQ", 0) == -1) {
            $conferma.html("<br/>" + Config.MessaggioPrenotazione);
            $("#riepilogo_ordine #numero_ordine").html("IL TUO NUMERO D'ORDINE &Egrave;: " + Config.MsgConferma.NumeroOrdine);

        }
        else {
            $conferma.html("<br/>" + "Grazie per avere interpellato Miavacanza. <br/>Sarai contattato al piu' presto da un nostro consulente di viaggio per procedere nella ricerca e prenotazione della tua vacanza.");
            $("#riepilogo_ordine #numero_ordine").html("IL TUO NUMERO DI RICHIESTA &Egrave;: " + Config.MsgConferma.NumeroOrdine);
            //alert("cambio messaggio");
            $("#riepilogo_ordine #confermamsg").html("INVIO RICHIESTA CONTATTO");
        }

        var testo = '';
        if (Config.MsgConferma.AttivaMsg == "1") {

            //Se non ci sono errori 
            if (Config.MsgConferma.Errore == "0") {
                // verifico se simulation o meno 
                if (Config.MsgConferma.Simulation == "1") {

                    testo = "<br/>Inoltre ti segnaliamo che la pratica &egrave; stata scritta (DA CONFERMARE) sul sistema del Tour Operator.";
                    testo = testo + "<br/><br/>N. pratica Tour Operator:" + Config.MsgConferma.NumeroPratica;
                }
                else {
                    testo = "<br/>Inoltre ti segnaliamo che la pratica &egrave; stata CONFERMATA sul sistema del Tour Operator.";
                    testo = testo + "<br/><br/>N. pratica Tour Operator:" + Config.MsgConferma.NumeroPratica;
                }
            }
            else {
                if (Config.MsgConferma.Errore == "1") {
                    //Errore durante la scrittura
                    testo = "<br/>Inoltre ti segnaliamo che questa pratica non &egrave; stata confermata sul sistema del Tour Operator.";
                    testo = testo + "<br/>Ricordati di contattare il TO per concludere la prenotazione.";
                }
                else if (Config.MsgConferma.Errore == "2") {
                    testo = "<br/>Inoltre ti segnaliamo che questa pratica non &egrave; stata confermata sul sistema del Tour Operator.";
                    testo = testo + "<br/>Le tue credenziali per il sistema del Tour Operator non sono corrette.";
                }
            }
        }

        $conferma.append("<br/>" + testo);


    }


    function InviaMail() {
        var parameters = {};
        parameters.action = "InviaMail";
        // Mando Email alternativa in caso di richiesta RQ (Edreams)

        if (Config.MsgConferma.NumeroOrdine.indexOf("RQ", 0) == -1) {
            parameters.EmailTemplateUrl = Config.EmailTemplateURL;
        }
        else {
            parameters.EmailTemplateUrl = Config.EmailTemplateURLRQ
        }

        $.ajax({
            async: false,
            cache: false,
            url: Config.ServerURL,
            data: parameters,
            success: function (returnData) {
                if (returnData != "-1") {
                    Config.EsitoInvioMail = $.parseJSON(returnData);
                }
            }
        });
    }



    function Bindings() {
        var homeBack = (Config.FormData.HistoryBack != undefined && Config.FormData.HistoryBack != "") ? Config.FormData.HistoryBack : "Home";
        $("#torna_home").bind("click", function () { $.fn.Travelmind.RestorePlugin(homeBack); });

        // download preventivo
        $("#download_preventivo .contents").PreventivoPdf({
            IdProdotto: Config.IdProdotto,
            IdListino: Config.IdListino
        });
    }



    function VaiAllaHome() {
        var FormData = {};
        $.fn.Travelmind.LoadPlugin("Home", FormData);
    }


})(jQuery);
