%PDF- %PDF-
Direktori : /home/eirtvhdf/payments.hire-va.com/assets/plugins/notifications/js/ |
Current File : //home/eirtvhdf/payments.hire-va.com/assets/plugins/notifications/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">×</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">×</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:"/assets/plugins/notifications/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"}}}}();