Files
drmaterac.pl/modules/pm_advancedsearch4/views/js/jGrowl/jquery.jgrowl_minimized.js
2025-01-06 20:47:25 +01:00

355 lines
10 KiB
JavaScript

(function($) {
$.jGrowl = function(m, o) {
if ($('#jGrowl').size() == 0)
$('<div id="jGrowl"></div>').addClass(
(o && o.position) ? o.position
: $.jGrowl.defaults.position).appendTo('body');
$('#jGrowl').jGrowl(m, o);
};
$.fn.jGrowl = function(m, o) {
if ($.isFunction(this.each)) {
var args = arguments;
return this.each(function() {
var self = this;
if ($(this).data('jGrowl.instance') == undefined) {
$(this).data('jGrowl.instance',
$.extend(new $.fn.jGrowl(), {
notifications : [],
element : null,
interval : null
}));
$(this).data('jGrowl.instance').startup(this);
}
if ($.isFunction($(this).data('jGrowl.instance')[m])) {
$(this).data('jGrowl.instance')[m].apply($(this)
.data('jGrowl.instance'), $.makeArray(args)
.slice(1));
} else {
$(this).data('jGrowl.instance').create(m, o);
}
});
}
;
};
$
.extend(
$.fn.jGrowl.prototype,
{
defaults : {
pool : 0,
header : '',
group : '',
sticky : false,
position : 'top-right',
glue : 'after',
theme : 'default',
themeState : 'highlight',
corners : '10px',
check : 250,
life : 3000,
closeDuration : 'normal',
openDuration : 'normal',
easing : 'swing',
closer : true,
closeTemplate : '&times;',
closerTemplate : '<div>[ close all ]</div>',
log : function(e, m, o) {
},
beforeOpen : function(e, m, o) {
},
afterOpen : function(e, m, o) {
},
open : function(e, m, o) {
},
beforeClose : function(e, m, o) {
},
close : function(e, m, o) {
},
animateOpen : {
opacity : 'show'
},
animateClose : {
opacity : 'hide'
}
},
notifications : [],
element : null,
interval : null,
create : function(message, o) {
var o = $.extend({}, this.defaults, o);
if (typeof o.speed !== 'undefined') {
o.openDuration = o.speed;
o.closeDuration = o.speed;
}
this.notifications.push({
message : message,
options : o
});
o.log.apply(this.element, [ this.element, message,
o ]);
},
render : function(notification) {
var self = this;
var message = notification.message;
var o = notification.options;
var notification = $(
'<div class="jGrowl-notification '
+ o.themeState
+ ' ui-corner-all'
+ ((o.group != undefined && o.group != '') ? ' '
+ o.group
: '') + '">'
+ '<div class="jGrowl-close">'
+ o.closeTemplate + '</div>'
+ '<div class="jGrowl-header">'
+ o.header + '</div>'
+ '<div class="jGrowl-message">'
+ message + '</div></div>').data(
"jGrowl", o).addClass(o.theme).children(
'div.jGrowl-close').bind(
"click.jGrowl",
function() {
$(this).parent().trigger(
'jGrowl.close');
}).parent();
$(notification)
.bind(
"mouseover.jGrowl",
function() {
$(
'div.jGrowl-notification',
self.element).data(
"jGrowl.pause", true);
})
.bind(
"mouseout.jGrowl",
function() {
$(
'div.jGrowl-notification',
self.element).data(
"jGrowl.pause", false);
})
.bind(
'jGrowl.beforeOpen',
function() {
if (o.beforeOpen.apply(
notification, [
notification,
message, o,
self.element ]) != false) {
$(this).trigger(
'jGrowl.open');
}
})
.bind(
'jGrowl.open',
function() {
if (o.open.apply(notification,
[ notification,
message, o,
self.element ]) != false) {
if (o.glue == 'after') {
$(
'div.jGrowl-notification:last',
self.element)
.after(
notification);
} else {
$(
'div.jGrowl-notification:first',
self.element)
.before(
notification);
}
$(this)
.animate(
o.animateOpen,
o.openDuration,
o.easing,
function() {
if ($.browser.msie
&& (parseInt(
$(
this)
.css(
'opacity'),
10) === 1 || parseInt(
$(
this)
.css(
'opacity'),
10) === 0))
this.style
.removeAttribute('filter');
if ($(
this)
.data(
"jGrowl") != null)
$(
this)
.data(
"jGrowl").created = new Date();
$(
this)
.trigger(
'jGrowl.afterOpen');
});
}
})
.bind(
'jGrowl.afterOpen',
function() {
o.afterOpen.apply(notification,
[ notification,
message, o,
self.element ]);
})
.bind(
'jGrowl.beforeClose',
function() {
if (o.beforeClose.apply(
notification, [
notification,
message, o,
self.element ]) != false)
$(this).trigger(
'jGrowl.close');
})
.bind(
'jGrowl.close',
function() {
$(this).data(
'jGrowl.pause', true);
$(this)
.animate(
o.animateClose,
o.closeDuration,
o.easing,
function() {
if ($
.isFunction(o.close)) {
if (o.close
.apply(
notification,
[
notification,
message,
o,
self.element ]) !== false)
$(
this)
.remove();
} else {
$(
this)
.remove();
}
});
}).trigger('jGrowl.beforeOpen');
if (o.corners != '' && $.fn.corner != undefined)
$(notification).corner(o.corners);
if ($('div.jGrowl-notification:parent',
self.element).size() > 1
&& $('div.jGrowl-closer', self.element)
.size() == 0
&& this.defaults.closer != false) {
$(this.defaults.closerTemplate)
.addClass(
'jGrowl-closer ui-state-highlight ui-corner-all')
.addClass(this.defaults.theme)
.appendTo(self.element)
.animate(this.defaults.animateOpen,
this.defaults.speed,
this.defaults.easing)
.bind(
"click.jGrowl",
function() {
$(this)
.siblings()
.trigger(
"jGrowl.beforeClose");
if ($
.isFunction(self.defaults.closer)) {
self.defaults.closer
.apply(
$(
this)
.parent()[0],
[ $(
this)
.parent()[0] ]);
}
});
}
;
},
update : function() {
$(this.element)
.find('div.jGrowl-notification:parent')
.each(
function() {
if ($(this).data("jGrowl") != undefined
&& $(this).data(
"jGrowl").created != undefined
&& ($(this).data(
"jGrowl").created
.getTime() + parseInt($(
this).data(
"jGrowl").life)) < (new Date())
.getTime()
&& $(this).data(
"jGrowl").sticky != true
&& ($(this).data(
"jGrowl.pause") == undefined || $(
this).data(
"jGrowl.pause") != true)) {
$(this)
.trigger(
'jGrowl.beforeClose');
}
});
if (this.notifications.length > 0
&& (this.defaults.pool == 0 || $(
this.element).find(
'div.jGrowl-notification:parent')
.size() < this.defaults.pool))
this.render(this.notifications.shift());
if ($(this.element).find(
'div.jGrowl-notification:parent').size() < 2) {
$(this.element).find('div.jGrowl-closer')
.animate(this.defaults.animateClose,
this.defaults.speed,
this.defaults.easing,
function() {
$(this).remove();
});
}
},
startup : function(e) {
this.element = $(e).addClass('jGrowl').append(
'<div class="jGrowl-notification"></div>');
this.interval = setInterval(function() {
$(e).data('jGrowl.instance').update();
}, parseInt(this.defaults.check));
if ($.browser.msie
&& parseInt($.browser.version) < 7
&& !window["XMLHttpRequest"]) {
$(this.element).addClass('ie6');
}
},
shutdown : function() {
$(this.element).removeClass('jGrowl').find(
'div.jGrowl-notification').remove();
clearInterval(this.interval);
},
close : function() {
$(this.element).find('div.jGrowl-notification')
.each(
function() {
$(this).trigger(
'jGrowl.beforeClose');
});
}
});
$.jGrowl.defaults = $.fn.jGrowl.prototype.defaults;
})($)