﻿

(function ($) {
    $.widget("nmk.qrcodetomediaid", {
        options: {
            grupp: 0,
            identifier: "",
            session: "",
            clickCallback: function (item) { },
            title: "",
            user: function (user) { },
            resetTimeout: 20000,
        },
        url: 'json/qrcodetomediaid.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;
            item.grupp = detta.options.grupp;
            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.medlem)
                    detta.options.user(obj.medlem);

                //if (obj.resultat == false) {
                //    informationMessage(obj.text, "warning");
                //}
            });
        },
        item: null,
        personnr: "",
        medlem: 0,
        resetTimer: null,
        _load: function () {
            this.element.empty();
            var detta = this;
            var divForm = $("<div/>");
            var divTitleDiv = $("<div/>").appendTo(divForm).css({ textAlign: "center" });
            var divTitle = $("<h1/>").html("Skanna biljetten i qr-kodsläsaren").appendTo(divTitleDiv);
            var check = true;


            var divQR = $("<div/>").addClass("panel panel-default").appendTo(divForm);
            var divQRContent = $("<div/>").addClass("panel-body").appendTo(divQR);

            var row = $("<div/>").addClass("row").appendTo(divQRContent);
            var col = $("<div/>").addClass("col-sm-4").appendTo(row);
            var divQRIcon = $("<div/>").css({ fontSize: "80px", color: "darkgreen" }).addClass("loader").appendTo(col);
            col = $("<div/>").addClass("col-sm-8").appendTo(row);
            var QRtitle = $("<h1/>").html("Skanna biljetten i qr-kodsläsaren").appendTo(col).hide();

            var funcResetfunc = function () {
                dialog.close();
            };

            var funcClear = function () {
                if (detta.resetTimer != null) {
                    clearTimeout(detta.resetTimer);
                }
            };
            var funcReset = function () {

                funcClear();
                detta.resetTimer = setTimeout(function () {
                    funcResetfunc();
                }, detta.options.resetTimeout);
            };
            funcReset();
            var txtQrkod = $("<input/>").appendTo(col).myinput({ placeholder: "QR-kod", iconTitle: "QR-kod" }).keypress(function (e) {
                var key = e.which;
                funcReset();
                if (key == 13)  // the enter key code
                {
                    funcCheck(function (obj) {



                    });
                    return false;
                }
            });

            var divMediaID = $("<div/>").addClass("panel panel-default").appendTo(divForm).hide();
            var divMediaIDContent = $("<div/>").addClass("panel-body").appendTo(divMediaID);
            var row = $("<div/>").addClass("row").appendTo(divMediaIDContent);
            var col = $("<div/>").addClass("col-sm-4").appendTo(row);
            var divMediaIDIcon = $("<div/>").css({ fontSize: "80px", color: "darkgreen" }).addClass("loader").appendTo(col);
            col = $("<div/>").addClass("col-sm-8").appendTo(row);
            var MediaIDtitle = $("<h1/>").html("Skanna armbandet i läsaren").appendTo(col).hide();
            var txtMediaID = $("<input/>").appendTo(col).myinput({ placeholder: "Armband", iconTitle: "Armband" }).keypress(function (e) {
                var key = e.which;

                funcReset();
                if (key == 13)  // the enter key code
                {

                    funcSave(function (obj) {


                    });
                    return false;
                }
            });

            var funcCheck = function (callback) {
                funcReset();
                divTitle.html("Vänta... Kontrollerar...");
                txtQrkod.hide();
                var item = new Object();
                item.command = "qrcodetomediaidcheck";
                item.qrcode = txtQrkod.val();
                item.title = "Kontrollerar";
                detta._ajax(detta, item, function (obj) {
                    console.log(obj);
                    callback(obj);                   
                    divTitle.html(obj.text);
                    if (obj.resultat) {
                         check = false;
                        divQRIcon.removeClass("loader").addClass("glyphicon glyphicon-check");
                        setTimeout(function () {
                            divTitle.html("Skanna armband");
                            divQR.hide();
                            divMediaID.show();
                            txtMediaID.focus().select();
                        }, 2000);
                        return;
                    } else {
                        txtQrkod.show();
                        txtQrkod.focus().select();
                    }


                });

            };

            var funcSave = function (callback) {
                divTitle.html("Vänta... Kontrollerar...");
                txtMediaID.hide();
                var item = new Object();
                item.command = "qrcodetomediaid";
                item.qrcode = txtQrkod.val();
                item.mediaid = txtMediaID.val();
                item.title = "Sparar";
                detta._ajax(detta, item, function (obj) {
                    console.log(obj);
                    callback(obj);
                    divTitle.html(obj.text);

                    if (obj.resultat) {
                        funcClear();
                        divMediaIDIcon.removeClass("loader").addClass("glyphicon glyphicon-check");
                        detta.resetTimer = setTimeout(function () {
                            dialog.close();
                            detta.destroy();
                        }, 2000);
                        return;
                    } else {
                        txtMediaID.show();
                        txtMediaID.focus().select();
                    }
                });

            };

            var dialog = BootstrapDialog.show({
                type: BootstrapDialog.TYPE_PRIMARY,
                title: 'REGISTRERA ARMBAND',
                message: divForm,
                onshown: function (dialogRef) {
                    txtQrkod.focus();
                    txtQrkod.select();
                },
                onhide: function () {
                    detta.destroy();
                },
                buttons: [
                    {
                        label: 'Registrera',
                        id: "btn-sok",
                        cssClass: 'btn-primary',
                        autospin: true,
                        action: function (dialogRef) {
                            dialogRef.enableButtons(false);
                            var button = this;


                            if (check) {
                                funcCheck(function (obj) {
                                    button.stopSpin();
                                    dialogRef.enableButtons(true);

                                });

                                return;
                            }
                            funcSave(function (obj) {
                                button.stopSpin();
                                dialogRef.enableButtons(true);

                            });

                        }
                    }
                    ,
                    {
                        label: 'Börja om',
                        cssClass: 'btn-primary',
                        autospin: true,
                        action: function (dialogRef) {
                            dialogRef.close();
                            detta.refresh();
                        }
                    }
                    ,
                    {
                        label: 'Stäng',
                        cssClass: 'btn-warning',
                        autospin: true,
                        action: function (dialogRef) {
                            dialogRef.close();
                        }
                    }
                ]
            });

        },
        destroy: function () {
            if (this.resetTimer != null) {
                clearTimeout(this.resetTimer);
            }
            this.element.empty();
            // Call the base destroy function.
            $.Widget.prototype.destroy.call(this);
        }
    });
})(jQuery);