/*
HUMANIZED MESSAGES 1.0
idea - http://www.humanized.com/weblog/2006/09/11/monolog_boxes_and_transparent_messages
home - http://humanmsg.googlecode.com
*/

var humanMsg = {
    setup: function(appendTo, logName, msgOpacity) {
        humanMsg.msgID = 'humanMsg';
        humanMsg.logID = 'humanMsgLog';

        // appendTo is the element the msg is appended to
        if (appendTo == undefined)
            appendTo = 'body';

        // The text on the Log tab
        if (logName == undefined)
            logName = 'Message Log';

        // Opacity of the message
        humanMsg.msgOpacity = .8;

        if (msgOpacity != undefined)
            humanMsg.msgOpacity = parseFloat(msgOpacity);

        // Inject the message structure
        jQuery(appendTo).append('<div id="' + humanMsg.msgID + '" class="humanMsg"><div class="round"></div><p></p><div class="round"></div></div> <div id="' + humanMsg.logID + '"><ul></ul></div>')

        jQuery('#' + humanMsg.logID + ' p').click(
			function() { jQuery(this).siblings('ul').slideToggle() }
		)
    },

    displayMsg: function(msg) {
        if (msg == '')
            return;

        clearTimeout(humanMsg.t2);

        // Inject message
        jQuery('#' + humanMsg.msgID + ' p').html(msg)

        // Show message
        jQuery('#' + humanMsg.msgID + '').show().animate({ opacity: humanMsg.msgOpacity }, 200, function() {
            jQuery('#' + humanMsg.logID)
				.show().children('ul').prepend('<li>' + msg + '</li>')	// Prepend message to log
				.children('li:first').slideDown(200)				// Slide it down

            if (jQuery('#' + humanMsg.logID + ' ul').css('display') == 'none') {
                jQuery('#' + humanMsg.logID + ' p').animate({ bottom: 40 }, 200, 'linear', function() {
                    jQuery(this).animate({ bottom: 0 }, 300, 'easeOutBounce', function() { jQuery(this).css({ bottom: 0 }) })
                })
            }

        })

        // Watch for mouse & keyboard in .5s
        humanMsg.t1 = setTimeout("humanMsg.bindEvents()", 700)
        // Remove message after 5s
        humanMsg.t2 = setTimeout("humanMsg.removeMsg()", 5000)
    },

    bindEvents: function() {
        // Remove message if mouse is moved or key is pressed
        jQuery(window)
			.mousemove(humanMsg.removeMsg)
			.click(humanMsg.removeMsg)
			.keypress(humanMsg.removeMsg)
    },

    removeMsg: function() {
        // Unbind mouse & keyboard
        jQuery(window)
			.unbind('mousemove', humanMsg.removeMsg)
			.unbind('click', humanMsg.removeMsg)
			.unbind('keypress', humanMsg.removeMsg)

        // If message is fully transparent, fade it out
        if (jQuery('#' + humanMsg.msgID).css('opacity') == humanMsg.msgOpacity)
            jQuery('#' + humanMsg.msgID).animate({ opacity: 0 }, 500, function() { jQuery(this).hide() })
    }
};

jQuery(document).ready(function() {
    humanMsg.setup();
})