;(function($) {
    $.fn.msgBar = function(options) {
        var defaults = {
            height:'20px', // 5px of padding will be added to the top and bottom with the default CSS.
            backgroundColor:'#e4f5ff',
            borderColor:'#fff',
            textColor:'#222',
            linkColor:'#FA7D00',
            linkHover:'#000ff',
            msgBarIcon:'/images/roo.png',
            msgBtnIcon:'/images/bulb.png',
            message: 'Hello, world.',
            collapsable: true,
            delay:3
        }
      
        var msgbar = this;
        msgbar.settings = $.extend({}, defaults, options);

        var bar = $('<div>')
            .attr('id', 'msg_bar')
            .css({
                "height":msgbar.settings.height,
                "line-height":msgbar.settings.height,
                "background-color": msgbar.settings.backgroundColor,
                "color": msgbar.settings.textColor,
                "border-color": msgbar.settings.borderColor,
                "display":"none",
                "collapsable":false
            });

        var msg = $('<div>')
            .css({
               "background-image": "url("+msgbar.settings.msgBarIcon+")",
               "width": $('body').width()-120+"px",
               "float":"left"
            })
            .addClass('msg')
            .html(msgbar.settings.message);

        var msg_close = $('<a>')
            .attr('href', '#')
            .html('&times;').css({
                "color": msgbar.settings.textColor,
                "text-decoration":"none",
                "display":"block",
                "width":"20px",
                "float":"right",
                "text-align":"right",
                "padding-right":"25px"
            })
            .bind('click', function(e) {
                e.preventDefault();
                msgbar.closeMsg();
            });

        var toggle_btn = $('<a>')
            .attr('id', 'msg_bar_btn')
            .css({
                "width":"20px",
                "height":"20px",
                "line-height":"20px",
                "background-color": msgbar.settings.backgroundColor,
                "background-image": "url("+msgbar.settings.msgBtnIcon+")",
                "color": msgbar.settings.textColor,
                "border-color": msgbar.settings.borderColor,
                "margin-left":Math.ceil((bar.height() + 39)*-1),
                "display":"none"
            })
            .text('+').bind('click', function(e) {
                e.preventDefault();
                msgbar.openMsg();
            });

        var msg_timer = setTimeout(function() {
            if(msgbar.settings.collapsable===true) {
                $('body').prepend(
                    bar .append(msg)
                        .append(msg_close)
                   .slideDown()
               );
                $('body').prepend(toggle_btn);
            } else {
                $('body').prepend(
                    bar .append(msg)
                   .slideDown()
                );
            }
        }, msgbar.settings.delay*1000)

        msgbar.newMsg = function(msg) {
            $('#msg_bar').slideUp(function() {
                $('#msg_bar .msg').html(msg);
                msgbar.openMsg();
            });   
        }
        
        msgbar.openMsg = function() {
            $('#msg_bar_btn').hide();
            $('#msg_bar').slideDown();
        }
        
        msgbar.closeMsg = function() {
            $('#msg_bar').slideUp(function() {
                $('#msg_bar_btn').show();
            });   
        }

        $('head').append('<style type="text/css"> #msg_bar a { color: '+msgbar.settings.linkColor+' } #msg_bar a:hover { color: '+msgbar.settings.linkHover+' } </style>');

        return msgbar;
    }
})(jQuery);

