﻿

(function ($) {
    $.widget("nmk.grupp", {
        options: {
            frameless:false,
            allowpassnummer: false,
            checkitem: {},
            identifier: "",
            mainperson: null,
            session: "",
            id: 0,
            item: null,
            user: function (user) { },
            loginCallback: function () { },
            slideUpCallback: function (newitem) { },
            show: false,
            daystoshow: 7,
            showbuttons: true,
            addabonnemang: null,
            addprodukt: null,
            order: null,
            password: "",
            showlogout: false,
            classes: [],
            loginStartCallback: function () { },
            loadComplete: function () { },
        },
        url: 'json/grupp.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);
                }
                if (obj.resultat == false) {
                    informationMessage(obj.text, "warning");
                }
            });
        },
        funcClick: function () { },
        _load: function () {
            this.element.empty();
            var detta = this;

            detta.funcClick = function (grupp) {
                console.log("Klickar", grupp);
                if (grupp.passwordprotect) {
                    var divPinkod = $("<form/>").attr("role", "form");
                    var loginFunc = function () {
                        clearTimeout(detta.timer);
                        var item = new Object();
                        item.command = "checkpasswordgrupp";
                        item.title = "Logga in...";
                        item.gruppid = grupp.id;
                        item.password = txtPinkod.val();
                        detta._ajax(detta, item, function (obj) {
                            if (obj.resultat == false) {
                                BootstrapDialog.alert(obj.text);
                                detta.timer = setTimeout(function () {
                                    pinDialog.close();
                                }, 30000);
                                return;
                            }
                            pinDialog.close();
                            detta.openGrupp();


                        });
                    };
                    var txtPinkod = $("<input/>").attr("type", "password").appendTo(divPinkod).myinput({
                        placeholder: "Lösenord".translate(), iconTitle: "Ange lösenord".translate()
                    }).select().keypress(function (e) {
                        var key = e.which;
                        if (key == 13)  // the enter key code
                        {
                            loginFunc();
                            return false;
                        } else {
                            clearTimeout(detta.timer);
                            detta.timer = setTimeout(function () {
                                pinDialog.close();
                            }, 120000);
                        }
                    });
                    var pinDialog = new BootstrapDialog({
                        title: "Ange Lösenord".translate(),
                        message: divPinkod,
                        onshown: function () {
                            txtPinkod.focus();
                        },
                        buttons: [{
                            id: '0',
                            label: "Fortsätt".translate(),
                            cssClass: "btn-primary",
                            action: function (dialog) {
                                loginFunc();
                            }
                        }, {
                            id: '1',
                            label: "Stäng".translate(),
                            action: function (dialog) {
                                dialog.close();
                                clearTimeout(detta.timer);

                            }
                        }]
                    });
                    pinDialog.open();
                    detta.timer = setTimeout(function () {
                        pinDialog.close();
                    }, 120000);
                    return;
                }


                detta.openGrupp();

            };
            var createGrupp = function (item) {
                var grupp = item;
                if (grupp.demandreferens == undefined) {
                    grupp.demandreferens = false;
                }
                if (grupp.referenstitle == undefined) {
                    grupp.referenstitle = "Referens";
                }

                //alert(grupp.info.translate());
                console.log("GRUPP", grupp);

                var divInfo = $("<div/>");
                if (item.imagefiles.length > 0) {

                    var imageslideritems = [];
                    for (var i = 0; i < item.imagefiles.length; i++) {
                        imageslideritems.push(item.imagefiles[i]);
                    }
                    $("<div/>").imageslider({ images: imageslideritems }).appendTo(divInfo);
                }
                var buttonstyle = "btn-primary";
                if (grupp.buttonstyle) {
                    if (grupp.buttonstyle.length > 0) {
                        buttonstyle = "btn-" + grupp.buttonstyle;
                    }
                }
                var footer = null;
                if (grupp.button.translate().length > 0) {
                    //alert(grupp.button + " " + grupp.button.translate());
                    //alert(grupp.url);

                    footer = {
                        text: $("<button/>").attr("type", "button").addClass("btn " + buttonstyle).html(grupp.button.translate()).click(function (e) {
                            e.preventDefault();
                            detta.funcClick(grupp);
                            e.stopPropagation();

                        })
                    }
                }
                if (grupp.info.length > 0) {
                    divInfo.append($("<div/>").addClass("groupinfo").html(grupp.info.translate()));
                }

                if (footer != null) {
                    divInfo.find('img').each(function () {
                        $(this).css({ cursor: "pointer" }).click(function () {
                            detta.funcClick(grupp);
                        });

                    });
                }

                if (divInfo.is(':empty')) {
                    divInfo = "";
                }



                var subitem = $("<div/>").mypanel({
                    class: "maingrupp",
                    checkitem: detta.options.checkitem,
                    selfservicestation: detta.options.checkitem.selfservicestation,
                    onclick: function () {
                        if (footer != null) {
                            detta.funcClick(grupp);

                        }
                    },

                    header: { text: grupp.namn.translate() }, content: { text: divInfo }, footer: footer
                });

               
                detta.openGrupp = function () {
                    if (detta.options.frameless && grupp.url) {
                        window.location.href = grupp.url;
                        return;
                    }
                    if (grupp.typ == 0) {
                        detta.element.slideUp('fast', function () {

                            var newitem = $("<div/>");
                            if (grupp.appheader != undefined) {
                                if (grupp.appheader.length > 0) {
                                    newitem.append($("<div/>").addClass('tecknaTitle').append(grupp.appheader));
                                }
                            }
                            $("<div/>").teckna({
                                demandreferens: grupp.demandreferens,
                                referenstitle: grupp.referenstitle,
                                loadComplete: detta.options.loadComplete,
                                checkitem: detta.options.checkitem,
                                allowpassnummer: detta.options.allowpassnummer,
                                removeantifix: grupp.removeantifix, order: detta.options.order, valjanlaggningtitle: grupp.valjanlaggningtitle, addprodukt: detta.options.addprodukt, addabonnemang: detta.options.addabonnemang, grupp: grupp.id, arrangemangsnamn: grupp.arrangemangsnamn, abonnemangsnamn: grupp.abonnemangsnamn, title: grupp.namn, session: detta.options.session, user: detta.options.user, mainperson: detta.options.mainperson
                            }).appendTo(newitem);
                            detta.options.slideUpCallback(newitem);
                        });
                    }
                    if (grupp.typ == 12 || grupp.typ == 13) {
                        detta.element.slideUp('fast', function () {
                            var newitem = $("<div/>").teckna({
                                demandreferens: grupp.demandreferens,
                                referenstitle: grupp.referenstitle,
                                loadComplete: detta.options.loadComplete,
                                checkitem: detta.options.checkitem,
                                allowpassnummer: detta.options.allowpassnummer,
                                removeantifix: grupp.removeantifix, order: detta.options.order, valjanlaggningtitle: grupp.valjanlaggningtitle, addprodukt: detta.options.addprodukt, addabonnemang: detta.options.addabonnemang, grupp: grupp.id, arrangemangsnamn: grupp.arrangemangsnamn, abonnemangsnamn: grupp.bokningservicenamn, bokningservivenamn: grupp.bokningservicenamn, title: grupp.namn, session: detta.options.session, user: detta.options.user, mainperson: detta.options.mainperson
                            });
                            detta.options.slideUpCallback(newitem);
                        });
                    }
                    if (grupp.typ == 11) {
                        detta.element.slideUp('fast', function () {
                            var newitem = $("<div/>").teckna({
                                demandreferens: grupp.demandreferens,
                                referenstitle: grupp.referenstitle,
                                loadComplete: detta.options.loadComplete,
                                loginCallback: detta.options.loginCallback,
                                maxwidth: 4,
                                minwidth: 3,
                                personuppgiftertranande: "Välj Deltagare",
                                folkbokforingsadresstranande: "Välj Deltagare",
                                checkitem: detta.options.checkitem,
                                allowpassnummer: detta.options.allowpassnummer,
                                removeantifix: grupp.removeantifix, order: detta.options.order, valjanlaggningtitle: grupp.valjanlaggningtitle, addprodukt: detta.options.addprodukt, addabonnemang: detta.options.addabonnemang, grupp: grupp.id, abonnemangsnamn: grupp.arrangemangsnamn, title: grupp.namn, session: detta.options.session, user: detta.options.user, mainperson: detta.options.mainperson
                            });
                            detta.options.slideUpCallback(newitem);
                        });
                    }
                    if (grupp.typ == 1) {

                        detta.element.slideUp('fast', function () {

                            var newitem = $("<div/>").tillfallen({
                                loadComplete: detta.options.loadComplete,
                                loginStartCallback: detta.options.loginStartCallback,
                                checkitem: detta.options.checkitem,
                                startdate: "today",
                                title: grupp.namn,
                                daystoshow: detta.options.daystoshow,
                                showbuttons: detta.options.showbuttons,
                                showlogout: detta.options.showlogout,
                                loginCallback: function () {
                                    detta.options.loginCallback();
                                },
                                grupp: grupp.id,
                                session: session,
                                user: detta.options.user
                            });
                            detta.options.slideUpCallback(newitem);

                        });
                    }
                    if (grupp.typ == 2) {
                        detta.element.slideUp('fast', function () {

                            var newitem = $("<div/>").bokningservice({
                                checkitem: detta.options.checkitem,
                                startdate: "today",
                                title: grupp.namn,
                                daystoshow: detta.options.daystoshow,
                                loginCallback: function () {
                                    detta.options.loginCallback();
                                }, grupp: grupp.id,
                                session: session,
                                loadComplete: detta.options.loadComplete,
                                user: detta.options.user
                            });
                            detta.options.slideUpCallback(newitem);

                        });

                    }

                    if (grupp.typ == 3 || grupp.typ == 9) {
                        detta.element.slideUp('fast', function () {

                            var newitem = $("<div/>").sendmediaid({
                                checkitem: detta.options.checkitem,
                                title: grupp.namn,
                                typ: grupp.typ,
                                loginCallback: function () {
                                    detta.options.loginCallback();
                                }, grupp: grupp.id, session: session, loadComplete: function () {
                                    //loader.hide();

                                }, user: detta.options.user
                            });

                            detta.options.slideUpCallback(newitem);
                        });
                    }

                    if (grupp.typ == 4 || grupp.typ == 6) {
                        //detta.element.slideUp('fast', function () {

                        var newitem = $("<div/>").inregistrering({
                            checkitem: detta.options.checkitem,
                            type: grupp.typ,
                            title: grupp.namn,
                            loginCallback: function () {
                                detta.options.loginCallback();
                            }, grupp: grupp.id, session: session, loadComplete: function () {
                                //loader.hide();

                            }, user: function (medlem) {
                                console.log("USER");
                                funcLoginClick(function () {
                                    newitem.inregistrering('refresh');
                                });

                            }
                        });

                        //detta.options.slideUpCallback(newitem);
                        //});
                    }
                    if (grupp.typ == 5) {
                        detta.element.slideUp('fast', function () {
                            var newitem = $("<div/>").dooradmin({
                                checkitem: detta.options.checkitem,
                                title: grupp.namn,
                                loginCallback: function () {
                                    detta.options.loginCallback();
                                }, grupp: grupp.id, session: session, loadComplete: function () {
                                    //loader.hide();

                                }, user: function (medlem) {
                                    funcLoginClick(function () {
                                        newitem.dooradmin('refresh');
                                    });

                                }
                            });
                            detta.options.slideUpCallback(newitem);
                        });
                    }
                    if (grupp.typ == 7) {
                        detta.element.slideUp('fast', function () {
                            var newitem = $("<div/>").coronainfo({
                                checkitem: detta.options.checkitem,
                                title: grupp.namn,
                                loginCallback: function () {
                                    detta.options.loginCallback();
                                }, id: grupp.id, session: session, loadComplete: function () {
                                    //loader.hide();

                                }, user: function (medlem) {
                                    funcLoginClick(function () {
                                        newitem.coronainfo('refresh');
                                    });

                                }
                            });
                            detta.options.slideUpCallback(newitem);
                        });
                    }


                    if (grupp.typ == 8) {
                        //detta.element.slideUp('fast', function () {

                        //    detta.options.slideUpCallback(newitem);
                        //});
                        var newitem = $("<div/>").addmediaid({
                            checkitem: detta.options.checkitem,
                            title: grupp.namn,
                            loginCallback: function () {
                                detta.options.loginCallback();
                            }, id: grupp.id, session: session, loadComplete: function () {
                                //loader.hide();

                            }, user: function (medlem) {
                                funcLoginClick(function () {
                                    //newitem.addmediaid('refresh');
                                });

                            }
                        });
                    }

                    if (grupp.typ == 14) {
                        var newitem = $("<div/>").qrcodetomediaid({
                            checkitem: detta.options.checkitem,
                            title: grupp.namn,
                            loginCallback: function () {
                                detta.options.loginCallback();
                            }, id: grupp.id, session: session, loadComplete: function () {
                                //loader.hide();

                            }, user: function (medlem) {
                                funcLoginClick(function () {
                                    //newitem.addmediaid('refresh');
                                });

                            }
                        });
                    }



                };
                if (detta.options.show) {
                    detta.funcClick(grupp);
                }
                else {
                    subitem.appendTo(detta.element);
                }

                detta.options.loadComplete();
            }

            if (detta.options.item == null) {
                var item = new Object();
                item.command = "get";
                item.title = "Laddar grupp";
                item.id = detta.options.id;
                detta._ajax(detta, item, function (obj) {
                    if (obj.resultat == false) {
                        informationMessage(obj.text, "warning");
                        return;
                    }
                    createGrupp(obj.item);
                });
            }
            else {
                createGrupp(detta.options.item);
            }



        },
        destroy: function () {
            this.element.empty();
            // Call the base destroy function.
            $.Widget.prototype.destroy.call(this);
        }
    });
})(jQuery);