/*
* jQuery Growl plugin
* Version 1.0.1 (10/27/2008)
* @requires jQuery v1.2.3 or later
*
* Examples at: http://fragmentedcode.com/jquery-growl
* Copyright (c) 2008 David Higgins
*
* Special thanks to Daniel Mota for inspiration:
* http://icebeat.bitacoras.com/mootools/growl/
*/
/*
USAGE:
$.growl(title, msg);
$.growl(title, msg, image);
$.growl(title, msg, image, priority);
THEME/SKIN:
You can override the default look and feel by updating these objects:
$.growl.settings.displayTimeout = 4000;
$.growl.settings.noticeTemplate = ''
+ '
'
+ ''
+ '
'
+ ' '
+ '
%title%
'
+ '
%message%
'
+ '
'
+ ''
+ '
';
$.growl.settings.noticeCss = {
position: 'relative'
};
To change the 'dock' look, and position:
$.growl.settings.dockTemplate = '';
$.growl.settings.dockCss = {
position: 'absolute',
top: '10px',
right: '10px',
width: '300px'
};
The dockCss will allow you to 'dock' the notifications to a specific area
on the page, such as TopRight (the default) or TopLeft, perhaps even in a
smaller area with "overflow: scroll" enabled?
*/
(function($) {
$.growl = function(title,message,image,priority) { notify(title,message,image,priority); }
$.growl.version = "1.0.0-b2";
function create(rebuild) {
var instance = document.getElementById('growlDock');
if(!instance || rebuild) {
instance = $(jQuery.growl.settings.dockTemplate).attr('id', 'growlDock').addClass('growl');
if(jQuery.growl.settings.defaultStylesheet) {
$('head').append('');
}
} else {
instance = $(instance);
}
$('body').append(instance.css(jQuery.growl.settings.dockCss));
return instance;
};
function r(text, expr, val) {
while(expr.test(text)) {
text = text.replace(expr, val);
}
return text;
};
function notify(title,message,image,priority) {
var instance = create();
var html = jQuery.growl.settings.noticeTemplate;
if(typeof(html) == 'object') html = $(html).html();
html = r(html, /%message%/, (message?message:''));
html = r(html, /%title%/, (title?title:''));
html = r(html, /%image%/, (image?image:jQuery.growl.settings.defaultImage));
html = r(html, /%priority%/, (priority?priority:'normal'));
var notice = $(html)
.hide()
.css(jQuery.growl.settings.noticeCss)
.fadeIn(jQuery.growl.settings.notice);;
$.growl.settings.noticeDisplay(notice);
instance.append(notice);
$('a[@rel="close"]', notice).click(function() {
notice.remove();
});
if ($.growl.settings.displayTimeout > 0) {
setTimeout(function(){
jQuery.growl.settings.noticeRemove(notice, function(){
notice.remove();
});
}, jQuery.growl.settings.displayTimeout);
}
};
// default settings
$.growl.settings = {
dockTemplate: '',
dockCss: {
position: 'fixed',
top: '10px',
right: '10px',
width: '300px',
zIndex: 50000
},
noticeTemplate:
'