
(function ($) {
    $.widget("ui.messages", {
        container: null,
        init: function() {
            $uimessagesInitialized = true;
            $.ui.messages = this;
            
            $.ui.messages.list = [];

            this.container = $('<div id="mensagens" />');
            this.element.prepend(this.container);

            for (var i = 0; i < this.options.cache.length; i++) {
                $.addMessage(this.options.cache[i].obj, this.options.cache[i].type, this.options.cache[i].message, this.options.cache[i].callback);
            }
        },
        hideAll: function () {
            if ($.ui.messages.list.length > 0) {
				for (var i = 0; i < $.ui.messages.list.length; i++) {
                    $.ui.messages.list[i]
                    .animate({
                        opacity: 0.01
                    }, 'fast', function () {
                       $(this).slideUp('fast', function () {
                            $(this).remove();
                        });
                    });
				}
                $.ui.messages.list.splice(0, $.ui.messages.list.length);
			}
        }
    });
    $.focusMessage = function () {
        $(window).focus();
        $(document.body).parent()[0].scrollTop = $.ui.messages.container.offset().top;
    },
    $.addMessage = function (obj, type, message, callback) {
        if (obj && type && !message && !callback) {
            message = type;
            type = obj;
            obj = false;
        } else if (obj && type && message && (typeof message != 'string') && !callback) {
            callback = message;
            message = type;
            type = obj;
            obj = false;
        }
        if ($uimessagesInitialized) {
            var $o = $('<div class="mensagem mensagem-'+type+'"><div class="mensagem-corpo"><span class="mensagem-cima"><img src="/layout/pontoverde/img/pixel.gif" alt="" /></span><span class="mensagem-conteudo"><a href="javascript:;" class="mensagem-fechar"><img src="/layout/pontoverde/img/pixel.gif" alt="" /></a><span class="mensagem-icone">&nbsp;</span><span class="mensagem-texto">' + message + '</span></span><span class="mensagem-baixo"><img src="/layout/pontoverde/img/pixel.gif" alt="" /></span></div></div>');
            $.ui.messages.container.append($o);
            $o
            .css({
                opacity: 0,
                display: 'none'
            })
            .hover(function (e) {
                $(e.target).parents('.mensagem').addClass('mensagem-hover');
            }, function (e) {
                $(e.target).parents('.mensagem').removeClass('mensagem-hover');
            })
            .click(function (e) {
                $(obj).each(function () {
                    this.focus();
                }).addClass('error');
            })
            .find('.mensagem-fechar').click(function (e) {
                e.stopPropagation();
                $o.animate({
                    opacity: 0.01
                }, 'fast', function () {
                    $o.slideUp('fast', function () {
                        $o.remove();
                        var i = $.inArray($o, $.ui.messages.list);
                        if (i > -1) {
                            $.ui.messages.list.splice(i, 1);
                        }                        
                    });
                });
            });
			
			$o
			.animate({
				height: 'show'
			})
			.fadeTo('fast', 1, (function () {
				$.ui.messages.container.dequeue();
				if (callback) {
					callback(this);
				}
			}));
            $.ui.messages.list.push($o);
            return this;
        } else {
            $.ui.messages.defaults.cache.push({
                obj: obj,
                type: type, 
                message: message,
                callback: callback
            });
        }
    }
})(jQuery);

$.ui.messages.defaults = {
    cache: []
};
var $uimessagesInitialized = false;

$(function () {
    var $messages = $('#conteudo').messages();
});

