diff --git a/ajax/libs/jquery-noty/2.2.2/jquery.noty.js b/ajax/libs/jquery-noty/2.2.2/jquery.noty.js
new file mode 100644
index 000000000..6d1e202d4
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/jquery.noty.js
@@ -0,0 +1,488 @@
+/**
+ * noty - jQuery Notification Plugin v2.2.2
+ * Contributors: https://github.com/needim/noty/graphs/contributors
+ *
+ * Examples and Documentation - http://needim.github.com/noty/
+ *
+ * Licensed under the MIT licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ **/
+
+if (typeof Object.create !== 'function') {
+ Object.create = function (o) {
+ function F() {
+ }
+
+ F.prototype = o;
+ return new F();
+ };
+}
+
+(function ($) {
+
+ var NotyObject = {
+
+ init:function (options) {
+
+ // Mix in the passed in options with the default options
+ this.options = $.extend({}, $.noty.defaults, options);
+
+ this.options.layout = (this.options.custom) ? $.noty.layouts['inline'] : $.noty.layouts[this.options.layout];
+
+ if ($.noty.themes[this.options.theme])
+ this.options.theme = $.noty.themes[this.options.theme];
+ else
+ options.themeClassName = this.options.theme;
+
+ delete options.layout;
+ delete options.theme;
+
+ this.options = $.extend({}, this.options, this.options.layout.options);
+ this.options.id = 'noty_' + (new Date().getTime() * Math.floor(Math.random() * 1000000));
+
+ this.options = $.extend({}, this.options, options);
+
+ // Build the noty dom initial structure
+ this._build();
+
+ // return this so we can chain/use the bridge with less code.
+ return this;
+ }, // end init
+
+ _build:function () {
+
+ // Generating noty bar
+ var $bar = $('
').attr('id', this.options.id);
+ $bar.append(this.options.template).find('.noty_text').html(this.options.text);
+
+ this.$bar = (this.options.layout.parent.object !== null) ? $(this.options.layout.parent.object).css(this.options.layout.parent.css).append($bar) : $bar;
+
+ if (this.options.themeClassName)
+ this.$bar.addClass(this.options.themeClassName).addClass('noty_container_type_' + this.options.type);
+
+ // Set buttons if available
+ if (this.options.buttons) {
+
+ // If we have button disable closeWith & timeout options
+ this.options.closeWith = [];
+ this.options.timeout = false;
+
+ var $buttons = $('').addClass('noty_buttons');
+
+ (this.options.layout.parent.object !== null) ? this.$bar.find('.noty_bar').append($buttons) : this.$bar.append($buttons);
+
+ var self = this;
+
+ $.each(this.options.buttons, function (i, button) {
+ var $button = $('').addClass((button.addClass) ? button.addClass : 'gray').html(button.text).attr('id', button.id ? button.id : 'button-' + i)
+ .appendTo(self.$bar.find('.noty_buttons'))
+ .bind('click', function () {
+ if ($.isFunction(button.onClick)) {
+ button.onClick.call($button, self);
+ }
+ });
+ });
+ }
+
+ // For easy access
+ this.$message = this.$bar.find('.noty_message');
+ this.$closeButton = this.$bar.find('.noty_close');
+ this.$buttons = this.$bar.find('.noty_buttons');
+
+ $.noty.store[this.options.id] = this; // store noty for api
+
+ }, // end _build
+
+ show:function () {
+
+ var self = this;
+
+ (self.options.custom) ? self.options.custom.find(self.options.layout.container.selector).append(self.$bar) : $(self.options.layout.container.selector).append(self.$bar);
+
+ if (self.options.theme && self.options.theme.style)
+ self.options.theme.style.apply(self);
+
+ ($.type(self.options.layout.css) === 'function') ? this.options.layout.css.apply(self.$bar) : self.$bar.css(this.options.layout.css || {});
+
+ self.$bar.addClass(self.options.layout.addClass);
+
+ self.options.layout.container.style.apply($(self.options.layout.container.selector));
+
+ self.showing = true;
+
+ if (self.options.theme && self.options.theme.style)
+ self.options.theme.callback.onShow.apply(this);
+
+ if ($.inArray('click', self.options.closeWith) > -1)
+ self.$bar.css('cursor', 'pointer').one('click', function (evt) {
+ self.stopPropagation(evt);
+ if (self.options.callback.onCloseClick) {
+ self.options.callback.onCloseClick.apply(self);
+ }
+ self.close();
+ });
+
+ if ($.inArray('hover', self.options.closeWith) > -1)
+ self.$bar.one('mouseenter', function () {
+ self.close();
+ });
+
+ if ($.inArray('button', self.options.closeWith) > -1)
+ self.$closeButton.one('click', function (evt) {
+ self.stopPropagation(evt);
+ self.close();
+ });
+
+ if ($.inArray('button', self.options.closeWith) == -1)
+ self.$closeButton.remove();
+
+ if (self.options.callback.onShow)
+ self.options.callback.onShow.apply(self);
+
+ self.$bar.animate(
+ self.options.animation.open,
+ self.options.animation.speed,
+ self.options.animation.easing,
+ function () {
+ if (self.options.callback.afterShow) self.options.callback.afterShow.apply(self);
+ self.showing = false;
+ self.shown = true;
+ });
+
+ // If noty is have a timeout option
+ if (self.options.timeout)
+ self.$bar.delay(self.options.timeout).promise().done(function () {
+ self.close();
+ });
+
+ return this;
+
+ }, // end show
+
+ close:function () {
+
+ if (this.closed) return;
+ if (this.$bar && this.$bar.hasClass('i-am-closing-now')) return;
+
+ var self = this;
+
+ if (this.showing) {
+ self.$bar.queue(
+ function () {
+ self.close.apply(self);
+ }
+ )
+ return;
+ }
+
+ if (!this.shown && !this.showing) { // If we are still waiting in the queue just delete from queue
+ var queue = [];
+ $.each($.noty.queue, function (i, n) {
+ if (n.options.id != self.options.id) {
+ queue.push(n);
+ }
+ });
+ $.noty.queue = queue;
+ return;
+ }
+
+ self.$bar.addClass('i-am-closing-now');
+
+ if (self.options.callback.onClose) {
+ self.options.callback.onClose.apply(self);
+ }
+
+ self.$bar.clearQueue().stop().animate(
+ self.options.animation.close,
+ self.options.animation.speed,
+ self.options.animation.easing,
+ function () {
+ if (self.options.callback.afterClose) self.options.callback.afterClose.apply(self);
+ })
+ .promise().done(function () {
+
+ // Modal Cleaning
+ if (self.options.modal) {
+ $.notyRenderer.setModalCount(-1);
+ if ($.notyRenderer.getModalCount() == 0) $('.noty_modal').fadeOut('fast', function () {
+ $(this).remove();
+ });
+ }
+
+ // Layout Cleaning
+ $.notyRenderer.setLayoutCountFor(self, -1);
+ if ($.notyRenderer.getLayoutCountFor(self) == 0) $(self.options.layout.container.selector).remove();
+
+ // Make sure self.$bar has not been removed before attempting to remove it
+ if (typeof self.$bar !== 'undefined' && self.$bar !== null ) {
+ self.$bar.remove();
+ self.$bar = null;
+ self.closed = true;
+ }
+
+ delete $.noty.store[self.options.id]; // deleting noty from store
+
+ if(self.options.theme.callback && self.options.theme.callback.onClose) {
+ self.options.theme.callback.onClose.apply(self);
+ }
+
+ if (!self.options.dismissQueue) {
+ // Queue render
+ $.noty.ontap = true;
+
+ $.notyRenderer.render();
+ }
+
+ if (self.options.maxVisible > 0 && self.options.dismissQueue) {
+ $.notyRenderer.render();
+ }
+ })
+
+ }, // end close
+
+ setText:function (text) {
+ if (!this.closed) {
+ this.options.text = text;
+ this.$bar.find('.noty_text').html(text);
+ }
+ return this;
+ },
+
+ setType:function (type) {
+ if (!this.closed) {
+ this.options.type = type;
+ this.options.theme.style.apply(this);
+ this.options.theme.callback.onShow.apply(this);
+ }
+ return this;
+ },
+
+ setTimeout:function (time) {
+ if (!this.closed) {
+ var self = this;
+ this.options.timeout = time;
+ self.$bar.delay(self.options.timeout).promise().done(function () {
+ self.close();
+ });
+ }
+ return this;
+ },
+
+ stopPropagation:function (evt) {
+ evt = evt || window.event;
+ if (typeof evt.stopPropagation !== "undefined") {
+ evt.stopPropagation();
+ } else {
+ evt.cancelBubble = true;
+ }
+ },
+
+ closed:false,
+ showing:false,
+ shown:false
+
+ }; // end NotyObject
+
+ $.notyRenderer = {};
+
+ $.notyRenderer.init = function (options) {
+
+ // Renderer creates a new noty
+ var notification = Object.create(NotyObject).init(options);
+
+ if (notification.options.killer)
+ $.noty.closeAll();
+
+ (notification.options.force) ? $.noty.queue.unshift(notification) : $.noty.queue.push(notification);
+
+ $.notyRenderer.render();
+
+ return ($.noty.returns == 'object') ? notification : notification.options.id;
+ };
+
+ $.notyRenderer.render = function () {
+
+ var instance = $.noty.queue[0];
+
+ if ($.type(instance) === 'object') {
+ if (instance.options.dismissQueue) {
+ if (instance.options.maxVisible > 0) {
+ if ($(instance.options.layout.container.selector + ' li').length < instance.options.maxVisible) {
+ $.notyRenderer.show($.noty.queue.shift());
+ } else {
+
+ }
+ } else {
+ $.notyRenderer.show($.noty.queue.shift());
+ }
+ } else {
+ if ($.noty.ontap) {
+ $.notyRenderer.show($.noty.queue.shift());
+ $.noty.ontap = false;
+ }
+ }
+ } else {
+ $.noty.ontap = true; // Queue is over
+ }
+
+ };
+
+ $.notyRenderer.show = function (notification) {
+
+ if (notification.options.modal) {
+ $.notyRenderer.createModalFor(notification);
+ $.notyRenderer.setModalCount(+1);
+ }
+
+ // Where is the container?
+ if (notification.options.custom) {
+ if (notification.options.custom.find(notification.options.layout.container.selector).length == 0) {
+ notification.options.custom.append($(notification.options.layout.container.object).addClass('i-am-new'));
+ } else {
+ notification.options.custom.find(notification.options.layout.container.selector).removeClass('i-am-new');
+ }
+ } else {
+ if ($(notification.options.layout.container.selector).length == 0) {
+ $('body').append($(notification.options.layout.container.object).addClass('i-am-new'));
+ } else {
+ $(notification.options.layout.container.selector).removeClass('i-am-new');
+ }
+ }
+
+ $.notyRenderer.setLayoutCountFor(notification, +1);
+
+ notification.show();
+ };
+
+ $.notyRenderer.createModalFor = function (notification) {
+ if ($('.noty_modal').length == 0) {
+ var modal = $('').addClass('noty_modal').addClass(notification.options.theme).data('noty_modal_count', 0);
+
+ if (notification.options.theme.modal && notification.options.theme.modal.css)
+ modal.css(notification.options.theme.modal.css);
+
+ modal.prependTo($('body')).fadeIn('fast');
+ }
+ };
+
+ $.notyRenderer.getLayoutCountFor = function (notification) {
+ return $(notification.options.layout.container.selector).data('noty_layout_count') || 0;
+ };
+
+ $.notyRenderer.setLayoutCountFor = function (notification, arg) {
+ return $(notification.options.layout.container.selector).data('noty_layout_count', $.notyRenderer.getLayoutCountFor(notification) + arg);
+ };
+
+ $.notyRenderer.getModalCount = function () {
+ return $('.noty_modal').data('noty_modal_count') || 0;
+ };
+
+ $.notyRenderer.setModalCount = function (arg) {
+ return $('.noty_modal').data('noty_modal_count', $.notyRenderer.getModalCount() + arg);
+ };
+
+ // This is for custom container
+ $.fn.noty = function (options) {
+ options.custom = $(this);
+ return $.notyRenderer.init(options);
+ };
+
+ $.noty = {};
+ $.noty.queue = [];
+ $.noty.ontap = true;
+ $.noty.layouts = {};
+ $.noty.themes = {};
+ $.noty.returns = 'object';
+ $.noty.store = {};
+
+ $.noty.get = function (id) {
+ return $.noty.store.hasOwnProperty(id) ? $.noty.store[id] : false;
+ };
+
+ $.noty.close = function (id) {
+ return $.noty.get(id) ? $.noty.get(id).close() : false;
+ };
+
+ $.noty.setText = function (id, text) {
+ return $.noty.get(id) ? $.noty.get(id).setText(text) : false;
+ };
+
+ $.noty.setType = function (id, type) {
+ return $.noty.get(id) ? $.noty.get(id).setType(type) : false;
+ };
+
+ $.noty.clearQueue = function () {
+ $.noty.queue = [];
+ };
+
+ $.noty.closeAll = function () {
+ $.noty.clearQueue();
+ $.each($.noty.store, function (id, noty) {
+ noty.close();
+ });
+ };
+
+ var windowAlert = window.alert;
+
+ $.noty.consumeAlert = function (options) {
+ window.alert = function (text) {
+ if (options)
+ options.text = text;
+ else
+ options = {text:text};
+
+ $.notyRenderer.init(options);
+ };
+ };
+
+ $.noty.stopConsumeAlert = function () {
+ window.alert = windowAlert;
+ };
+
+ $.noty.defaults = {
+ layout:'top',
+ theme:'defaultTheme',
+ type:'alert',
+ text:'',
+ dismissQueue:true,
+ template:'',
+ animation:{
+ open:{height:'toggle'},
+ close:{height:'toggle'},
+ easing:'swing',
+ speed:500
+ },
+ timeout:false,
+ force:false,
+ modal:false,
+ maxVisible:5,
+ killer: false,
+ closeWith:['click'],
+ callback:{
+ onShow:function () {
+ },
+ afterShow:function () {
+ },
+ onClose:function () {
+ },
+ afterClose:function () {
+ },
+ onCloseClick:function () {
+ }
+ },
+ buttons:false
+ };
+
+ $(window).resize(function () {
+ $.each($.noty.layouts, function (index, layout) {
+ layout.container.style.apply($(layout.container.selector));
+ });
+ });
+
+})(jQuery);
+
+// Helpers
+window.noty = function noty(options) {
+ return jQuery.notyRenderer.init(options);
+};
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/bottom.js b/ajax/libs/jquery-noty/2.2.2/layouts/bottom.js
new file mode 100644
index 000000000..bf618efbf
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/bottom.js
@@ -0,0 +1,34 @@
+(function($) {
+
+ $.noty.layouts.bottom = {
+ name: 'bottom',
+ options: {},
+ container: {
+ object: '',
+ selector: 'ul#noty_bottom_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 0,
+ left: '5%',
+ position: 'fixed',
+ width: '90%',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 9999999
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/bottomCenter.js b/ajax/libs/jquery-noty/2.2.2/layouts/bottomCenter.js
new file mode 100644
index 000000000..9e2db5be8
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/bottomCenter.js
@@ -0,0 +1,41 @@
+(function($) {
+
+ $.noty.layouts.bottomCenter = {
+ name: 'bottomCenter',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_bottomCenter_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 20,
+ left: 0,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ $(this).css({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px'
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/bottomLeft.js b/ajax/libs/jquery-noty/2.2.2/layouts/bottomLeft.js
new file mode 100644
index 000000000..21448b8ab
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/bottomLeft.js
@@ -0,0 +1,43 @@
+(function($) {
+
+ $.noty.layouts.bottomLeft = {
+ name: 'bottomLeft',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_bottomLeft_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 20,
+ left: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ left: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/bottomRight.js b/ajax/libs/jquery-noty/2.2.2/layouts/bottomRight.js
new file mode 100644
index 000000000..e45b960fd
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/bottomRight.js
@@ -0,0 +1,43 @@
+(function($) {
+
+ $.noty.layouts.bottomRight = {
+ name: 'bottomRight',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_bottomRight_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 20,
+ right: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ right: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/center.js b/ajax/libs/jquery-noty/2.2.2/layouts/center.js
new file mode 100644
index 000000000..e08aa456e
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/center.js
@@ -0,0 +1,56 @@
+(function($) {
+
+ $.noty.layouts.center = {
+ name: 'center',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_center_layout_container',
+ style: function() {
+ $(this).css({
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ // getting hidden height
+ var dupe = $(this).clone().css({visibility:"hidden", display:"block", position:"absolute", top: 0, left: 0}).attr('id', 'dupe');
+ $("body").append(dupe);
+ dupe.find('.i-am-closing-now').remove();
+ dupe.find('li').css('display', 'block');
+ var actual_height = dupe.height();
+ dupe.remove();
+
+ if ($(this).hasClass('i-am-new')) {
+ $(this).css({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px',
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ });
+ } else {
+ $(this).animate({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px',
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ }, 500);
+ }
+
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/centerLeft.js b/ajax/libs/jquery-noty/2.2.2/layouts/centerLeft.js
new file mode 100644
index 000000000..7b4036805
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/centerLeft.js
@@ -0,0 +1,61 @@
+(function($) {
+
+ $.noty.layouts.centerLeft = {
+ name: 'centerLeft',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_centerLeft_layout_container',
+ style: function() {
+ $(this).css({
+ left: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ // getting hidden height
+ var dupe = $(this).clone().css({visibility:"hidden", display:"block", position:"absolute", top: 0, left: 0}).attr('id', 'dupe');
+ $("body").append(dupe);
+ dupe.find('.i-am-closing-now').remove();
+ dupe.find('li').css('display', 'block');
+ var actual_height = dupe.height();
+ dupe.remove();
+
+ if ($(this).hasClass('i-am-new')) {
+ $(this).css({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ });
+ } else {
+ $(this).animate({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ }, 500);
+ }
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ left: 5
+ });
+ }
+
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/centerRight.js b/ajax/libs/jquery-noty/2.2.2/layouts/centerRight.js
new file mode 100644
index 000000000..54159b982
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/centerRight.js
@@ -0,0 +1,61 @@
+(function($) {
+
+ $.noty.layouts.centerRight = {
+ name: 'centerRight',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_centerRight_layout_container',
+ style: function() {
+ $(this).css({
+ right: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ // getting hidden height
+ var dupe = $(this).clone().css({visibility:"hidden", display:"block", position:"absolute", top: 0, left: 0}).attr('id', 'dupe');
+ $("body").append(dupe);
+ dupe.find('.i-am-closing-now').remove();
+ dupe.find('li').css('display', 'block');
+ var actual_height = dupe.height();
+ dupe.remove();
+
+ if ($(this).hasClass('i-am-new')) {
+ $(this).css({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ });
+ } else {
+ $(this).animate({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ }, 500);
+ }
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ right: 5
+ });
+ }
+
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/inline.js b/ajax/libs/jquery-noty/2.2.2/layouts/inline.js
new file mode 100644
index 000000000..2d2e52fb5
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/inline.js
@@ -0,0 +1,31 @@
+(function($) {
+
+ $.noty.layouts.inline = {
+ name: 'inline',
+ options: {},
+ container: {
+ object: '',
+ selector: 'ul.noty_inline_layout_container',
+ style: function() {
+ $(this).css({
+ width: '100%',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 9999999
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/top.js b/ajax/libs/jquery-noty/2.2.2/layouts/top.js
new file mode 100644
index 000000000..e5aff631a
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/top.js
@@ -0,0 +1,34 @@
+(function($) {
+
+ $.noty.layouts.top = {
+ name: 'top',
+ options: {},
+ container: {
+ object: '',
+ selector: 'ul#noty_top_layout_container',
+ style: function() {
+ $(this).css({
+ top: 0,
+ left: '5%',
+ position: 'fixed',
+ width: '90%',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 9999999
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/topCenter.js b/ajax/libs/jquery-noty/2.2.2/layouts/topCenter.js
new file mode 100644
index 000000000..ed46a22f9
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/topCenter.js
@@ -0,0 +1,41 @@
+(function($) {
+
+ $.noty.layouts.topCenter = {
+ name: 'topCenter',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_topCenter_layout_container',
+ style: function() {
+ $(this).css({
+ top: 20,
+ left: 0,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ $(this).css({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px'
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/topLeft.js b/ajax/libs/jquery-noty/2.2.2/layouts/topLeft.js
new file mode 100644
index 000000000..717af50b7
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/topLeft.js
@@ -0,0 +1,43 @@
+(function($) {
+
+ $.noty.layouts.topLeft = {
+ name: 'topLeft',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_topLeft_layout_container',
+ style: function() {
+ $(this).css({
+ top: 20,
+ left: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ left: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/layouts/topRight.js b/ajax/libs/jquery-noty/2.2.2/layouts/topRight.js
new file mode 100644
index 000000000..854ac2526
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/layouts/topRight.js
@@ -0,0 +1,43 @@
+(function($) {
+
+ $.noty.layouts.topRight = {
+ name: 'topRight',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_topRight_layout_container',
+ style: function() {
+ $(this).css({
+ top: 20,
+ right: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ right: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/packaged/jquery.noty.packaged.js b/ajax/libs/jquery-noty/2.2.2/packaged/jquery.noty.packaged.js
new file mode 100644
index 000000000..404eac662
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/packaged/jquery.noty.packaged.js
@@ -0,0 +1,1180 @@
+/**
+ * noty - jQuery Notification Plugin v2.2.2
+ * Contributors: https://github.com/needim/noty/graphs/contributors
+ *
+ * Examples and Documentation - http://needim.github.com/noty/
+ *
+ * Licensed under the MIT licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ **/
+
+if (typeof Object.create !== 'function') {
+ Object.create = function (o) {
+ function F() {
+ }
+
+ F.prototype = o;
+ return new F();
+ };
+}
+
+(function ($) {
+
+ var NotyObject = {
+
+ init:function (options) {
+
+ // Mix in the passed in options with the default options
+ this.options = $.extend({}, $.noty.defaults, options);
+
+ this.options.layout = (this.options.custom) ? $.noty.layouts['inline'] : $.noty.layouts[this.options.layout];
+
+ if ($.noty.themes[this.options.theme])
+ this.options.theme = $.noty.themes[this.options.theme];
+ else
+ options.themeClassName = this.options.theme;
+
+ delete options.layout;
+ delete options.theme;
+
+ this.options = $.extend({}, this.options, this.options.layout.options);
+ this.options.id = 'noty_' + (new Date().getTime() * Math.floor(Math.random() * 1000000));
+
+ this.options = $.extend({}, this.options, options);
+
+ // Build the noty dom initial structure
+ this._build();
+
+ // return this so we can chain/use the bridge with less code.
+ return this;
+ }, // end init
+
+ _build:function () {
+
+ // Generating noty bar
+ var $bar = $('').attr('id', this.options.id);
+ $bar.append(this.options.template).find('.noty_text').html(this.options.text);
+
+ this.$bar = (this.options.layout.parent.object !== null) ? $(this.options.layout.parent.object).css(this.options.layout.parent.css).append($bar) : $bar;
+
+ if (this.options.themeClassName)
+ this.$bar.addClass(this.options.themeClassName).addClass('noty_container_type_' + this.options.type);
+
+ // Set buttons if available
+ if (this.options.buttons) {
+
+ // If we have button disable closeWith & timeout options
+ this.options.closeWith = [];
+ this.options.timeout = false;
+
+ var $buttons = $('').addClass('noty_buttons');
+
+ (this.options.layout.parent.object !== null) ? this.$bar.find('.noty_bar').append($buttons) : this.$bar.append($buttons);
+
+ var self = this;
+
+ $.each(this.options.buttons, function (i, button) {
+ var $button = $('').addClass((button.addClass) ? button.addClass : 'gray').html(button.text).attr('id', button.id ? button.id : 'button-' + i)
+ .appendTo(self.$bar.find('.noty_buttons'))
+ .bind('click', function () {
+ if ($.isFunction(button.onClick)) {
+ button.onClick.call($button, self);
+ }
+ });
+ });
+ }
+
+ // For easy access
+ this.$message = this.$bar.find('.noty_message');
+ this.$closeButton = this.$bar.find('.noty_close');
+ this.$buttons = this.$bar.find('.noty_buttons');
+
+ $.noty.store[this.options.id] = this; // store noty for api
+
+ }, // end _build
+
+ show:function () {
+
+ var self = this;
+
+ (self.options.custom) ? self.options.custom.find(self.options.layout.container.selector).append(self.$bar) : $(self.options.layout.container.selector).append(self.$bar);
+
+ if (self.options.theme && self.options.theme.style)
+ self.options.theme.style.apply(self);
+
+ ($.type(self.options.layout.css) === 'function') ? this.options.layout.css.apply(self.$bar) : self.$bar.css(this.options.layout.css || {});
+
+ self.$bar.addClass(self.options.layout.addClass);
+
+ self.options.layout.container.style.apply($(self.options.layout.container.selector));
+
+ self.showing = true;
+
+ if (self.options.theme && self.options.theme.style)
+ self.options.theme.callback.onShow.apply(this);
+
+ if ($.inArray('click', self.options.closeWith) > -1)
+ self.$bar.css('cursor', 'pointer').one('click', function (evt) {
+ self.stopPropagation(evt);
+ if (self.options.callback.onCloseClick) {
+ self.options.callback.onCloseClick.apply(self);
+ }
+ self.close();
+ });
+
+ if ($.inArray('hover', self.options.closeWith) > -1)
+ self.$bar.one('mouseenter', function () {
+ self.close();
+ });
+
+ if ($.inArray('button', self.options.closeWith) > -1)
+ self.$closeButton.one('click', function (evt) {
+ self.stopPropagation(evt);
+ self.close();
+ });
+
+ if ($.inArray('button', self.options.closeWith) == -1)
+ self.$closeButton.remove();
+
+ if (self.options.callback.onShow)
+ self.options.callback.onShow.apply(self);
+
+ self.$bar.animate(
+ self.options.animation.open,
+ self.options.animation.speed,
+ self.options.animation.easing,
+ function () {
+ if (self.options.callback.afterShow) self.options.callback.afterShow.apply(self);
+ self.showing = false;
+ self.shown = true;
+ });
+
+ // If noty is have a timeout option
+ if (self.options.timeout)
+ self.$bar.delay(self.options.timeout).promise().done(function () {
+ self.close();
+ });
+
+ return this;
+
+ }, // end show
+
+ close:function () {
+
+ if (this.closed) return;
+ if (this.$bar && this.$bar.hasClass('i-am-closing-now')) return;
+
+ var self = this;
+
+ if (this.showing) {
+ self.$bar.queue(
+ function () {
+ self.close.apply(self);
+ }
+ )
+ return;
+ }
+
+ if (!this.shown && !this.showing) { // If we are still waiting in the queue just delete from queue
+ var queue = [];
+ $.each($.noty.queue, function (i, n) {
+ if (n.options.id != self.options.id) {
+ queue.push(n);
+ }
+ });
+ $.noty.queue = queue;
+ return;
+ }
+
+ self.$bar.addClass('i-am-closing-now');
+
+ if (self.options.callback.onClose) {
+ self.options.callback.onClose.apply(self);
+ }
+
+ self.$bar.clearQueue().stop().animate(
+ self.options.animation.close,
+ self.options.animation.speed,
+ self.options.animation.easing,
+ function () {
+ if (self.options.callback.afterClose) self.options.callback.afterClose.apply(self);
+ })
+ .promise().done(function () {
+
+ // Modal Cleaning
+ if (self.options.modal) {
+ $.notyRenderer.setModalCount(-1);
+ if ($.notyRenderer.getModalCount() == 0) $('.noty_modal').fadeOut('fast', function () {
+ $(this).remove();
+ });
+ }
+
+ // Layout Cleaning
+ $.notyRenderer.setLayoutCountFor(self, -1);
+ if ($.notyRenderer.getLayoutCountFor(self) == 0) $(self.options.layout.container.selector).remove();
+
+ // Make sure self.$bar has not been removed before attempting to remove it
+ if (typeof self.$bar !== 'undefined' && self.$bar !== null ) {
+ self.$bar.remove();
+ self.$bar = null;
+ self.closed = true;
+ }
+
+ delete $.noty.store[self.options.id]; // deleting noty from store
+
+ if(self.options.theme.callback && self.options.theme.callback.onClose) {
+ self.options.theme.callback.onClose.apply(self);
+ }
+
+ if (!self.options.dismissQueue) {
+ // Queue render
+ $.noty.ontap = true;
+
+ $.notyRenderer.render();
+ }
+
+ if (self.options.maxVisible > 0 && self.options.dismissQueue) {
+ $.notyRenderer.render();
+ }
+ })
+
+ }, // end close
+
+ setText:function (text) {
+ if (!this.closed) {
+ this.options.text = text;
+ this.$bar.find('.noty_text').html(text);
+ }
+ return this;
+ },
+
+ setType:function (type) {
+ if (!this.closed) {
+ this.options.type = type;
+ this.options.theme.style.apply(this);
+ this.options.theme.callback.onShow.apply(this);
+ }
+ return this;
+ },
+
+ setTimeout:function (time) {
+ if (!this.closed) {
+ var self = this;
+ this.options.timeout = time;
+ self.$bar.delay(self.options.timeout).promise().done(function () {
+ self.close();
+ });
+ }
+ return this;
+ },
+
+ stopPropagation:function (evt) {
+ evt = evt || window.event;
+ if (typeof evt.stopPropagation !== "undefined") {
+ evt.stopPropagation();
+ } else {
+ evt.cancelBubble = true;
+ }
+ },
+
+ closed:false,
+ showing:false,
+ shown:false
+
+ }; // end NotyObject
+
+ $.notyRenderer = {};
+
+ $.notyRenderer.init = function (options) {
+
+ // Renderer creates a new noty
+ var notification = Object.create(NotyObject).init(options);
+
+ if (notification.options.killer)
+ $.noty.closeAll();
+
+ (notification.options.force) ? $.noty.queue.unshift(notification) : $.noty.queue.push(notification);
+
+ $.notyRenderer.render();
+
+ return ($.noty.returns == 'object') ? notification : notification.options.id;
+ };
+
+ $.notyRenderer.render = function () {
+
+ var instance = $.noty.queue[0];
+
+ if ($.type(instance) === 'object') {
+ if (instance.options.dismissQueue) {
+ if (instance.options.maxVisible > 0) {
+ if ($(instance.options.layout.container.selector + ' li').length < instance.options.maxVisible) {
+ $.notyRenderer.show($.noty.queue.shift());
+ } else {
+
+ }
+ } else {
+ $.notyRenderer.show($.noty.queue.shift());
+ }
+ } else {
+ if ($.noty.ontap) {
+ $.notyRenderer.show($.noty.queue.shift());
+ $.noty.ontap = false;
+ }
+ }
+ } else {
+ $.noty.ontap = true; // Queue is over
+ }
+
+ };
+
+ $.notyRenderer.show = function (notification) {
+
+ if (notification.options.modal) {
+ $.notyRenderer.createModalFor(notification);
+ $.notyRenderer.setModalCount(+1);
+ }
+
+ // Where is the container?
+ if (notification.options.custom) {
+ if (notification.options.custom.find(notification.options.layout.container.selector).length == 0) {
+ notification.options.custom.append($(notification.options.layout.container.object).addClass('i-am-new'));
+ } else {
+ notification.options.custom.find(notification.options.layout.container.selector).removeClass('i-am-new');
+ }
+ } else {
+ if ($(notification.options.layout.container.selector).length == 0) {
+ $('body').append($(notification.options.layout.container.object).addClass('i-am-new'));
+ } else {
+ $(notification.options.layout.container.selector).removeClass('i-am-new');
+ }
+ }
+
+ $.notyRenderer.setLayoutCountFor(notification, +1);
+
+ notification.show();
+ };
+
+ $.notyRenderer.createModalFor = function (notification) {
+ if ($('.noty_modal').length == 0) {
+ var modal = $('').addClass('noty_modal').addClass(notification.options.theme).data('noty_modal_count', 0);
+
+ if (notification.options.theme.modal && notification.options.theme.modal.css)
+ modal.css(notification.options.theme.modal.css);
+
+ modal.prependTo($('body')).fadeIn('fast');
+ }
+ };
+
+ $.notyRenderer.getLayoutCountFor = function (notification) {
+ return $(notification.options.layout.container.selector).data('noty_layout_count') || 0;
+ };
+
+ $.notyRenderer.setLayoutCountFor = function (notification, arg) {
+ return $(notification.options.layout.container.selector).data('noty_layout_count', $.notyRenderer.getLayoutCountFor(notification) + arg);
+ };
+
+ $.notyRenderer.getModalCount = function () {
+ return $('.noty_modal').data('noty_modal_count') || 0;
+ };
+
+ $.notyRenderer.setModalCount = function (arg) {
+ return $('.noty_modal').data('noty_modal_count', $.notyRenderer.getModalCount() + arg);
+ };
+
+ // This is for custom container
+ $.fn.noty = function (options) {
+ options.custom = $(this);
+ return $.notyRenderer.init(options);
+ };
+
+ $.noty = {};
+ $.noty.queue = [];
+ $.noty.ontap = true;
+ $.noty.layouts = {};
+ $.noty.themes = {};
+ $.noty.returns = 'object';
+ $.noty.store = {};
+
+ $.noty.get = function (id) {
+ return $.noty.store.hasOwnProperty(id) ? $.noty.store[id] : false;
+ };
+
+ $.noty.close = function (id) {
+ return $.noty.get(id) ? $.noty.get(id).close() : false;
+ };
+
+ $.noty.setText = function (id, text) {
+ return $.noty.get(id) ? $.noty.get(id).setText(text) : false;
+ };
+
+ $.noty.setType = function (id, type) {
+ return $.noty.get(id) ? $.noty.get(id).setType(type) : false;
+ };
+
+ $.noty.clearQueue = function () {
+ $.noty.queue = [];
+ };
+
+ $.noty.closeAll = function () {
+ $.noty.clearQueue();
+ $.each($.noty.store, function (id, noty) {
+ noty.close();
+ });
+ };
+
+ var windowAlert = window.alert;
+
+ $.noty.consumeAlert = function (options) {
+ window.alert = function (text) {
+ if (options)
+ options.text = text;
+ else
+ options = {text:text};
+
+ $.notyRenderer.init(options);
+ };
+ };
+
+ $.noty.stopConsumeAlert = function () {
+ window.alert = windowAlert;
+ };
+
+ $.noty.defaults = {
+ layout:'top',
+ theme:'defaultTheme',
+ type:'alert',
+ text:'',
+ dismissQueue:true,
+ template:'',
+ animation:{
+ open:{height:'toggle'},
+ close:{height:'toggle'},
+ easing:'swing',
+ speed:500
+ },
+ timeout:false,
+ force:false,
+ modal:false,
+ maxVisible:5,
+ killer: false,
+ closeWith:['click'],
+ callback:{
+ onShow:function () {
+ },
+ afterShow:function () {
+ },
+ onClose:function () {
+ },
+ afterClose:function () {
+ },
+ onCloseClick:function () {
+ }
+ },
+ buttons:false
+ };
+
+ $(window).resize(function () {
+ $.each($.noty.layouts, function (index, layout) {
+ layout.container.style.apply($(layout.container.selector));
+ });
+ });
+
+})(jQuery);
+
+// Helpers
+window.noty = function noty(options) {
+ return jQuery.notyRenderer.init(options);
+};
+
+(function($) {
+
+ $.noty.layouts.bottom = {
+ name: 'bottom',
+ options: {},
+ container: {
+ object: '',
+ selector: 'ul#noty_bottom_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 0,
+ left: '5%',
+ position: 'fixed',
+ width: '90%',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 9999999
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.layouts.bottomCenter = {
+ name: 'bottomCenter',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_bottomCenter_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 20,
+ left: 0,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ $(this).css({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px'
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+
+(function($) {
+
+ $.noty.layouts.bottomLeft = {
+ name: 'bottomLeft',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_bottomLeft_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 20,
+ left: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ left: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.layouts.bottomRight = {
+ name: 'bottomRight',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_bottomRight_layout_container',
+ style: function() {
+ $(this).css({
+ bottom: 20,
+ right: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ right: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.layouts.center = {
+ name: 'center',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_center_layout_container',
+ style: function() {
+ $(this).css({
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ // getting hidden height
+ var dupe = $(this).clone().css({visibility:"hidden", display:"block", position:"absolute", top: 0, left: 0}).attr('id', 'dupe');
+ $("body").append(dupe);
+ dupe.find('.i-am-closing-now').remove();
+ dupe.find('li').css('display', 'block');
+ var actual_height = dupe.height();
+ dupe.remove();
+
+ if ($(this).hasClass('i-am-new')) {
+ $(this).css({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px',
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ });
+ } else {
+ $(this).animate({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px',
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ }, 500);
+ }
+
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.layouts.centerLeft = {
+ name: 'centerLeft',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_centerLeft_layout_container',
+ style: function() {
+ $(this).css({
+ left: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ // getting hidden height
+ var dupe = $(this).clone().css({visibility:"hidden", display:"block", position:"absolute", top: 0, left: 0}).attr('id', 'dupe');
+ $("body").append(dupe);
+ dupe.find('.i-am-closing-now').remove();
+ dupe.find('li').css('display', 'block');
+ var actual_height = dupe.height();
+ dupe.remove();
+
+ if ($(this).hasClass('i-am-new')) {
+ $(this).css({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ });
+ } else {
+ $(this).animate({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ }, 500);
+ }
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ left: 5
+ });
+ }
+
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+
+(function($) {
+
+ $.noty.layouts.centerRight = {
+ name: 'centerRight',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_centerRight_layout_container',
+ style: function() {
+ $(this).css({
+ right: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ // getting hidden height
+ var dupe = $(this).clone().css({visibility:"hidden", display:"block", position:"absolute", top: 0, left: 0}).attr('id', 'dupe');
+ $("body").append(dupe);
+ dupe.find('.i-am-closing-now').remove();
+ dupe.find('li').css('display', 'block');
+ var actual_height = dupe.height();
+ dupe.remove();
+
+ if ($(this).hasClass('i-am-new')) {
+ $(this).css({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ });
+ } else {
+ $(this).animate({
+ top: ($(window).height() - actual_height) / 2 + 'px'
+ }, 500);
+ }
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ right: 5
+ });
+ }
+
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+
+(function($) {
+
+ $.noty.layouts.inline = {
+ name: 'inline',
+ options: {},
+ container: {
+ object: '',
+ selector: 'ul.noty_inline_layout_container',
+ style: function() {
+ $(this).css({
+ width: '100%',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 9999999
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.layouts.top = {
+ name: 'top',
+ options: {},
+ container: {
+ object: '',
+ selector: 'ul#noty_top_layout_container',
+ style: function() {
+ $(this).css({
+ top: 0,
+ left: '5%',
+ position: 'fixed',
+ width: '90%',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 9999999
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.layouts.topCenter = {
+ name: 'topCenter',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_topCenter_layout_container',
+ style: function() {
+ $(this).css({
+ top: 20,
+ left: 0,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ $(this).css({
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px'
+ });
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+
+(function($) {
+
+ $.noty.layouts.topLeft = {
+ name: 'topLeft',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_topLeft_layout_container',
+ style: function() {
+ $(this).css({
+ top: 20,
+ left: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ left: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.layouts.topRight = {
+ name: 'topRight',
+ options: { // overrides options
+
+ },
+ container: {
+ object: '',
+ selector: 'ul#noty_topRight_layout_container',
+ style: function() {
+ $(this).css({
+ top: 20,
+ right: 20,
+ position: 'fixed',
+ width: '310px',
+ height: 'auto',
+ margin: 0,
+ padding: 0,
+ listStyleType: 'none',
+ zIndex: 10000000
+ });
+
+ if (window.innerWidth < 600) {
+ $(this).css({
+ right: 5
+ });
+ }
+ }
+ },
+ parent: {
+ object: '',
+ selector: 'li',
+ css: {}
+ },
+ css: {
+ display: 'none',
+ width: '310px'
+ },
+ addClass: ''
+ };
+
+})(jQuery);
+(function($) {
+
+ $.noty.themes.defaultTheme = {
+ name: 'defaultTheme',
+ helpers: {
+ borderFix: function() {
+ if (this.options.dismissQueue) {
+ var selector = this.options.layout.container.selector + ' ' + this.options.layout.parent.selector;
+ switch (this.options.layout.name) {
+ case 'top':
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
+ $(selector).last().css({borderRadius: '0px 0px 5px 5px'}); break;
+ case 'topCenter': case 'topLeft': case 'topRight':
+ case 'bottomCenter': case 'bottomLeft': case 'bottomRight':
+ case 'center': case 'centerLeft': case 'centerRight': case 'inline':
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
+ $(selector).first().css({'border-top-left-radius': '5px', 'border-top-right-radius': '5px'});
+ $(selector).last().css({'border-bottom-left-radius': '5px', 'border-bottom-right-radius': '5px'}); break;
+ case 'bottom':
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
+ $(selector).first().css({borderRadius: '5px 5px 0px 0px'}); break;
+ default: break;
+ }
+ }
+ }
+ },
+ modal: {
+ css: {
+ position: 'fixed',
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#000',
+ zIndex: 10000,
+ opacity: 0.6,
+ display: 'none',
+ left: 0,
+ top: 0
+ }
+ },
+ style: function() {
+
+ this.$bar.css({
+ overflow: 'hidden',
+ background: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAoCAYAAAAPOoFWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPZJREFUeNq81tsOgjAMANB2ov7/7ypaN7IlIwi9rGuT8QSc9EIDAsAznxvY4pXPKr05RUE5MEVB+TyWfCEl9LZApYopCmo9C4FKSMtYoI8Bwv79aQJU4l6hXXCZrQbokJEksxHo9KMOgc6w1atHXM8K9DVC7FQnJ0i8iK3QooGgbnyKgMDygBWyYFZoqx4qS27KqLZJjA1D0jK6QJcYEQEiWv9PGkTsbqxQ8oT+ZtZB6AkdsJnQDnMoHXHLGKOgDYuCWmYhEERCI5gaamW0bnHdA3k2ltlIN+2qKRyCND0bhqSYCyTB3CAOc4WusBEIpkeBuPgJMAAX8Hs1NfqHRgAAAABJRU5ErkJggg==') repeat-x scroll left top #fff"
+ });
+
+ this.$message.css({
+ fontSize: '13px',
+ lineHeight: '16px',
+ textAlign: 'center',
+ padding: '8px 10px 9px',
+ width: 'auto',
+ position: 'relative'
+ });
+
+ this.$closeButton.css({
+ position: 'absolute',
+ top: 4, right: 4,
+ width: 10, height: 10,
+ background: "url(data:image/png;base64,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)",
+ display: 'none',
+ cursor: 'pointer'
+ });
+
+ this.$buttons.css({
+ padding: 5,
+ textAlign: 'right',
+ borderTop: '1px solid #ccc',
+ backgroundColor: '#fff'
+ });
+
+ this.$buttons.find('button').css({
+ marginLeft: 5
+ });
+
+ this.$buttons.find('button:first').css({
+ marginLeft: 0
+ });
+
+ this.$bar.bind({
+ mouseenter: function() { $(this).find('.noty_close').stop().fadeTo('normal',1); },
+ mouseleave: function() { $(this).find('.noty_close').stop().fadeTo('normal',0); }
+ });
+
+ switch (this.options.layout.name) {
+ case 'top':
+ this.$bar.css({
+ borderRadius: '0px 0px 5px 5px',
+ borderBottom: '2px solid #eee',
+ borderLeft: '2px solid #eee',
+ borderRight: '2px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ break;
+ case 'topCenter': case 'center': case 'bottomCenter': case 'inline':
+ this.$bar.css({
+ borderRadius: '5px',
+ border: '1px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ this.$message.css({fontSize: '13px', textAlign: 'center'});
+ break;
+ case 'topLeft': case 'topRight':
+ case 'bottomLeft': case 'bottomRight':
+ case 'centerLeft': case 'centerRight':
+ this.$bar.css({
+ borderRadius: '5px',
+ border: '1px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ this.$message.css({fontSize: '13px', textAlign: 'left'});
+ break;
+ case 'bottom':
+ this.$bar.css({
+ borderRadius: '5px 5px 0px 0px',
+ borderTop: '2px solid #eee',
+ borderLeft: '2px solid #eee',
+ borderRight: '2px solid #eee',
+ boxShadow: "0 -2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ break;
+ default:
+ this.$bar.css({
+ border: '2px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ break;
+ }
+
+ switch (this.options.type) {
+ case 'alert': case 'notification':
+ this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); break;
+ case 'warning':
+ this.$bar.css({backgroundColor: '#FFEAA8', borderColor: '#FFC237', color: '#826200'});
+ this.$buttons.css({borderTop: '1px solid #FFC237'}); break;
+ case 'error':
+ this.$bar.css({backgroundColor: 'red', borderColor: 'darkred', color: '#FFF'});
+ this.$message.css({fontWeight: 'bold'});
+ this.$buttons.css({borderTop: '1px solid darkred'}); break;
+ case 'information':
+ this.$bar.css({backgroundColor: '#57B7E2', borderColor: '#0B90C4', color: '#FFF'});
+ this.$buttons.css({borderTop: '1px solid #0B90C4'}); break;
+ case 'success':
+ this.$bar.css({backgroundColor: 'lightgreen', borderColor: '#50C24E', color: 'darkgreen'});
+ this.$buttons.css({borderTop: '1px solid #50C24E'});break;
+ default:
+ this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); break;
+ }
+ },
+ callback: {
+ onShow: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); },
+ onClose: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); }
+ }
+ };
+
+})(jQuery);
diff --git a/ajax/libs/jquery-noty/2.2.2/packaged/jquery.noty.packaged.min.js b/ajax/libs/jquery-noty/2.2.2/packaged/jquery.noty.packaged.min.js
new file mode 100644
index 000000000..a304cd9c1
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/packaged/jquery.noty.packaged.min.js
@@ -0,0 +1 @@
+"function"!=typeof Object.create&&(Object.create=function(a){function b(){}return b.prototype=a,new b}),function(a){var b={init:function(b){return this.options=a.extend({},a.noty.defaults,b),this.options.layout=this.options.custom?a.noty.layouts.inline:a.noty.layouts[this.options.layout],a.noty.themes[this.options.theme]?this.options.theme=a.noty.themes[this.options.theme]:b.themeClassName=this.options.theme,delete b.layout,delete b.theme,this.options=a.extend({},this.options,this.options.layout.options),this.options.id="noty_"+(new Date).getTime()*Math.floor(1e6*Math.random()),this.options=a.extend({},this.options,b),this._build(),this},_build:function(){var b=a('').attr("id",this.options.id);if(b.append(this.options.template).find(".noty_text").html(this.options.text),this.$bar=null!==this.options.layout.parent.object?a(this.options.layout.parent.object).css(this.options.layout.parent.css).append(b):b,this.options.themeClassName&&this.$bar.addClass(this.options.themeClassName).addClass("noty_container_type_"+this.options.type),this.options.buttons){this.options.closeWith=[],this.options.timeout=!1;var c=a("").addClass("noty_buttons");null!==this.options.layout.parent.object?this.$bar.find(".noty_bar").append(c):this.$bar.append(c);var d=this;a.each(this.options.buttons,function(b,c){var e=a("").addClass(c.addClass?c.addClass:"gray").html(c.text).attr("id",c.id?c.id:"button-"+b).appendTo(d.$bar.find(".noty_buttons")).bind("click",function(){a.isFunction(c.onClick)&&c.onClick.call(e,d)})})}this.$message=this.$bar.find(".noty_message"),this.$closeButton=this.$bar.find(".noty_close"),this.$buttons=this.$bar.find(".noty_buttons"),a.noty.store[this.options.id]=this},show:function(){var b=this;return b.options.custom?b.options.custom.find(b.options.layout.container.selector).append(b.$bar):a(b.options.layout.container.selector).append(b.$bar),b.options.theme&&b.options.theme.style&&b.options.theme.style.apply(b),"function"===a.type(b.options.layout.css)?this.options.layout.css.apply(b.$bar):b.$bar.css(this.options.layout.css||{}),b.$bar.addClass(b.options.layout.addClass),b.options.layout.container.style.apply(a(b.options.layout.container.selector)),b.showing=!0,b.options.theme&&b.options.theme.style&&b.options.theme.callback.onShow.apply(this),a.inArray("click",b.options.closeWith)>-1&&b.$bar.css("cursor","pointer").one("click",function(a){b.stopPropagation(a),b.options.callback.onCloseClick&&b.options.callback.onCloseClick.apply(b),b.close()}),a.inArray("hover",b.options.closeWith)>-1&&b.$bar.one("mouseenter",function(){b.close()}),a.inArray("button",b.options.closeWith)>-1&&b.$closeButton.one("click",function(a){b.stopPropagation(a),b.close()}),-1==a.inArray("button",b.options.closeWith)&&b.$closeButton.remove(),b.options.callback.onShow&&b.options.callback.onShow.apply(b),b.$bar.animate(b.options.animation.open,b.options.animation.speed,b.options.animation.easing,function(){b.options.callback.afterShow&&b.options.callback.afterShow.apply(b),b.showing=!1,b.shown=!0}),b.options.timeout&&b.$bar.delay(b.options.timeout).promise().done(function(){b.close()}),this},close:function(){if(!(this.closed||this.$bar&&this.$bar.hasClass("i-am-closing-now"))){var b=this;if(this.showing)return b.$bar.queue(function(){b.close.apply(b)}),void 0;if(!this.shown&&!this.showing){var c=[];return a.each(a.noty.queue,function(a,d){d.options.id!=b.options.id&&c.push(d)}),a.noty.queue=c,void 0}b.$bar.addClass("i-am-closing-now"),b.options.callback.onClose&&b.options.callback.onClose.apply(b),b.$bar.clearQueue().stop().animate(b.options.animation.close,b.options.animation.speed,b.options.animation.easing,function(){b.options.callback.afterClose&&b.options.callback.afterClose.apply(b)}).promise().done(function(){b.options.modal&&(a.notyRenderer.setModalCount(-1),0==a.notyRenderer.getModalCount()&&a(".noty_modal").fadeOut("fast",function(){a(this).remove()})),a.notyRenderer.setLayoutCountFor(b,-1),0==a.notyRenderer.getLayoutCountFor(b)&&a(b.options.layout.container.selector).remove(),"undefined"!=typeof b.$bar&&null!==b.$bar&&(b.$bar.remove(),b.$bar=null,b.closed=!0),delete a.noty.store[b.options.id],b.options.theme.callback&&b.options.theme.callback.onClose&&b.options.theme.callback.onClose.apply(b),b.options.dismissQueue||(a.noty.ontap=!0,a.notyRenderer.render()),b.options.maxVisible>0&&b.options.dismissQueue&&a.notyRenderer.render()})}},setText:function(a){return this.closed||(this.options.text=a,this.$bar.find(".noty_text").html(a)),this},setType:function(a){return this.closed||(this.options.type=a,this.options.theme.style.apply(this),this.options.theme.callback.onShow.apply(this)),this},setTimeout:function(a){if(!this.closed){var b=this;this.options.timeout=a,b.$bar.delay(b.options.timeout).promise().done(function(){b.close()})}return this},stopPropagation:function(a){a=a||window.event,"undefined"!=typeof a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},closed:!1,showing:!1,shown:!1};a.notyRenderer={},a.notyRenderer.init=function(c){var d=Object.create(b).init(c);return d.options.killer&&a.noty.closeAll(),d.options.force?a.noty.queue.unshift(d):a.noty.queue.push(d),a.notyRenderer.render(),"object"==a.noty.returns?d:d.options.id},a.notyRenderer.render=function(){var b=a.noty.queue[0];"object"===a.type(b)?b.options.dismissQueue?b.options.maxVisible>0?a(b.options.layout.container.selector+" li").length").addClass("noty_modal").addClass(b.options.theme).data("noty_modal_count",0);b.options.theme.modal&&b.options.theme.modal.css&&c.css(b.options.theme.modal.css),c.prependTo(a("body")).fadeIn("fast")}},a.notyRenderer.getLayoutCountFor=function(b){return a(b.options.layout.container.selector).data("noty_layout_count")||0},a.notyRenderer.setLayoutCountFor=function(b,c){return a(b.options.layout.container.selector).data("noty_layout_count",a.notyRenderer.getLayoutCountFor(b)+c)},a.notyRenderer.getModalCount=function(){return a(".noty_modal").data("noty_modal_count")||0},a.notyRenderer.setModalCount=function(b){return a(".noty_modal").data("noty_modal_count",a.notyRenderer.getModalCount()+b)},a.fn.noty=function(b){return b.custom=a(this),a.notyRenderer.init(b)},a.noty={},a.noty.queue=[],a.noty.ontap=!0,a.noty.layouts={},a.noty.themes={},a.noty.returns="object",a.noty.store={},a.noty.get=function(b){return a.noty.store.hasOwnProperty(b)?a.noty.store[b]:!1},a.noty.close=function(b){return a.noty.get(b)?a.noty.get(b).close():!1},a.noty.setText=function(b,c){return a.noty.get(b)?a.noty.get(b).setText(c):!1},a.noty.setType=function(b,c){return a.noty.get(b)?a.noty.get(b).setType(c):!1},a.noty.clearQueue=function(){a.noty.queue=[]},a.noty.closeAll=function(){a.noty.clearQueue(),a.each(a.noty.store,function(a,b){b.close()})};var c=window.alert;a.noty.consumeAlert=function(b){window.alert=function(c){b?b.text=c:b={text:c},a.notyRenderer.init(b)}},a.noty.stopConsumeAlert=function(){window.alert=c},a.noty.defaults={layout:"top",theme:"defaultTheme",type:"alert",text:"",dismissQueue:!0,template:'',animation:{open:{height:"toggle"},close:{height:"toggle"},easing:"swing",speed:500},timeout:!1,force:!1,modal:!1,maxVisible:5,killer:!1,closeWith:["click"],callback:{onShow:function(){},afterShow:function(){},onClose:function(){},afterClose:function(){},onCloseClick:function(){}},buttons:!1},a(window).resize(function(){a.each(a.noty.layouts,function(b,c){c.container.style.apply(a(c.container.selector))})})}(jQuery),window.noty=function(a){return jQuery.notyRenderer.init(a)},function(a){a.noty.layouts.bottom={name:"bottom",options:{},container:{object:'',selector:"ul#noty_bottom_layout_container",style:function(){a(this).css({bottom:0,left:"5%",position:"fixed",width:"90%",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:9999999})}},parent:{object:"",selector:"li",css:{}},css:{display:"none"},addClass:""}}(jQuery),function(a){a.noty.layouts.bottomCenter={name:"bottomCenter",options:{},container:{object:'',selector:"ul#noty_bottomCenter_layout_container",style:function(){a(this).css({bottom:20,left:0,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),a(this).css({left:(a(window).width()-a(this).outerWidth(!1))/2+"px"})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.bottomLeft={name:"bottomLeft",options:{},container:{object:'',selector:"ul#noty_bottomLeft_layout_container",style:function(){a(this).css({bottom:20,left:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({left:5})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.bottomRight={name:"bottomRight",options:{},container:{object:'',selector:"ul#noty_bottomRight_layout_container",style:function(){a(this).css({bottom:20,right:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({right:5})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.center={name:"center",options:{},container:{object:'',selector:"ul#noty_center_layout_container",style:function(){a(this).css({position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7});var b=a(this).clone().css({visibility:"hidden",display:"block",position:"absolute",top:0,left:0}).attr("id","dupe");a("body").append(b),b.find(".i-am-closing-now").remove(),b.find("li").css("display","block");var c=b.height();b.remove(),a(this).hasClass("i-am-new")?a(this).css({left:(a(window).width()-a(this).outerWidth(!1))/2+"px",top:(a(window).height()-c)/2+"px"}):a(this).animate({left:(a(window).width()-a(this).outerWidth(!1))/2+"px",top:(a(window).height()-c)/2+"px"},500)}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.centerLeft={name:"centerLeft",options:{},container:{object:'',selector:"ul#noty_centerLeft_layout_container",style:function(){a(this).css({left:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7});var b=a(this).clone().css({visibility:"hidden",display:"block",position:"absolute",top:0,left:0}).attr("id","dupe");a("body").append(b),b.find(".i-am-closing-now").remove(),b.find("li").css("display","block");var c=b.height();b.remove(),a(this).hasClass("i-am-new")?a(this).css({top:(a(window).height()-c)/2+"px"}):a(this).animate({top:(a(window).height()-c)/2+"px"},500),window.innerWidth<600&&a(this).css({left:5})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.centerRight={name:"centerRight",options:{},container:{object:'',selector:"ul#noty_centerRight_layout_container",style:function(){a(this).css({right:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7});var b=a(this).clone().css({visibility:"hidden",display:"block",position:"absolute",top:0,left:0}).attr("id","dupe");a("body").append(b),b.find(".i-am-closing-now").remove(),b.find("li").css("display","block");var c=b.height();b.remove(),a(this).hasClass("i-am-new")?a(this).css({top:(a(window).height()-c)/2+"px"}):a(this).animate({top:(a(window).height()-c)/2+"px"},500),window.innerWidth<600&&a(this).css({right:5})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.inline={name:"inline",options:{},container:{object:'',selector:"ul.noty_inline_layout_container",style:function(){a(this).css({width:"100%",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:9999999})}},parent:{object:"",selector:"li",css:{}},css:{display:"none"},addClass:""}}(jQuery),function(a){a.noty.layouts.top={name:"top",options:{},container:{object:'',selector:"ul#noty_top_layout_container",style:function(){a(this).css({top:0,left:"5%",position:"fixed",width:"90%",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:9999999})}},parent:{object:"",selector:"li",css:{}},css:{display:"none"},addClass:""}}(jQuery),function(a){a.noty.layouts.topCenter={name:"topCenter",options:{},container:{object:'',selector:"ul#noty_topCenter_layout_container",style:function(){a(this).css({top:20,left:0,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),a(this).css({left:(a(window).width()-a(this).outerWidth(!1))/2+"px"})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.topLeft={name:"topLeft",options:{},container:{object:'',selector:"ul#noty_topLeft_layout_container",style:function(){a(this).css({top:20,left:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({left:5})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.layouts.topRight={name:"topRight",options:{},container:{object:'',selector:"ul#noty_topRight_layout_container",style:function(){a(this).css({top:20,right:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({right:5})}},parent:{object:"",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""}}(jQuery),function(a){a.noty.themes.defaultTheme={name:"defaultTheme",helpers:{borderFix:function(){if(this.options.dismissQueue){var b=this.options.layout.container.selector+" "+this.options.layout.parent.selector;switch(this.options.layout.name){case"top":a(b).css({borderRadius:"0px 0px 0px 0px"}),a(b).last().css({borderRadius:"0px 0px 5px 5px"});break;case"topCenter":case"topLeft":case"topRight":case"bottomCenter":case"bottomLeft":case"bottomRight":case"center":case"centerLeft":case"centerRight":case"inline":a(b).css({borderRadius:"0px 0px 0px 0px"}),a(b).first().css({"border-top-left-radius":"5px","border-top-right-radius":"5px"}),a(b).last().css({"border-bottom-left-radius":"5px","border-bottom-right-radius":"5px"});break;case"bottom":a(b).css({borderRadius:"0px 0px 0px 0px"}),a(b).first().css({borderRadius:"5px 5px 0px 0px"})}}}},modal:{css:{position:"fixed",width:"100%",height:"100%",backgroundColor:"#000",zIndex:1e4,opacity:.6,display:"none",left:0,top:0}},style:function(){switch(this.$bar.css({overflow:"hidden",background:"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAoCAYAAAAPOoFWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPZJREFUeNq81tsOgjAMANB2ov7/7ypaN7IlIwi9rGuT8QSc9EIDAsAznxvY4pXPKr05RUE5MEVB+TyWfCEl9LZApYopCmo9C4FKSMtYoI8Bwv79aQJU4l6hXXCZrQbokJEksxHo9KMOgc6w1atHXM8K9DVC7FQnJ0i8iK3QooGgbnyKgMDygBWyYFZoqx4qS27KqLZJjA1D0jK6QJcYEQEiWv9PGkTsbqxQ8oT+ZtZB6AkdsJnQDnMoHXHLGKOgDYuCWmYhEERCI5gaamW0bnHdA3k2ltlIN+2qKRyCND0bhqSYCyTB3CAOc4WusBEIpkeBuPgJMAAX8Hs1NfqHRgAAAABJRU5ErkJggg==') repeat-x scroll left top #fff"}),this.$message.css({fontSize:"13px",lineHeight:"16px",textAlign:"center",padding:"8px 10px 9px",width:"auto",position:"relative"}),this.$closeButton.css({position:"absolute",top:4,right:4,width:10,height:10,background:"url(data:image/png;base64,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)",display:"none",cursor:"pointer"}),this.$buttons.css({padding:5,textAlign:"right",borderTop:"1px solid #ccc",backgroundColor:"#fff"}),this.$buttons.find("button").css({marginLeft:5}),this.$buttons.find("button:first").css({marginLeft:0}),this.$bar.bind({mouseenter:function(){a(this).find(".noty_close").stop().fadeTo("normal",1)},mouseleave:function(){a(this).find(".noty_close").stop().fadeTo("normal",0)}}),this.options.layout.name){case"top":this.$bar.css({borderRadius:"0px 0px 5px 5px",borderBottom:"2px solid #eee",borderLeft:"2px solid #eee",borderRight:"2px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"});break;case"topCenter":case"center":case"bottomCenter":case"inline":this.$bar.css({borderRadius:"5px",border:"1px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"}),this.$message.css({fontSize:"13px",textAlign:"center"});break;case"topLeft":case"topRight":case"bottomLeft":case"bottomRight":case"centerLeft":case"centerRight":this.$bar.css({borderRadius:"5px",border:"1px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"}),this.$message.css({fontSize:"13px",textAlign:"left"});break;case"bottom":this.$bar.css({borderRadius:"5px 5px 0px 0px",borderTop:"2px solid #eee",borderLeft:"2px solid #eee",borderRight:"2px solid #eee",boxShadow:"0 -2px 4px rgba(0, 0, 0, 0.1)"});break;default:this.$bar.css({border:"2px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"})}switch(this.options.type){case"alert":case"notification":this.$bar.css({backgroundColor:"#FFF",borderColor:"#CCC",color:"#444"});break;case"warning":this.$bar.css({backgroundColor:"#FFEAA8",borderColor:"#FFC237",color:"#826200"}),this.$buttons.css({borderTop:"1px solid #FFC237"});break;case"error":this.$bar.css({backgroundColor:"red",borderColor:"darkred",color:"#FFF"}),this.$message.css({fontWeight:"bold"}),this.$buttons.css({borderTop:"1px solid darkred"});break;case"information":this.$bar.css({backgroundColor:"#57B7E2",borderColor:"#0B90C4",color:"#FFF"}),this.$buttons.css({borderTop:"1px solid #0B90C4"});break;case"success":this.$bar.css({backgroundColor:"lightgreen",borderColor:"#50C24E",color:"darkgreen"}),this.$buttons.css({borderTop:"1px solid #50C24E"});break;default:this.$bar.css({backgroundColor:"#FFF",borderColor:"#CCC",color:"#444"})}},callback:{onShow:function(){a.noty.themes.defaultTheme.helpers.borderFix.apply(this)},onClose:function(){a.noty.themes.defaultTheme.helpers.borderFix.apply(this)}}}}(jQuery);
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/promise.js b/ajax/libs/jquery-noty/2.2.2/promise.js
new file mode 100644
index 000000000..f93a84271
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/promise.js
@@ -0,0 +1,432 @@
+/*!
+ * Noty Helpers Javascript From JQuery Javascript Library
+ *
+ * Ported by Maksim Pecherskiy. Original Licensing:
+ *
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+
+
+(function(){
+
+ // String to Object flags format cache
+var flagsCache = {};
+
+// Convert String-formatted flags into Object-formatted ones and store in cache
+function createFlags( flags ) {
+ var object = flagsCache[ flags ] = {},
+ i, length;
+ flags = flags.split( /\s+/ );
+ for ( i = 0, length = flags.length; i < length; i++ ) {
+ object[ flags[i] ] = true;
+ }
+ return object;
+}
+
+jQuery.extend({
+
+ _mark: function( elem, type ) {
+ if ( elem ) {
+ type = (type || "fx") + "mark";
+ jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );
+ }
+ },
+
+ _unmark: function( force, elem, type ) {
+ if ( force !== true ) {
+ type = elem;
+ elem = force;
+ force = false;
+ }
+ if ( elem ) {
+ type = type || "fx";
+ var key = type + "mark",
+ count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );
+ if ( count ) {
+ jQuery.data( elem, key, count, true );
+ } else {
+ jQuery.removeData( elem, key, true );
+ handleQueueMarkDefer( elem, type, "mark" );
+ }
+ }
+ },
+
+ queue: function( elem, type, data ) {
+ if ( elem ) {
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type, undefined, true );
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data), true );
+ } else {
+ q.push( data );
+ }
+ }
+ return q || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift(),
+ defer;
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue", true );
+ handleQueueMarkDefer( elem, type, "queue" );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {
+ count++;
+ tmp.done( resolve );
+ }
+ }
+ resolve();
+ return defer.promise();
+ }
+});
+
+function handleQueueMarkDefer( elem, type, src ) {
+ var deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ defer = jQuery._data( elem, deferDataKey );
+ if ( defer &&
+ ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
+ ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
+ // Give room for hard-coded callbacks to fire first
+ // and eventually mark/queue something else on the element
+ setTimeout( function() {
+ if ( !jQuery._data( elem, queueDataKey ) &&
+ !jQuery._data( elem, markDataKey ) ) {
+ jQuery.removeData( elem, deferDataKey, true );
+ defer.fire();
+ }
+ }, 0 );
+ }
+}
+
+
+
+jQuery.Callbacks = function( flags ) {
+
+ // Convert flags from String-formatted to Object-formatted
+ // (we check in cache first)
+ flags = flags ? ( /*flagsCache[ flags ] || */createFlags( flags ) ) : {};
+
+ var // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = [],
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Add one or several callbacks to the list
+ add = function( args ) {
+ var i,
+ length,
+ elem,
+ type,
+ actual;
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ // Inspect recursively
+ add( elem );
+ } else if ( type === "function" ) {
+ // Add if not in unique mode and callback is not in
+ if ( !flags.unique || !self.has( elem ) ) {
+ list.push( elem );
+ }
+ }
+ }
+ },
+ // Fire callbacks
+ fire = function( context, args ) {
+ args = args || [];
+ memory = !flags.memory || [ context, args ];
+ firing = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
+ memory = true; // Mark as halted
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( !flags.once ) {
+ if ( stack && stack.length ) {
+ memory = stack.shift();
+ self.fireWith( memory[ 0 ], memory[ 1 ] );
+ }
+ } else if ( memory === true ) {
+ self.disable();
+ } else {
+ list = [];
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ var length = list.length;
+ add( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away, unless previous
+ // firing was halted (stopOnFalse)
+ } else if ( memory && memory !== true ) {
+ firingStart = length;
+ fire( memory[ 0 ], memory[ 1 ] );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ var args = arguments,
+ argIndex = 0,
+ argLength = args.length;
+ for ( ; argIndex < argLength ; argIndex++ ) {
+ for ( var i = 0; i < list.length; i++ ) {
+ if ( args[ argIndex ] === list[ i ] ) {
+ // Handle firingIndex and firingLength
+ if ( firing ) {
+ if ( i <= firingLength ) {
+ firingLength--;
+ if ( i <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ // Remove the element
+ list.splice( i--, 1 );
+ // If we have some unicity property then
+ // we only need to do this once
+ if ( flags.unique ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+ return this;
+ },
+ // Control if a given callback is in the list
+ has: function( fn ) {
+ if ( list ) {
+ var i = 0,
+ length = list.length;
+ for ( ; i < length; i++ ) {
+ if ( fn === list[ i ] ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory || memory === true ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( stack ) {
+ if ( firing ) {
+ if ( !flags.once ) {
+ stack.push( [ context, args ] );
+ }
+ } else if ( !( flags.once && memory ) ) {
+ fire( context, args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!memory;
+ }
+ };
+
+ return self;
+};
+
+
+
+jQuery.fn.extend({
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
+ count++;
+ tmp.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise();
+ }
+});
+})();
\ No newline at end of file
diff --git a/ajax/libs/jquery-noty/2.2.2/themes/default.js b/ajax/libs/jquery-noty/2.2.2/themes/default.js
new file mode 100644
index 000000000..b93ba1094
--- /dev/null
+++ b/ajax/libs/jquery-noty/2.2.2/themes/default.js
@@ -0,0 +1,156 @@
+(function($) {
+
+ $.noty.themes.defaultTheme = {
+ name: 'defaultTheme',
+ helpers: {
+ borderFix: function() {
+ if (this.options.dismissQueue) {
+ var selector = this.options.layout.container.selector + ' ' + this.options.layout.parent.selector;
+ switch (this.options.layout.name) {
+ case 'top':
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
+ $(selector).last().css({borderRadius: '0px 0px 5px 5px'}); break;
+ case 'topCenter': case 'topLeft': case 'topRight':
+ case 'bottomCenter': case 'bottomLeft': case 'bottomRight':
+ case 'center': case 'centerLeft': case 'centerRight': case 'inline':
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
+ $(selector).first().css({'border-top-left-radius': '5px', 'border-top-right-radius': '5px'});
+ $(selector).last().css({'border-bottom-left-radius': '5px', 'border-bottom-right-radius': '5px'}); break;
+ case 'bottom':
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
+ $(selector).first().css({borderRadius: '5px 5px 0px 0px'}); break;
+ default: break;
+ }
+ }
+ }
+ },
+ modal: {
+ css: {
+ position: 'fixed',
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#000',
+ zIndex: 10000,
+ opacity: 0.6,
+ display: 'none',
+ left: 0,
+ top: 0
+ }
+ },
+ style: function() {
+
+ this.$bar.css({
+ overflow: 'hidden',
+ background: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAoCAYAAAAPOoFWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPZJREFUeNq81tsOgjAMANB2ov7/7ypaN7IlIwi9rGuT8QSc9EIDAsAznxvY4pXPKr05RUE5MEVB+TyWfCEl9LZApYopCmo9C4FKSMtYoI8Bwv79aQJU4l6hXXCZrQbokJEksxHo9KMOgc6w1atHXM8K9DVC7FQnJ0i8iK3QooGgbnyKgMDygBWyYFZoqx4qS27KqLZJjA1D0jK6QJcYEQEiWv9PGkTsbqxQ8oT+ZtZB6AkdsJnQDnMoHXHLGKOgDYuCWmYhEERCI5gaamW0bnHdA3k2ltlIN+2qKRyCND0bhqSYCyTB3CAOc4WusBEIpkeBuPgJMAAX8Hs1NfqHRgAAAABJRU5ErkJggg==') repeat-x scroll left top #fff"
+ });
+
+ this.$message.css({
+ fontSize: '13px',
+ lineHeight: '16px',
+ textAlign: 'center',
+ padding: '8px 10px 9px',
+ width: 'auto',
+ position: 'relative'
+ });
+
+ this.$closeButton.css({
+ position: 'absolute',
+ top: 4, right: 4,
+ width: 10, height: 10,
+ background: "url(data:image/png;base64,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)",
+ display: 'none',
+ cursor: 'pointer'
+ });
+
+ this.$buttons.css({
+ padding: 5,
+ textAlign: 'right',
+ borderTop: '1px solid #ccc',
+ backgroundColor: '#fff'
+ });
+
+ this.$buttons.find('button').css({
+ marginLeft: 5
+ });
+
+ this.$buttons.find('button:first').css({
+ marginLeft: 0
+ });
+
+ this.$bar.bind({
+ mouseenter: function() { $(this).find('.noty_close').stop().fadeTo('normal',1); },
+ mouseleave: function() { $(this).find('.noty_close').stop().fadeTo('normal',0); }
+ });
+
+ switch (this.options.layout.name) {
+ case 'top':
+ this.$bar.css({
+ borderRadius: '0px 0px 5px 5px',
+ borderBottom: '2px solid #eee',
+ borderLeft: '2px solid #eee',
+ borderRight: '2px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ break;
+ case 'topCenter': case 'center': case 'bottomCenter': case 'inline':
+ this.$bar.css({
+ borderRadius: '5px',
+ border: '1px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ this.$message.css({fontSize: '13px', textAlign: 'center'});
+ break;
+ case 'topLeft': case 'topRight':
+ case 'bottomLeft': case 'bottomRight':
+ case 'centerLeft': case 'centerRight':
+ this.$bar.css({
+ borderRadius: '5px',
+ border: '1px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ this.$message.css({fontSize: '13px', textAlign: 'left'});
+ break;
+ case 'bottom':
+ this.$bar.css({
+ borderRadius: '5px 5px 0px 0px',
+ borderTop: '2px solid #eee',
+ borderLeft: '2px solid #eee',
+ borderRight: '2px solid #eee',
+ boxShadow: "0 -2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ break;
+ default:
+ this.$bar.css({
+ border: '2px solid #eee',
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
+ });
+ break;
+ }
+
+ switch (this.options.type) {
+ case 'alert': case 'notification':
+ this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); break;
+ case 'warning':
+ this.$bar.css({backgroundColor: '#FFEAA8', borderColor: '#FFC237', color: '#826200'});
+ this.$buttons.css({borderTop: '1px solid #FFC237'}); break;
+ case 'error':
+ this.$bar.css({backgroundColor: 'red', borderColor: 'darkred', color: '#FFF'});
+ this.$message.css({fontWeight: 'bold'});
+ this.$buttons.css({borderTop: '1px solid darkred'}); break;
+ case 'information':
+ this.$bar.css({backgroundColor: '#57B7E2', borderColor: '#0B90C4', color: '#FFF'});
+ this.$buttons.css({borderTop: '1px solid #0B90C4'}); break;
+ case 'success':
+ this.$bar.css({backgroundColor: 'lightgreen', borderColor: '#50C24E', color: 'darkgreen'});
+ this.$buttons.css({borderTop: '1px solid #50C24E'});break;
+ default:
+ this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); break;
+ }
+ },
+ callback: {
+ onShow: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); },
+ onClose: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); }
+ }
+ };
+
+})(jQuery);
diff --git a/ajax/libs/jquery-noty/package.json b/ajax/libs/jquery-noty/package.json
index cdd9c2e7f..f7262a711 100644
--- a/ajax/libs/jquery-noty/package.json
+++ b/ajax/libs/jquery-noty/package.json
@@ -1,7 +1,7 @@
{
"name": "jquery-noty",
"filename": "jquery.noty.js",
- "version": "2.0.3",
+ "version": "2.2.2",
"description": "jQuery plugin that makes it easy to create alert, success, error, warning, information or confirmation messages as an alternative the standard alert dialog.",
"homepage": "http://needim.github.com/noty/",
"keywords": [
@@ -15,7 +15,6 @@
{
"name": "Nedim Arabacı",
"web": "http://ned.im"
-
}
],
"repositories": [