// closure (function($) { // Main Function $.fn.message = function(options) { // -=main options=- // var opts = $.extend({}, $.fn.message.defaults, options); // -=Private vars=- // var vars = { timeout : null, classes : null } _debug($(this).length + ' elements found'); // -=iteration=- // return this.each(function() { var $this = $(this); // build element specific options var o = $.meta ? $.extend({}, opts, $this.data()) : opts; for (var i in o.levels) { o.level = parseInt(o.level) == i ? o.levels[i] : o.level; } for (var i in o.levels) { vars.classes += o.levels[i]+' '; } _debug('level: ' + o.level); _debug('sticky: ' + o.sticky); m = (o.callback_hide == null) ? 'not set' : 'set'; _debug('callback_hide: ' + m); sticky = o.sticky || false; if ($this.find(o.message).length < 1) { $this.prepend(''); } if (!o.back) { jQuery.data($this,'back',o.text); } if (o.back) { o.text = jQuery.data($this,'back'); } clearTimeout($.fn.message.timeout); $this.find(o.message).removeClass(vars.classes).html(o.text).addClass(o.level).hide().fadeIn(500, function() { $this.find(o.message).addClass('faded_in'); $.fn.message.set_callback_hide(o.callback_hide); if (o.callback_show) { if (typeof(o.callback_show) == 'string') { eval(o.callback_show); } if (typeof(o.callback_show) == 'function') { o.callback_show(); } } if (!o.sticky) { $.fn.message.timeout = setTimeout('$.fn.message.out()', o.timeout); } else { $.fn.message.do_callback_hide(); } }); }); // -=End of "this" iteration=- // // -=End of Main Function=- // } // -=private function for debugging=- // function _debug(message) { console.info('$.fn.message: '+message); }; // -=Public functions=- // $.fn.message.set_callback_hide = function(callback_hide) { $.fn.message.callback_hide = callback_hide; }; $.fn.message.do_callback_hide = function() { _debug('.do_callback_hide') callback_hide = $.fn.message.callback_hide; $.fn.message.callback_hide = null; if (typeof(callback_hide) == 'string') { eval(callback_hide); } if (typeof(callback_hide) == 'function') { callback_hide(); } } $.fn.message.out = function() { _debug('.out'); $('.faded_in').fadeOut(1000, function() { classes = ''; for (var i in $.fn.message.defaults.levels) { classes += $.fn.message.defaults.levels[i]+' '; } $(this).removeClass(classes); $(this).removeClass(classes); $.fn.message.do_callback_hide() }); } $.fn.message.timeout = null; // -=Default settings=- // $.fn.message.defaults = { text : '', message : '.message', level : 'info', timeout : 3000, speed_out : 1000, callback_show : null, callback_hide : null, sticky : false, levels : { '1' : 'info', '0' : 'warn', '-1' : 'error' }, back : false }; // end of closure })(jQuery);