/* 
* Messagefy
* Copyright 2010 Josemi Liébana
* http://www.josemi-liebana.com
*
* Version 1.0   -   Updated: Apr. 25, 2010
*
*
* This plugin will create a centered window for a message system
*
* @param string msg
* @param string customClass
* @param Object speed
*   integer timeOut
*   integer fadeOut
* @param bool sticky
* @param Object css
*   background
*   color
*   font-family
*   font-size
*   max-width
*   padding
*   margin
*   text-align
*   opacity
*   -moz-border-radius
*   -webkit-border-radius
*   border-radius
*
* ussage: ("#message").messagefy(msg: 'My message');
*
*/

(function($) {
    $.fn.extend({
        messagefy : function(options) {

           // Defaults settings
           var defaults = {
             msg: '',
             sticky: false,
             customClass: '',
             speed: {
                timeOut: 1000,
                fadeOut: 2000
             },
             css: {
                 'background': '#111111',
                 'color': '#ffffff',
                 'font-family': 'Georgia,Times New Roman,sanf-serif',
                 'font-size': '18',
                 'font-weight': 'bold',
                 'max-width': '600px',
                 'padding': '10px 20px',
                 'margin': '0',
                 'text-align': 'center',
                 'opacity': '0.8',
                 '-moz-border-radius': '10px',
                 '-webkit-border-radius': '10px',
                 'border-radius': '10px'
             }
           };

           // Needed for merge correctly the options
           var settings = $.extend(true, {}, defaults, options);

           var element = this;

           $(element).css(settings.css).css({
                'position': 'fixed',
                'top' : '50%',
                'left' : '50%',
                'visibility': 'hidden',
               /*'-moz-border-radius-topleft': '0',*/
                'z-index': '9999'
               }).addClass(settings.customClass);

           return this.each(function(){
               var message = $(this);

               function messagefy_close(element) {
                    $(element).fadeOut(settings.speed.fadeOut, function() {
                        $(this).css({
                            'opacity' : '0.2',
                            'visibility' : 'hidden'
                        });
                    });
               }

               var close_Button_html = '\
                     <div id="messagify-close-button" style="position: absolute;\n\
                                top: -12px; left: -12px;\n\
                                background: ' + settings.css.background + ';\n\
                                -moz-border-radius: 10px 10px 0 10px;\n\
                                padding: 5px 10px">\n\
                        <a onclick="$(this).parent().parent().fadeOut(' + settings.speed.fadeOut
                                        + ',function() {\n\
                               $(this).css({\n\
                                    \'opacity\' : \'0.2\',\n\
                                    \'visibility\' : \'hidden\'\n\
                                });\n\
                            });"\n\
                            style="cursor: pointer; display: block;">X</a>\n\
                    </div>';

               if (settings.msg != '') {
                   if (settings.sticky) {
                       $(element).css('-moz-border-radius-topleft', '0');
                        $(message).html(close_Button_html + settings.msg);
                   } else {
                        $(message).html(settings.msg);
                   }
                    $(message).css({
                        'opacity' : settings.opacity,
                        'margin-top': '-' + $(message).height() + 'px',
                        'margin-left': '-' + $(message).width()/2 + 'px',
                        'visibility' : 'visible',
                        'display'   : 'inline'
                    });

                    if (settings.sticky == false) {
                        setTimeout(function() {
                            messagefy_close(message);
                        }, settings.speed.timeOut );
                    }                   
               }
           });

        }
    });
})(jQuery);



