var AppCpCookie = null;

Ext.onReady(function () {
    if (!Ext.supports.Touch) {
        Ext.tip.QuickTipManager.init();
    }
    AppCpCookie = Ext.create('Ext.state.CookieProvider', {
        path: "/",
        expires: new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 30)),
        domain: null
    });
    Ext.get('loadpage-loading-msg').fadeOut({
        remove: true,
        duration: 250
    });
    Ext.get('loadpage-loading-mask').fadeOut({
        remove: true,
        duration: 1000
    });
    sendAjaxDataJsonRpcL("ajax/performSignByLoginsecuritytoken", {
        loginsecuritytoken: AppCpCookie.get("loginsecuritytoken")
    }, null, function (data, datad, status) {
        if (status && datad) {
            AppCpCookie.set("loginsecuritytoken", datad.loginsecuritytoken);
        }
        sendAjaxDataJsonRpcL("ajax/isSignUser", {}, null, function (data, datad, status) {
            if (status) {
                if (datad) {
                    loadUserCtx(function () {
                        if (!autoLoginProccess()) {
                            buildView();
                        }
                    }, window);
                } else {
                    buildView();
                }
            } else {
                Ext.MessageBox.alert(Lang.error, data.error);
            }
        }, 0);
    }, 0);
});

function buildView() {
    var vlogin_service_panel = AppCpCookie.get("login_service_panel");
    var vfservicep = vlogin_service_panel === undefined ? (Const.DEBUG ? false : false) : vlogin_service_panel;
    var vlogin_service_panel_login = AppCpCookie.get("login_service_panel_login");
    var vlogin_service_panel_pass = AppCpCookie.get("login_service_panel_pass");
    var flogin = vlogin_service_panel_login === undefined ? (Const.DEBUG ? "service" : "") : vlogin_service_panel_login;
    var fpass = vlogin_service_panel_pass === undefined ? (Const.DEBUG ? "service" : "") : vlogin_service_panel_pass;
    if (OPTIONS.default_service_panel == 1) {
        vfservicep = true;
    }
    var vfservicep2 = false;
    if (OPTIONS.default_rememberme == 1) {
        vfservicep2 = true;
    }
    var viewPort = new Ext.Viewport({
        layout: 'fit',
        items: {
            xtype: "panel",
            layout: "absolute",
            bodyStyle: "background-color:transparent",
            items: [{
                xtype: "panel",
                id: "panellogin",
                width: 300,
                layout: "fit",
                bodyStyle: "padding:10px",
                border: true,
                items: [{
                    xtype: "form",
                    items: [{
                        xtype: "box",
                        anchor: '0',
                        html: {
                            tag: "div",
                            cn: [{
                                tag: "div",
                                cls: "main-logo-div"
                            }]
                        }
                    }, {
                        id: "flogin",
                        xtype: 'textfield',
                        anchor: '0',
                        fieldLabel: Lang.login,
                        value: flogin
                    }, {
                        id: "fpass",
                        xtype: 'textfield',
                        anchor: '0',
                        inputType: "password",
                        fieldLabel: Lang.haslo,
                        value: fpass
                    }, {
                        id: "fservicep2",
                        xtype: "checkbox",
                        anchor: '0',
                        boxLabel: Lang.pamietaj_mnie + "<span class='rememberme-info' data-qtip='" + Lang.remembermeinfo + "'> [?]</span>",
                        checked: vfservicep2
                    }],
                    buttons: ["->", {
                        text: Lang.ok,
                        clickEvent: "click",
                        handler: submitButtonLogin
                    }]
                }]
            }],
            bbar: {
                xtype: "container",
                layout: {
                    type: "hbox",
                    align: "stretch",
                    pack: "end"
                },
                height: 50,
                style: "margin:5px",
                items: [{
                    id: "fservicep",
                    xtype: "button",
                    ui: "plain-toolbar",
                    iconCls: "iconAdminSmall",
                    scale: "large",
                    enableToggle: true,
                    pressed: vfservicep
                }]
            },
            listeners: {
                resize: function (c) {
                    var panellogin = Ext.getCmp("panellogin");
                    panellogin.el.alignTo(panellogin.ownerCt.el, "c-c", [0, -50]);
                },
                afterRender: function (c) {
                    var panellogin = Ext.getCmp("panellogin");
                    panellogin.el.alignTo(panellogin.ownerCt.el, "c-c", [0, -50]);
                }
            }
        }
    });
    var keyMap = new Ext.util.KeyMap({
        target: Ext.getBody(),
        binding: {
            key: Ext.event.Event.ENTER,
            fn: function () {
                submitButtonLogin();
            }
        }
    });
}

function autoLoginProccess(newState) {
    var pageToLoad = "admin";
    if (newState !== undefined) {
        AppCpCookie.set("login_service_panel", newState);
        pageToLoad = newState ? "admin" : "user";
    } else {
        var vlogin_service_panel = AppCpCookie.get("login_service_panel");
        newState = vlogin_service_panel === undefined ? true : vlogin_service_panel;
        pageToLoad = newState ? "admin" : "user";
    }
    if (!validPrivilegesOperatorComplex("access.biui.asign")) {
        if (pageToLoad == "user") {
            if (validPrivilegesOperatorComplex("access.admin.asign")) {
                pageToLoad = "admin";
            } else {
                Ext.MessageBox.alert(Lang.error, Lang.brak_uprawnien_do_wykonania_operacji);
                return false;
            }
        }
    }
    if (!validPrivilegesOperatorComplex("access.admin.asign")) {
        if (pageToLoad == "admin") {
            if (validPrivilegesOperatorComplex("access.biui.asign")) {
                pageToLoad = "user";
            } else {
                Ext.MessageBox.alert(Lang.error, Lang.brak_uprawnien_do_wykonania_operacji);
                return false;
            }
        }
    }
    window.location = "html?p=" + pageToLoad;
    return true;
}

function submitButtonLogin() {
    Ext.getCmp("panellogin").el.mask(Lang.przetwarzanie_danych);
    sendAjaxDataJsonRpcL("ajax/performSign", {
        login: Ext.getCmp("flogin").getValue(),
        pass: Ext.getCmp("fpass").getValue(),
        rememberme: Ext.getCmp("fservicep2").getValue()
    }, null, function (data, datad, status) {
        if (status && datad) {
            AppCpCookie.set("loginsecuritytoken", datad.loginsecuritytoken);
        }
        if (status && datad) {
            sendAjaxDataJsonRpcL("ajax/setCurrentTimeZone", {
                timezone: null,
                browsertimezone: JSTZ.determine().name()
            }, null, function (data, datad, status) {
                AppCpCookie.set("login_service_panel_login", Ext.getCmp("flogin").getValue());
                if (Const.DEBUG) {
                    AppCpCookie.set("login_service_panel_pass", Ext.getCmp("fpass").getValue());
                }
                if (status) {
                    loadUserCtx(function () {
                        if (!autoLoginProccess(Ext.getCmp("fservicep").pressed)) {
                            Ext.getCmp("panellogin").el.unmask();
                        }
                    }, window);
                } else {
                    Ext.getCmp("panellogin").el.unmask();
                    Ext.MessageBox.alert(Lang.error, data.error);
                }
            }, 0);
        } else {
            Ext.getCmp("panellogin").el.unmask();
            Ext.MessageBox.alert(Lang.error, data.error || Lang.niepoprawna_nazwa_uzytkownika_lub_haslo);
        }
    }, 0);
}


