PHP Classes

File: nibble-flash-messaging/notice.js

Recommend this page to a friend!
  Classes of Luke Rotherfield   Nibble forms   nibble-flash-messaging/notice.js   Download  
File: nibble-flash-messaging/notice.js
Role: Application script
Content type: text/plain
Description: javascript flash messaging script
Class: Nibble forms
Generate and validate HTML forms with PHP
Author: By
Last change:
Date: 12 years ago
Size: 3,953 bytes
 

Contents

Class file image Download
/**
* 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 <tim@timbenniks.com>
* @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?
                title: 'system message', //Title value
                type: 'notice' // could also be error, succes
            }
           
            // declare varaibles
            var options, noticeWrapAll, noticeItemOuter, noticeItemInner, noticeItemClose;
                               
            options = jQuery.extend({}, defaults, options);
            noticeWrapAll = (!jQuery('.notice-wrap').length) ? jQuery('<div></div>').addClass('notice-wrap').appendTo('body') : jQuery('.notice-wrap');
            noticeItemOuter = jQuery('<div></div>').addClass('notice-item-wrapper');
            noticeItemInner = jQuery('<div></div>').hide().addClass('notice-item ' + options.type).appendTo(noticeWrapAll).html('<h2>'+options.title+'</h2>'+'<p>'+options.text+'</p>').animate(options.inEffect, options.inEffectDuration).wrap(noticeItemOuter);
            noticeItemClose = jQuery('<div></div>').addClass('notice-item-close').prependTo(noticeItemInner).html('x').click(function() { jQuery.noticeRemove(noticeItemInner) });
           
            // hmmmz, zucht
            if(navigator.userAgent.match(/MSIE 6/i))
            {
                noticeWrapAll.css({top: document.documentElement.scrollTop});
            }
           
            if(!options.stay)
            {
                setTimeout(function()
                {
                    jQuery.noticeRemove(noticeItemInner);
                },
                options.stayTime);
            }
        },
       
        noticeRemove: function(obj)
        {
            obj.animate({opacity: '0'}, 600, function()
            {
                obj.parent().animate({height: '0px'}, 300, function()
                {
                    obj.parent().remove();
                });
            });
        }
    });
})(jQuery);
/**
 * Some additional functions to loop through the message divs
 * and convert them into notifications using all of the provided
 * arguments
 */
function message(message_title,message_text,lifetime,sticky,message_type){
  jQuery.noticeAdd({
    text: message_text,
    title: message_title,
    type: message_type,
    stayTime: lifetime,
    stay: sticky
  });

  return false;
}
$(document).ready(function () {
  $('.message').each(function(){
    if($(this).html() != ''){
      message($(this).find('input[name="title"]').val(),$(this).find('input[name="message"]').val(),$(this).find('input[name="stayTime"]').val(),$(this).find('input[name="stay"]').val(),$(this).find('input[name="type"]').val());
      $(this).remove();
    }
  });
});