/*
* jQuery Notifications plugin 1.1
*
* http://programmingmind.com
*
* Copyright (c) 2009 David Ang
*
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Version Changes
*
* 1.1 8/17/2008
* - Allow users to choose between slide or fade effect
* - Fixed fadeSpeed option settings
*
* 1.0 8/9/2008
* - Initial release
*/
(function($){
var template;
var counter = 0;
$.notifications = function(msg, options) {
counter++;
var settings = $.extend({}, $.notifications.defaults, options);
if (!template) {
template = $('
').appendTo(document.body);
}
var n = $( '' + msg + '
').hide().appendTo("#jquery-notifications");
if( settings.effect == "fade" ) {
n.fadeIn( settings.fadeSpeed );
} else {
n.slideDown( settings.fadeSpeed );
}
if (settings.stick) {
var close = $('' + settings.close + '').click(function() {
if (settings.effect == "fade") {
$(this.parentNode).fadeOut( settings.fadeSpeed, function() {
$(this).remove();
});
}
else {
$(this.parentNode).slideUp( settings.fadeSpeed, function() {
$(this).remove();
});
}
});
close.appendTo(n);
}
if (!settings.stick) {
var notificationsDelayer = delayTimer(settings.timeout);
notificationsDelayer(update, { counter: counter, effect: settings.effect, fadeSpeed : settings.fadeSpeed } );
}
};
$.notifications.success = function( msg, options ){
return $.notifications( msg, $.extend( {}, options, { type : "success"}) );
};
$.notifications.error = function( msg, options ){
return $.notifications( msg, $.extend( { stick: true }, options, { type : "error" }) );
};
$.notifications.warning = function( msg, options ){
return $.notifications( msg, $.extend( {}, options, { type : "warning" }) );
};
function update(params) {
if (params.effect == "fade") {
$("#jquery-notifications-" + params.counter).fadeOut( params.fadeSpeed, function(){
$(this).remove();
});
} else {
$("#jquery-notifications-" + params.counter).slideUp( params.fadeSpeed, function(){
$(this).remove();
});
}
}
function delayTimer(delay) {
var timer;
return function(fn, params) {
timer = clearTimeout(timer);
if (fn)
timer = setTimeout(function() {
fn(params);
}, delay);
return timer;
};
}
$.notifications.defaults = {
type: "notice",
timeout: 10000,
stick: false,
fadeSpeed : 800,
close : "x",
effect : "fade"
};
$.n = $.notifications;
})(jQuery);