summaryrefslogtreecommitdiff
path: root/site-media/js/jquery.jnotify.js
diff options
context:
space:
mode:
Diffstat (limited to 'site-media/js/jquery.jnotify.js')
-rw-r--r--site-media/js/jquery.jnotify.js143
1 files changed, 143 insertions, 0 deletions
diff --git a/site-media/js/jquery.jnotify.js b/site-media/js/jquery.jnotify.js
new file mode 100644
index 0000000..0366e79
--- /dev/null
+++ b/site-media/js/jquery.jnotify.js
@@ -0,0 +1,143 @@
+/**
+* jQuery.jNotify
+* jQuery Notification Engine
+*
+* Copyright (c) 2010 Fabio Franzini
+*
+* 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 notify and this permission notify 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 Fabio Franzini
+* @copyright 2010 www.fabiofranzini.com
+* @version 1
+**/
+
+(function(jQuery) {
+ jQuery.fn.jnotifyInizialize = function(options) {
+ var element = this;
+
+ var defaults = {
+ oneAtTime: false,
+ appendType: 'append'
+ };
+
+ var options = jQuery.extend({}, defaults, options);
+
+ this.addClass('notify-wrapper');
+
+ if (options.oneAtTime)
+ this.addClass('notify-wrapper-oneattime');
+
+ if (options.appendType == 'prepend' && options.oneAtTime == false)
+ this.addClass('notify-wrapper-prepend');
+
+ return this;
+ };
+ jQuery.fn.jnotifyAddMessage = function(options) {
+
+ var notifyWrapper = this;
+
+ if (notifyWrapper.hasClass('notify-wrapper')) {
+
+ var defaults = {
+ text: '',
+ type: 'message',
+ showIcon: true,
+ permanent: false,
+ disappearTime: 3000
+ };
+
+ var options = jQuery.extend({}, defaults, options);
+ var styleClass;
+ var iconClass;
+
+ switch (options.type) {
+ case 'message':
+ {
+ styleClass = 'ui-state-highlight';
+ iconClass = 'ui-icon-info';
+ }
+ break;
+ case 'error':
+ {
+ styleClass = 'ui-state-error';
+ iconClass = 'ui-icon-alert';
+ }
+ break;
+ default:
+ {
+ styleClass = 'ui-state-highlight';
+ iconClass = 'ui-icon-info';
+ }
+ break;
+ }
+
+ if (notifyWrapper.hasClass('notify-wrapper-oneattime')) {
+ this.children().remove();
+ }
+
+ var notifyItemWrapper = jQuery('<div class="jnotify-item-wrapper"></div>');
+ var notifyItem = jQuery('<div class="ui-corner-all jnotify-item"></div>')
+ .addClass(styleClass);
+
+ if (notifyWrapper.hasClass('notify-wrapper-prepend'))
+ notifyItem.prependTo(notifyWrapper);
+ else
+ notifyItem.appendTo(notifyWrapper);
+
+ notifyItem.wrap(notifyItemWrapper);
+
+ if (options.showIcon)
+ jQuery('<span class="ui-icon" style="float:left; margin-right: .3em;" />')
+ .addClass(iconClass)
+ .appendTo(notifyItem);
+
+ jQuery('<span></span>').html(options.text).appendTo(notifyItem);
+ jQuery('<div class="jnotify-item-close"><span class="ui-icon ui-icon-circle-close"/></div>')
+ .prependTo(notifyItem)
+ .click(function() { remove(notifyItem) });
+
+ // IEsucks
+ if (navigator.userAgent.match(/MSIE (\d+\.\d+);/)) {
+ notifyWrapper.css({ top: document.documentElement.scrollTop });
+ //http://groups.google.com/group/jquery-dev/browse_thread/thread/ba38e6474e3e9a41
+ notifyWrapper.removeClass('IEsucks');
+ }
+ // ------
+
+ if (!options.permanent) {
+ setTimeout(function() { remove(notifyItem); }, options.disappearTime);
+ }
+ }
+
+ function remove(obj) {
+ obj.animate({ opacity: '0' }, 600, function() {
+ obj.parent().animate({ height: '0px' }, 300,
+ function() {
+ obj.parent().remove();
+ // IEsucks
+ if (navigator.userAgent.match(/MSIE (\d+\.\d+);/)) {
+ //http://groups.google.com/group/jquery-dev/browse_thread/thread/ba38e6474e3e9a41
+ obj.parent().parent().removeClass('IEsucks');
+ }
+ // -------
+ });
+ });
+ }
+ };
+})(jQuery); \ No newline at end of file