/*
	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 = .9;

        if (msgOpacity != undefined)
            humanMsg.msgOpacity = parseFloat(msgOpacity);

        // Inject the message structure
        jQuery(appendTo).append('<div id="' + humanMsg.msgID + '" class="humanMsg"><div class="humanMsgContent"></div><div class="round"></div></div> <div id="' + humanMsg.logID + '"><p>' + logName + '</p><ul></ul></div>')

        jQuery('#' + humanMsg.logID + ' p').click(
			function () { jQuery(this).siblings('ul').slideToggle() }
		);

        // make sure the message moves w/ the window
        jQuery(window).scroll(function (e) {
            jQuery('#' + humanMsg.msgID + '').css('top', jQuery(window).scrollTop());
        });
    },

    displayError: function (msg) {
        humanMsg.displayMsg(msg);
        jQuery('#' + humanMsg.msgID).addClass('errorMsg');
    },

    displayMsg: function (msg) {
        if (msg == '')
            return;

        clearTimeout(humanMsg.t2);

        // Inject message
        jQuery('#' + humanMsg.msgID + ' .humanMsgContent').html(msg)

        // calculate the animation 
        var iTopEnd = jQuery(window).scrollTop(),
            iTopStart = iTopEnd - jQuery('#' + humanMsg.msgID).outerHeight(true);

        // Show message
        jQuery('#' + humanMsg.msgID + '').css('top', iTopStart).show().animate({ opacity: humanMsg.msgOpacity, top: iTopEnd }, 500, 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('#' + humanMsg.msgID).click(humanMsg.removeMsg);
        //.mousemove(humanMsg.removeMsg)
        //.keypress(humanMsg.removeMsg)

    },

    removeMsg: function () {
        // Unbind mouse & keyboard
        jQuery('#' + humanMsg.msgID).unbind('click', humanMsg.removeMsg).removeClass('errorMsg');
        //.unbind('mousemove', 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,
                    top: jQuery('#' + humanMsg.msgID).position().top - jQuery('#' + humanMsg.msgID).outerHeight(true)
                }, 500, function () { jQuery(this).hide() });
    }
};

jQuery(document).ready(function(){
	humanMsg.setup();
})
