﻿

(function ($) {
    $.widget("nmk.medlembetalmetoder", {
        options: {
            identifier: "",
            session: "",
            id: 0,
            clickCallback: function (item) { },
            user: function (user) { },
            showvillkor: false
        },
        url: 'json/member.ashx',
        currentStatus: 0,
        refresh: function (options2) {
            if (options2)
                this.options = $.extend({}, options2);
            this._load();
        },
        _create: function () {
            this.randomnr = randomFromInterval(0, 99999);
            this._load();
        },
        _ajax: function (detta, item, callback) {
            if (item.title == undefined) {
                item.title = "";
            }
            item.session = detta.options.session;
            item.identifier = detta.options.identifier;
            console.log(item);
            if (item.title.length > 0)
                loadingBar(true, 1, "Vänta...", item.title + "...");
            $.ajax({
                url: detta.url,
                error: function (xhr, textStatus, errorThrown) {
                    if (item.title.length > 0)
                        loadingBar(false, 1);
                },
                cache: false,
                data: item,
                type: "POST"
            }).done(function (data) {
                var obj = $.parseJSON(data);
                if (item.title.length > 0)
                    loadingBar(false, 1);
                callback(obj);
                if (obj.checkitem) {
                    detta.options.user(obj.checkitem.medlem);
                }
            });
        },
        download: function (id) {
            this._download(this, id);
        },
        _download: function (detta, id) {
            $.fileDownload(this.url + "?command=getPDF&id=" + id + "&_=" + new Date().getTime());
        },
        _getPDF: function (detta, id) {
            var url = detta.url + "?command=getPDF&id=" + id + "&_=" + new Date().getTime();
            $.pdfviewer(url, "Förhandsgranska avtal", function () {
                console.log("Utskrift startad.");
            });
        },
        _printPDF: function (detta, id) {
            var url = detta.url + "?command=getPDF&id=" + id + "&_=" + new Date().getTime();
            $.pdfviewerPrint(url, "Förhandsgranska avtal", function () {
                console.log("Utskrift startad.");
            });
        },
        returntobetalmetod: function (id, terminal, pid, callback) {
            this._returntobetalmetod(this, id, terminal, pid, callback);
        },
        _returntobetalmetod: function (detta, id, terminal, pid, callback) {
            //$("<div/>").medlembetalmetod({
            //    session: detta.options.session, terminal: terminal, faktura: id, resume: true, callbackSuccess: function () {

            //        callback();
            //    }
            //});
            alert("Här är jag " + id);
        },
        item: null,
        addbetalmetod: function (items, callback) {
            this._addbetalmetod(this, items, callback);
        },
        _addbetalmetod: function (detta, items,  callback) {
            var item = new Object();
            item.command = "getinitbetalkort";
            item.title = "Initierar terminal";
            detta._ajax(detta, item, function (obj) {
                if (obj.resultat == false) {
                    informationMessage(obj.text, "warning");
                    return;

                }
                var returnUrl = "";
                if (items.returnUrl) {
                    returnUrl = items.returnUrl;
                }

                var divContent = $("<div/>").addClass("list-group");
                //var divList = $("<div/>").appendTo(divContent);

                for (var i = 0; i < obj.terminaler.length; i++) {
                    var rowDiv = $("<div/>").addClass("row");
                    var rowCol = $("<div/>").addClass("col-md-5").appendTo(rowDiv);
                    //var mediaDiv = $("<div/>").addClass("media").appendTo(rowCol);
                    //var mediaBodyDiv = $("<div/>").addClass("media-body").appendTo(mediaDiv);
                    $("<h4/>").html(obj.terminaler[i].namn).appendTo(rowCol);

                    //var imageDiv = $("<div/>").addClass("media-right").appendTo(mediaDiv);

                    //$("<li/>").attr("href", "#").appendTo(imageDiv).append($("<img/>").addClass("media-object").attr("src", data.terminaler[i].logos[0].img));


                    rowCol = $("<div/>").addClass("col-md-7 text-right").appendTo(rowDiv);
                    $("<img/>").attr("src", obj.terminaler[i].logos[0].img).appendTo(rowCol);
                    $("<div/>").append($("<a/>").attr("href", obj.terminaler[i].logos[0].link).text("Mer info".translate()).attr("target", "_blank")).appendTo(rowCol);

                    $("<a/>").attr("href", "#").addClass("list-group-item").append(rowDiv).appendTo(divContent).bind('click', { item: obj.terminaler[i], medlem: obj.id, url: returnUrl }, function (e) {
                        dialog.close();
                        $("<div/>").payexterminal({
                            session: detta.options.session, terminal: e.data.item.id, medlem: e.data.medlem, returnUrl: e.data.url, resume: true, callbackSuccess: function () {
                                callback();
                            }
                        });
                    });

                }

                var dialog = new BootstrapDialog({
                    type: BootstrapDialog.TYPE_INFO,
                    title: "Lägg till betalmetod",
                    message: divContent,
                    onshown: function () {

                    },
                    buttons: [{
                        id: '0',
                        label: "Stäng".translate(),
                        action: function (dialog) {
                            dialog.close();
                        }
                    }]
                });
                dialog.open();

               
            });
        },
        _load: function () {
            this.element.empty();
            var detta = this;
            var item = new Object();
            item.command = "getbetalmetoder"
            var div = $("<div/>").appendTo(detta.element).addClass('loading');
            detta._ajax(detta, item, function (obj) {
                console.log("BETALMETODER:", obj);
                div.hide();
                div.remove();
                detta.element.empty();

                if (obj.resultat == false) {
                    BootstrapDialog.alert(obj.text);
                    $("<div/>").html(obj.text).addClass("alert alert-danger").attr("role", "alert").appendTo(detta.element);
                    return;
                }
                if (obj.allowaddcard) {

                    var p = $("<p/>").appendTo(detta.element);
                    $("<button/>").attr("type", "button").addClass("btn btn-primary").html("Lägg till betalkort".translate()).attr("data-loading-text", "<i class='fa fa-circle-o-notch fa-spin'></i> " + "Lägg till betalkort".translate()).appendTo(p).bind('click', {}, function (e) {
                        e.preventDefault();
                        detta._addbetalmetod(detta, function () { detta.refresh(); });
                    });
                }
                var grid = $("<div/>").appendTo(detta.element);
                var items = [];
                for (var i = 0; i < obj.items.length; i++) {
                    var contentDiv = $("<div/>").medlembetalmetod({
                        item: obj.items[i], session: detta.options.session, callbackRefresh: function () {
                            detta.refresh();
                        }
                    });
                    items.push(contentDiv);                    
                }
                grid.mygrid({ items: items });
            });

        },
        destroy: function () {
            this.element.empty();
            // Call the base destroy function.
            $.Widget.prototype.destroy.call(this);
        }
    });
})(jQuery);