/** * jQuery.noticeAdd() and jQuery.noticeRemove() * These functions create and remove growl-like notices * * Copyright (c) 2009 Tim Benniks * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * @author Tim Benniks * @copyright 2009 timbenniks.com * @version $Id: jquery.notice.js 1 2009-01-24 12:24:18Z timbenniks $ **/ (function(jQuery) { jQuery.extend({ noticeAdd: function(options) { var defaults = { inEffect: {opacity: 'show'}, // in effect inEffectDuration: 600, // in effect duration in miliseconds stayTime: 3000, // time in miliseconds before the item has to disappear text: '', // content of the item stay: false, // should the notice item stay or not? type: 'notice' // could also be error, succes } // declare varaibles var options, noticeWrapAll, noticeItemOuter, noticeItemInner, noticeItemClose, hover = false; options = jQuery.extend({}, defaults, options); noticeWrapAll = (!jQuery('.notice-wrap').length) ? jQuery('
').addClass('notice-wrap').appendTo('body') : jQuery('.notice-wrap'); noticeItemOuter = jQuery('
').addClass('notice-item-wrapper'); noticeItemInner = jQuery('
').hide().addClass('notice-item ' + options.type).appendTo(noticeWrapAll).html('

'+options.text+'

').animate(options.inEffect, options.inEffectDuration).wrap(noticeItemOuter); noticeItemClose = jQuery('
').addClass('notice-item-close').prependTo(noticeItemInner).html('x').click(function() { jQuery.noticeRemove(noticeItemInner) }); noticeItemInner.hover(function() { hover = true; }, function () { hover = false; }); if (!options.stay) { setTimeout( function () { var noticeHover = setInterval(function () { if(!hover) { jQuery.noticeRemove(noticeItemInner); clearInterval(noticeHover); } }, 1000); }, options.stayTime); } }, noticeRemove: function(obj) { obj.animate({opacity: '0'}, 600, function() { obj.parent().animate({height: '0px'}, 300, function() { obj.parent().remove(); }); }); } }); })(jQuery);