Domain: amberpublishers.in
Server Adress: 86.38.243.169

privdayz.com

/home/u866425823/domains/consolelog.tech/public_html/admin/assets/js/
Dosya Yükle :
Current File : //home/u866425823/domains/consolelog.tech/public_html/admin/assets/js/lobibox.min.js

var Lobibox = Lobibox || {};
! function () {
    function LobiboxPrompt(type, options) {
        this.$input = null, this.$type = "prompt", this.$promptType = type, options = $.extend({}, Lobibox.prompt.DEFAULT_OPTIONS, options), this.$options = this._processInput(options), this._init(), this.debug(this)
    }

    function LobiboxConfirm(options) {
        this.$type = "confirm", this.$options = this._processInput(options), this._init(), this.debug(this)
    }

    function LobiboxAlert(type, options) {
        this.$type = type, this.$options = this._processInput(options), this._init(), this.debug(this)
    }

    function LobiboxProgress(options) {
        this.$type = "progress", this.$progressBarElement = null, this.$options = this._processInput(options), this.$progress = 0, this._init(), this.debug(this)
    }

    function LobiboxWindow(type, options) {
        this.$type = type, this.$options = this._processInput(options), this._init(), this.debug(this)
    }
    Lobibox.counter = 0, Lobibox.prompt = function (type, options) {
        return new LobiboxPrompt(type, options)
    }, Lobibox.confirm = function (options) {
        return new LobiboxConfirm(options)
    }, Lobibox.progress = function (options) {
        return new LobiboxProgress(options)
    }, Lobibox.error = {}, Lobibox.success = {}, Lobibox.warning = {}, Lobibox.info = {}, Lobibox.alert = function (type, options) {
        return ["success", "error", "warning", "info"].indexOf(type) > -1 ? new LobiboxAlert(type, options) : void 0
    }, Lobibox.window = function (options) {
        return new LobiboxWindow("window", options)
    };
    var LobiboxBase = {
        $type: null,
        $el: null,
        $options: null,
        debug: function () {
            this.$options.debug && window.console.debug.apply(window.console, arguments)
        },
        _processInput: function (options) {
            if ($.isArray(options.buttons)) {
                for (var btns = {}, i = 0; i < options.buttons.length; i++) btns[options.buttons[i]] = Lobibox.base.OPTIONS.buttons[options.buttons[i]];
                options.buttons = btns
            }
            options.customBtnClass = options.customBtnClass ? options.customBtnClass : Lobibox.base.DEFAULTS.customBtnClass;
            for (var i in options.buttons)
                if (options.buttons.hasOwnProperty(i)) {
                    var btn = options.buttons[i];
                    btn = $.extend({}, Lobibox.base.OPTIONS.buttons[i], btn), btn["class"] || (btn["class"] = options.customBtnClass), options.buttons[i] = btn
                } return options = $.extend({}, Lobibox.base.DEFAULTS, options), void 0 === options.showClass && (options.showClass = Lobibox.base.OPTIONS.showClass), void 0 === options.hideClass && (options.hideClass = Lobibox.base.OPTIONS.hideClass), void 0 === options.baseClass && (options.baseClass = Lobibox.base.OPTIONS.baseClass), void 0 === options.delayToRemove && (options.delayToRemove = Lobibox.base.OPTIONS.delayToRemove), options.iconClass || (options.iconClass = Lobibox.base.OPTIONS.icons[options.iconSource][this.$type]), options
        },
        _init: function () {
            var me = this;
            me._createMarkup(), me.setTitle(me.$options.title), me.$options.draggable && !me._isMobileScreen() && (me.$el.addClass("draggable"), me._enableDrag()), me.$options.closeButton && me._addCloseButton(), me.$options.closeOnEsc && $(document).on("keyup.lobibox", function (ev) {
                27 === ev.which && me.destroy()
            }), me.$options.baseClass && me.$el.addClass(me.$options.baseClass), me.$options.showClass && (me.$el.removeClass(me.$options.hideClass), me.$el.addClass(me.$options.showClass)), me.$el.data("lobibox", me)
        },
        _calculatePosition: function (position) {
            var top, me = this;
            top = "top" === position ? 30 : "bottom" === position ? $(window).outerHeight() - me.$el.outerHeight() - 30 : ($(window).outerHeight() - me.$el.outerHeight()) / 2;
            var left = ($(window).outerWidth() - me.$el.outerWidth()) / 2;
            return {
                left: left,
                top: top
            }
        },
        _createButton: function (type, op) {
            var me = this,
                btn = $("<button></button>").addClass(op["class"]).attr("data-type", type).html(op.text);
            return me.$options.callback && "function" == typeof me.$options.callback && btn.on("click.lobibox", function (ev) {
                var bt = $(this);
                me._onButtonClick(me.$options.buttons[type], type), me.$options.callback(me, bt.data("type"), ev)
            }), btn.click(function () {
                me._onButtonClick(me.$options.buttons[type], type)
            }), btn
        },
        _onButtonClick: function (buttonOptions, type) {
            var me = this;
            ("ok" === type && "prompt" === me.$type && me.isValid() || "prompt" !== me.$type || "ok" !== type) && buttonOptions && buttonOptions.closeOnClick && me.destroy()
        },
        _generateButtons: function () {
            var me = this,
                btns = [];
            for (var i in me.$options.buttons)
                if (me.$options.buttons.hasOwnProperty(i)) {
                    var op = me.$options.buttons[i],
                        btn = me._createButton(i, op);
                    btns.push(btn)
                } return btns
        },
        _createMarkup: function () {
            var me = this,
                lobibox = $('<div class="lobibox"></div>');
            lobibox.attr("data-is-modal", me.$options.modal);
            var header = $('<div class="lobibox-header"></div>').append('<span class="lobibox-title"></span>'),
                body = $('<div class="lobibox-body"></div>');
            if (lobibox.append(header), lobibox.append(body), me.$options.buttons && !$.isEmptyObject(me.$options.buttons)) {
                var footer = $('<div class="lobibox-footer"></div>');
                footer.append(me._generateButtons()), lobibox.append(footer), Lobibox.base.OPTIONS.buttonsAlign.indexOf(me.$options.buttonsAlign) > -1 && footer.addClass("text-" + me.$options.buttonsAlign)
            }
            me.$el = lobibox.addClass(Lobibox.base.OPTIONS.modalClasses[me.$type])
        },
        _setSize: function () {
            var me = this;
            me.setWidth(me.$options.width), me.setHeight("auto" === me.$options.height ? me.$el.outerHeight() : me.$options.height)
        },
        _calculateBodyHeight: function (height) {
            var me = this,
                headerHeight = me.$el.find(".lobibox-header").outerHeight(),
                footerHeight = me.$el.find(".lobibox-footer").outerHeight();
            return height - (headerHeight ? headerHeight : 0) - (footerHeight ? footerHeight : 0)
        },
        _addBackdrop: function () {
            0 === $(".lobibox-backdrop").length && $("body").append('<div class="lobibox-backdrop"></div>')
        },
        _triggerEvent: function (type) {
            var me = this;
            me.$options[type] && "function" == typeof me.$options[type] && me.$options[type](me)
        },
        _calculateWidth: function (width) {
            var me = this;
            return width = Math.min(Math.max(width, me.$options.width), $(window).outerWidth()), width === $(window).outerWidth() && (width -= 2 * me.$options.horizontalOffset), width
        },
        _calculateHeight: function (height) {
            var me = this;
            return console.log(me.$options.height), height = Math.min(Math.max(height, me.$options.height), $(window).outerHeight()), height === $(window).outerHeight() && (height -= 2 * me.$options.verticalOffset), height
        },
        _addCloseButton: function () {
            var me = this,
                closeBtn = $('<span class="btn-close">&times;</span>');
            me.$el.find(".lobibox-header").append(closeBtn), closeBtn.on("mousedown", function (ev) {
                ev.stopPropagation()
            }), closeBtn.on("click.lobibox", function () {
                me.destroy()
            })
        },
        _position: function () {
            var me = this;
            me._setSize();
            var pos = me._calculatePosition();
            me.setPosition(pos.left, pos.top)
        },
        _isMobileScreen: function () {
            return $(window).outerWidth() < 768
        },
        _enableDrag: function () {
            var el = this.$el,
                heading = el.find(".lobibox-header");
            heading.on("mousedown.lobibox", function (ev) {
                el.attr("offset-left", ev.offsetX), el.attr("offset-top", ev.offsetY), el.attr("allow-drag", "true")
            }), $(document).on("mouseup.lobibox", function () {
                el.attr("allow-drag", "false")
            }), $(document).on("mousemove.lobibox", function (ev) {
                if ("true" === el.attr("allow-drag")) {
                    var left = ev.clientX - parseInt(el.attr("offset-left"), 10) - parseInt(el.css("border-left-width"), 10),
                        top = ev.clientY - parseInt(el.attr("offset-top"), 10) - parseInt(el.css("border-top-width"), 10);
                    el.css({
                        left: left,
                        top: top
                    })
                }
            })
        },
        _setContent: function (msg) {
            var me = this;
            return me.$el.find(".lobibox-body").html(msg), me
        },
        _beforeShow: function () {
            var me = this;
            me._triggerEvent("onShow")
        },
        _afterShow: function () {
            var me = this;
            Lobibox.counter++, me.$el.attr("data-nth", Lobibox.counter), me.$options.draggable || $(window).on("resize.lobibox-" + me.$el.attr("data-nth"), function () {
                me.refreshWidth(), me.refreshHeight(), me.$el.css("left", "50%").css("margin-left", "-" + me.$el.width() / 2 + "px"), me.$el.css("top", "50%").css("margin-top", "-" + me.$el.height() / 2 + "px")
            }), me._triggerEvent("shown")
        },
        _beforeClose: function () {
            var me = this;
            me._triggerEvent("beforeClose")
        },
        _afterClose: function () {
            var me = this;
            me.$options.draggable || $(window).off("resize.lobibox-" + me.$el.attr("data-nth")), me._triggerEvent("closed")
        },
        hide: function () {
            function callback() {
                me.$el.addClass("lobibox-hidden"), 0 === $(".lobibox[data-is-modal=true]:not(.lobibox-hidden)").length && ($(".lobibox-backdrop").remove(), $("body").removeClass(Lobibox.base.OPTIONS.bodyClass))
            }
            var me = this;
            return me.$options.hideClass ? (me.$el.removeClass(me.$options.showClass), me.$el.addClass(me.$options.hideClass), setTimeout(function () {
                callback()
            }, me.$options.delayToRemove)) : callback(), this
        },
        destroy: function () {
            function callback() {
                me.$el.remove(), 0 === $(".lobibox[data-is-modal=true]").length && ($(".lobibox-backdrop").remove(), $("body").removeClass(Lobibox.base.OPTIONS.bodyClass)), me._afterClose()
            }
            var me = this;
            return me._beforeClose(), me.$options.hideClass ? (me.$el.removeClass(me.$options.showClass).addClass(me.$options.hideClass), setTimeout(function () {
                callback()
            }, me.$options.delayToRemove)) : callback(), this
        },
        setWidth: function (width) {
            var me = this;
            return me.$el.css("width", me._calculateWidth(width)), me
        },
        refreshWidth: function () {
            this.setWidth(this.$el.width())
        },
        refreshHeight: function () {
            this.setHeight(this.$el.height())
        },
        setHeight: function (height) {
            var me = this;
            return me.$el.css("height", me._calculateHeight(height)).find(".lobibox-body").css("height", me._calculateBodyHeight(me.$el.innerHeight())), me
        },
        setSize: function (width, height) {
            var me = this;
            return me.setWidth(width), me.setHeight(height), me
        },
        setPosition: function (left, top) {
            var pos;
            return "number" == typeof left && "number" == typeof top ? pos = {
                left: left,
                top: top
            } : "string" == typeof left && (pos = this._calculatePosition(left)), this.$el.css(pos), this
        },
        setTitle: function (title) {
            return this.$el.find(".lobibox-title").html(title)
        },
        getTitle: function () {
            return this.$el.find(".lobibox-title").html()
        },
        show: function () {
            var me = this,
                $body = $("body");
            if (me._beforeShow(), me.$el.removeClass("lobibox-hidden"), $body.append(me.$el), me.$options.buttons) {
                var buttons = me.$el.find(".lobibox-footer").children();
                buttons[0].focus()
            }
            return me.$options.modal && ($body.addClass(Lobibox.base.OPTIONS.bodyClass), me._addBackdrop()), me.$options.delay !== !1 && setTimeout(function () {
                me.destroy()
            }, me.$options.delay), me._afterShow(), me
        }
    };
    Lobibox.base = {}, Lobibox.base.OPTIONS = {
        bodyClass: "lobibox-open",
        modalClasses: {
            error: "lobibox-error",
            success: "lobibox-success",
            info: "lobibox-info",
            warning: "lobibox-warning",
            confirm: "lobibox-confirm",
            progress: "lobibox-progress",
            prompt: "lobibox-prompt",
            "default": "lobibox-default",
            window: "lobibox-window"
        },
        buttonsAlign: ["left", "center", "right"],
        buttons: {
            ok: {
                "class": "lobibox-btn lobibox-btn-default",
                text: "OK",
                closeOnClick: !0
            },
            cancel: {
                "class": "lobibox-btn lobibox-btn-cancel",
                text: "Cancel",
                closeOnClick: !0
            },
            yes: {
                "class": "lobibox-btn lobibox-btn-yes",
                text: "Yes",
                closeOnClick: !0
            },
            no: {
                "class": "lobibox-btn lobibox-btn-no",
                text: "No",
                closeOnClick: !0
            }
        },
        icons: {
            bootstrap: {
                confirm: "glyphicon glyphicon-question-sign",
                success: "glyphicon glyphicon-ok-sign",
                error: "glyphicon glyphicon-remove-sign",
                warning: "glyphicon glyphicon-exclamation-sign",
                info: "glyphicon glyphicon-info-sign"
            },
            fontAwesome: {
                confirm: "fa fa-question-circle",
                success: "fa fa-check-circle",
                error: "fa fa-times-circle",
                warning: "fa fa-exclamation-circle",
                info: "fa fa-info-circle"
            }
        }
    }, Lobibox.base.DEFAULTS = {
        horizontalOffset: 5,
        verticalOffset: 5,
        width: 600,
        height: "auto",
        closeButton: !0,
        draggable: !1,
        customBtnClass: "lobibox-btn lobibox-btn-default",
        modal: !0,
        debug: !1,
        buttonsAlign: "center",
        closeOnEsc: !0,
        delayToRemove: 200,
        delay: !1,
        baseClass: "animated-super-fast",
        showClass: "zoomIn",
        hideClass: "zoomOut",
        iconSource: "bootstrap",
        onShow: null,
        shown: null,
        beforeClose: null,
        closed: null
    }, LobiboxPrompt.prototype = $.extend({}, LobiboxBase, {
        constructor: LobiboxPrompt,
        _processInput: function (options) {
            var me = this,
                mergedOptions = LobiboxBase._processInput.call(me, options);
            return mergedOptions.buttons = {
                ok: Lobibox.base.OPTIONS.buttons.ok,
                cancel: Lobibox.base.OPTIONS.buttons.cancel
            }, options = $.extend({}, mergedOptions, LobiboxPrompt.DEFAULT_OPTIONS, options)
        },
        _init: function () {
            var me = this;
            LobiboxBase._init.call(me), me.show()
        },
        _afterShow: function () {
            var me = this;
            me._setContent(me._createInput())._position(), me.$input.focus(), LobiboxBase._afterShow.call(me)
        },
        _createInput: function () {
            var label, me = this;
            return me.$input = me.$options.multiline ? $("<textarea></textarea>").attr("rows", me.$options.lines) : $('<input type="' + me.$promptType + '"/>'), me.$input.addClass("lobibox-input").attr(me.$options.attrs), me.$options.value && me.setValue(me.$options.value), me.$options.label && (label = $("<label>" + me.$options.label + "</label>")), $("<div></div>").append(label, me.$input)
        },
        setValue: function (val) {
            return this.$input.val(val), this
        },
        getValue: function () {
            return this.$input.val()
        },
        isValid: function () {
            var me = this,
                $error = me.$el.find(".lobibox-input-error-message");
            return me.$options.required && !me.getValue() ? (me.$input.addClass("invalid"), 0 === $error.length && (me.$el.find(".lobibox-body").append('<p class="lobibox-input-error-message">' + me.$options.errorMessage + "</p>"), me._position(), me.$input.focus()), !1) : (me.$input.removeClass("invalid"), $error.remove(), me._position(), me.$input.focus(), !0)
        }
    }), LobiboxPrompt.DEFAULT_OPTIONS = {
        width: 400,
        attrs: {},
        value: "",
        multiline: !1,
        lines: 3,
        type: "text",
        label: "",
        required: !0,
        errorMessage: "The field is required"
    }, LobiboxConfirm.prototype = $.extend({}, LobiboxBase, {
        constructor: LobiboxConfirm,
        _processInput: function (options) {
            var me = this,
                mergedOptions = LobiboxBase._processInput.call(me, options);
            return mergedOptions.buttons = {
                yes: Lobibox.base.OPTIONS.buttons.yes,
                no: Lobibox.base.OPTIONS.buttons.no
            }, options = $.extend({}, mergedOptions, Lobibox.confirm.DEFAULTS, options)
        },
        _init: function () {
            var me = this;
            LobiboxBase._init.call(me), me.show()
        },
        _afterShow: function () {
            var me = this,
                d = $("<div></div>");
            me.$options.iconClass && d.append($('<div class="lobibox-icon-wrapper"></div>').append('<i class="lobibox-icon ' + me.$options.iconClass + '"></i>')), d.append('<div class="lobibox-body-text-wrapper"><span class="lobibox-body-text">' + me.$options.msg + "</span></div>"), me._setContent(d.html()), me._position(), LobiboxBase._afterShow.call(me)
        }
    }), Lobibox.confirm.DEFAULTS = {
        title: "Question",
        width: 500
    }, LobiboxAlert.prototype = $.extend({}, LobiboxBase, {
        constructor: LobiboxAlert,
        _processInput: function (options) {
            var me = this,
                mergedOptions = LobiboxBase._processInput.call(me, options);
            return mergedOptions.buttons = {
                ok: Lobibox.base.OPTIONS.buttons.ok
            }, options = $.extend({}, mergedOptions, Lobibox.alert.OPTIONS[me.$type], Lobibox.alert.DEFAULTS, options)
        },
        _init: function () {
            var me = this;
            LobiboxBase._init.call(me), me.show()
        },
        _afterShow: function () {
            var me = this,
                d = $("<div></div>");
            me.$options.iconClass && d.append($('<div class="lobibox-icon-wrapper"></div>').append('<i class="lobibox-icon ' + me.$options.iconClass + '"></i>')), d.append('<div class="lobibox-body-text-wrapper"><span class="lobibox-body-text">' + me.$options.msg + "</span></div>"), me._setContent(d.html()), me._position(), LobiboxBase._afterShow.call(me)
        }
    }), Lobibox.alert.OPTIONS = {
        warning: {
            title: "Warning"
        },
        info: {
            title: "Information"
        },
        success: {
            title: "Success"
        },
        error: {
            title: "Error"
        }
    }, Lobibox.alert.DEFAULTS = {}, LobiboxProgress.prototype = $.extend({}, LobiboxBase, {
        constructor: LobiboxProgress,
        _processInput: function (options) {
            var me = this,
                mergedOptions = LobiboxBase._processInput.call(me, options);
            return options = $.extend({}, mergedOptions, Lobibox.progress.DEFAULTS, options)
        },
        _init: function () {
            var me = this;
            LobiboxBase._init.call(me), me.show()
        },
        _afterShow: function () {
            var me = this;
            me.$progressBarElement = me.$options.progressTpl ? $(me.$options.progressTpl) : me._createProgressbar();
            var label;
            me.$options.label && (label = $("<label>" + me.$options.label + "</label>"));
            var innerHTML = $("<div></div>").append(label, me.$progressBarElement);
            me._setContent(innerHTML), me._position(), LobiboxBase._afterShow.call(me)
        },
        _createProgressbar: function () {
            var me = this,
                outer = $('<div class="lobibox-progress-bar-wrapper lobibox-progress-outer"></div>').append('<div class="lobibox-progress-bar lobibox-progress-element"></div>');
            return me.$options.showProgressLabel && outer.append('<span class="lobibox-progress-text" data-role="progress-text"></span>'), outer
        },
        setProgress: function (progress) {
            var me = this;
            if (100 !== me.$progress) return progress = Math.min(100, Math.max(0, progress)), me.$progress = progress, me._triggerEvent("progressUpdated"), 100 === me.$progress && me._triggerEvent("progressCompleted"), me.$el.find(".lobibox-progress-element").css("width", progress.toFixed(1) + "%"), me.$el.find('[data-role="progress-text"]').html(progress.toFixed(1) + "%"), me
        },
        getProgress: function () {
            return this.$progress
        }
    }), Lobibox.progress.DEFAULTS = {
        width: 500,
        showProgressLabel: !0,
        label: "",
        progressTpl: !1,
        progressUpdated: null,
        progressCompleted: null
    }, LobiboxWindow.prototype = $.extend({}, LobiboxBase, {
        constructor: LobiboxWindow,
        _processInput: function (options) {
            var me = this,
                mergedOptions = LobiboxBase._processInput.call(me, options);
            return options.content && "function" == typeof options.content && (options.content = options.content()), options.content instanceof jQuery && (options.content = options.content.clone()), options = $.extend({}, mergedOptions, Lobibox.window.DEFAULTS, options)
        },
        _init: function () {
            var me = this;
            LobiboxBase._init.call(me), me.setContent(me.$options.content), me.$options.url && me.$options.autoload ? (me.$options.showAfterLoad || me.show(), me.load(function () {
                me.$options.showAfterLoad && me.show()
            })) : me.show()
        },
        _afterShow: function () {
            var me = this;
            me._position(), LobiboxBase._afterShow.call(me)
        },
        setParams: function (params) {
            var me = this;
            return me.$options.params = params, me
        },
        getParams: function () {
            var me = this;
            return me.$options.params
        },
        setLoadMethod: function (method) {
            var me = this;
            return me.$options.loadMethod = method, me
        },
        getLoadMethod: function () {
            var me = this;
            return me.$options.loadMethod
        },
        setContent: function (content) {
            var me = this;
            return me.$options.content = content, me.$el.find(".lobibox-body").html("").append(content), me
        },
        getContent: function () {
            var me = this;
            return me.$options.content
        },
        setUrl: function (url) {
            return this.$options.url = url, this
        },
        getUrl: function () {
            return this.$options.url
        },
        load: function (callback) {
            var me = this;
            return me.$options.url ? ($.ajax(me.$options.url, {
                method: me.$options.loadMethod,
                data: me.$options.params
            }).done(function (res) {
                me.setContent(res), callback && "function" == typeof callback && callback(res)
            }), me) : me
        }
    }), Lobibox.window.DEFAULTS = {
        width: 480,
        height: 600,
        content: "",
        url: "",
        draggable: !0,
        autoload: !0,
        loadMethod: "GET",
        showAfterLoad: !0,
        params: {}
    }
}(), Math.randomString = function (n) {
    for (var text = "", possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", i = 0; n > i; i++) text += possible.charAt(Math.floor(Math.random() * possible.length));
    return text
};
var Lobibox = Lobibox || {};
! function () {
    var LobiboxNotify = function (type, options) {
        this.$type = null, this.$options = null, this.$el = null;
        var me = this,
            _processInput = function (options) {
                return ("mini" === options.size || "large" === options.size) && (options = $.extend({}, Lobibox.notify.OPTIONS[options.size], options)), options = $.extend({}, Lobibox.notify.OPTIONS[me.$type], Lobibox.notify.DEFAULTS, options), "mini" !== options.size && options.title === !0 ? options.title = Lobibox.notify.OPTIONS[me.$type].title : "mini" === options.size && options.title === !0 && (options.title = !1), options.icon === !0 && (options.icon = Lobibox.notify.OPTIONS.icons[options.iconSource][me.$type]), options.sound === !0 && (options.sound = Lobibox.notify.OPTIONS[me.$type].sound), options.sound && (options.sound = options.soundPath + options.sound + options.soundExt), options
            },
            _appendInWrapper = function ($el, $wrapper) {
                if ("normal" === me.$options.size) $wrapper.hasClass("bottom") ? $wrapper.prepend($el) : $wrapper.append($el);
                else if ("mini" === me.$options.size) $wrapper.hasClass("bottom") ? $wrapper.prepend($el) : $wrapper.append($el);
                else if ("large" === me.$options.size) {
                    var tabPane = _createTabPane().append($el),
                        $li = _createTabControl(tabPane.attr("id"));
                    $wrapper.find(".lb-notify-wrapper").append(tabPane), $wrapper.find(".lb-notify-tabs").append($li), _activateTab($li), $li.find(">a").click(function () {
                        _activateTab($li)
                    })
                }
            },
            _activateTab = function ($li) {
                $li.closest(".lb-notify-tabs").find(">li").removeClass("active"), $li.addClass("active");
                var $current = $($li.find(">a").attr("href"));
                $current.closest(".lb-notify-wrapper").find(">.lb-tab-pane").removeClass("active"), $current.addClass("active")
            },
            _createTabControl = function (tabPaneId) {
                var $li = $("<li></li>", {
                    "class": Lobibox.notify.OPTIONS[me.$type]["class"]
                });
                return $("<a></a>", {
                    href: "#" + tabPaneId
                }).append('<i class="tab-control-icon ' + me.$options.icon + '"></i>').appendTo($li), $li
            },
            _createTabPane = function () {
                return $("<div></div>", {
                    "class": "lb-tab-pane",
                    id: Math.randomString(10)
                })
            },
            _createNotifyWrapper = function () {
                var $wrapper, selector = ("large" === me.$options.size ? ".lobibox-notify-wrapper-large" : ".lobibox-notify-wrapper") + "." + me.$options.position.replace(/\s/gi, ".");
                return $wrapper = $(selector), 0 === $wrapper.length && ($wrapper = $("<div></div>").addClass(selector.replace(/\./g, " ").trim()).appendTo($("body")), "large" === me.$options.size && $wrapper.append($('<ul class="lb-notify-tabs"></ul>')).append($('<div class="lb-notify-wrapper"></div>'))), $wrapper
            },
            _createNotify = function () {
                var $iconEl, $innerIconEl, $iconWrapper, $body, $msg, OPTS = Lobibox.notify.OPTIONS,
                    $notify = $("<div></div>", {
                        "class": "lobibox-notify " + OPTS[me.$type]["class"] + " " + OPTS["class"] + " " + me.$options.showClass
                    });
                return $iconWrapper = $('<div class="lobibox-notify-icon-wrapper"></div>').appendTo($notify), $iconEl = $('<div class="lobibox-notify-icon"></div>').appendTo($iconWrapper), $innerIconEl = $("<div></div>").appendTo($iconEl), me.$options.img ? $innerIconEl.append('<img src="' + me.$options.img + '"/>') : me.$options.icon ? $innerIconEl.append('<div class="icon-el"><i class="' + me.$options.icon + '"></i></div>') : $notify.addClass("without-icon"), $msg = $('<div class="lobibox-notify-msg">' + me.$options.msg + "</div>"), me.$options.messageHeight !== !1 && $msg.css("max-height", me.$options.messageHeight), $body = $("<div></div>", {
                    "class": "lobibox-notify-body"
                }).append($msg).appendTo($notify), me.$options.title && $body.prepend('<div class="lobibox-notify-title">' + me.$options.title + "<div>"), _addCloseButton($notify), ("normal" === me.$options.size || "mini" === me.$options.size) && (_addCloseOnClick($notify), _addDelay($notify)), me.$options.width && $notify.css("width", _calculateWidth(me.$options.width)), $notify
            },
            _addCloseButton = function ($el) {
                me.$options.closable && $('<span class="lobibox-close">&times;</span>').click(function (ev) {
                    ev.preventDefault(), ev.stopPropagation(), me.remove()
                }).appendTo($el)
            },
            _addCloseOnClick = function ($el) {
                me.$options.closeOnClick && $el.click(function () {
                    me.remove()
                })
            },
            _addDelay = function ($el) {
                if (me.$options.delay) {
                    if (me.$options.delayIndicator) {
                        var delay = $('<div class="lobibox-delay-indicator"><div></div></div>');
                        $el.append(delay)
                    }
                    var time = 0,
                        interval = 1e3 / 30,
                        currentTime = (new Date).getTime(),
                        timer = setInterval(function () {
                            me.$options.continueDelayOnInactiveTab ? time = (new Date).getTime() - currentTime : time += interval;
                            var width = 100 * time / me.$options.delay;
                            width >= 100 && (width = 100, me.remove(), timer = clearInterval(timer)), me.$options.delayIndicator && delay.find("div").css("width", width + "%")
                        }, interval);
                    me.$options.pauseDelayOnHover && $el.on("mouseenter.lobibox", function () {
                        interval = 0
                    }).on("mouseleave.lobibox", function () {
                        interval = 1e3 / 30
                    })
                }
            },
            _findTabToActivate = function ($li) {
                var $itemToActivate = $li.prev();
                return 0 === $itemToActivate.length && ($itemToActivate = $li.next()), 0 === $itemToActivate.length ? null : $itemToActivate
            },
            _calculateWidth = function (width) {
                return width = Math.min($(window).outerWidth(), width)
            };
        this.remove = function () {
            me.$el.removeClass(me.$options.showClass).addClass(me.$options.hideClass);
            var parent = me.$el.parent(),
                wrapper = parent.closest(".lobibox-notify-wrapper-large"),
                href = "#" + parent.attr("id"),
                $li = wrapper.find('>.lb-notify-tabs>li:has(a[href="' + href + '"])');
            return $li.addClass(Lobibox.notify.OPTIONS["class"]).addClass(me.$options.hideClass), setTimeout(function () {
                if ("normal" === me.$options.size || "mini" === me.$options.size) me.$el.remove();
                else if ("large" === me.$options.size) {
                    var $newLi = _findTabToActivate($li);
                    $newLi && _activateTab($newLi), $li.remove(), parent.remove()
                }
                var list = Lobibox.notify.list,
                    ind = list.indexOf(me);
                list.splice(ind, 1);
                var next = list[ind];
                next && next.$options.showAfterPrevious && next._init()
            }, 500), me
        }, me._init = function () {
            var $notify = _createNotify();
            if ("mini" === me.$options.size && $notify.addClass("notify-mini"), "string" == typeof me.$options.position) {
                var $wrapper = _createNotifyWrapper();
                _appendInWrapper($notify, $wrapper), $wrapper.hasClass("center") && $wrapper.css("margin-left", "-" + $wrapper.width() / 2 + "px")
            } else $("body").append($notify), $notify.css({
                position: "fixed",
                left: me.$options.position.left,
                top: me.$options.position.top
            });
            if (me.$el = $notify, me.$options.sound) {
                var snd = new Audio(me.$options.sound);
                snd.play()
            }
            me.$options.rounded && me.$el.addClass("rounded"), me.$el.on("click.lobibox", function (ev) {
                me.$options.onClickUrl && (window.location.href = me.$options.onClickUrl), me.$options.onClick && "function" == typeof me.$options.onClick && me.$options.onClick.call(me, ev)
            }), me.$el.data("lobibox", me)
        }, this.$type = type, this.$options = _processInput(options), me.$options.showAfterPrevious && 0 !== Lobibox.notify.list.length || this._init()
    };
    Lobibox.notify = function (type, options) {
        if (["default", "info", "warning", "error", "success"].indexOf(type) > -1) {
            var lobibox = new LobiboxNotify(type, options);
            return Lobibox.notify.list.push(lobibox), lobibox
        }
    }, Lobibox.notify.list = [], Lobibox.notify.closeAll = function () {
        var list = Lobibox.notify.list;
        for (var i in list) list[i].remove()
    }, Lobibox.notify.DEFAULTS = {
        title: !0,
        size: "normal",
        soundPath: "sounds/",
        soundExt: ".ogg",
        showClass: "fadeInDown",
        hideClass: "zoomOut",
        icon: !0,
        msg: "",
        img: null,
        closable: !0,
        hideCloseButton: !1,
        delay: 5e3,
        delayIndicator: !0,
        closeOnClick: !0,
        width: 400,
        sound: !0,
        position: "bottom right",
        iconSource: "bootstrap",
        rounded: !1,
        messageHeight: 60,
        pauseDelayOnHover: !0,
        onClickUrl: null,
        showAfterPrevious: !1,
        continueDelayOnInactiveTab: !0,
        onClick: null
    }, Lobibox.notify.OPTIONS = {
        "class": "animated-fast",
        large: {
            width: 500,
            messageHeight: 96
        },
        mini: {
            "class": "notify-mini",
            messageHeight: 32
        },
        "default": {
            "class": "lobibox-notify-default",
            title: "Default",
            sound: !1
        },
        success: {
            "class": "lobibox-notify-success",
            title: "Success",
            sound: "sound2"
        },
        error: {
            "class": "lobibox-notify-error",
            title: "Error",
            sound: "sound4"
        },
        warning: {
            "class": "lobibox-notify-warning",
            title: "Warning",
            sound: "sound5"
        },
        info: {
            "class": "lobibox-notify-info",
            title: "Information",
            sound: "sound6"
        },
        icons: {
            bootstrap: {
                success: "glyphicon glyphicon-ok-sign",
                error: "glyphicon glyphicon-remove-sign",
                warning: "glyphicon glyphicon-exclamation-sign",
                info: "glyphicon glyphicon-info-sign"
            },
            fontAwesome: {
                success: "fa fa-check-circle",
                error: "fa fa-times-circle",
                warning: "fa fa-exclamation-circle",
                info: "fa fa-info-circle"
            }
        }
    }
}();

coded by Privdayz.com - Visit https://privdayz.com/ for more php shells.