﻿/*
	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, msgOpacity, error) {
        humanMsg.msgID = 'humanMsg';

        // appendTo is the element the msg is appended to
        if (appendTo == undefined)
            appendTo = 'body';

        // 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 + '"><div class="message"></div></div>')
    },

    displayMsg: function(msg, error) {
        if (msg == '')
            return;

        clearTimeout(humanMsg.t2);

        if (msg.substr(0, 3) != '<p>')
            msg = '<p style="text-align: center; width:100%;display: block;">' + msg + '</p>';

        // Inject message
        jQuery('#' + humanMsg.msgID + ' div.message').html(msg);

        var className = (error) ? 'error-message' : 'success-message';
        var messageContainer = jQuery('#' + humanMsg.msgID + ' div');
        messageContainer.removeClass('error-message');
        messageContainer.removeClass('success-message');
        messageContainer.addClass(className);

        // Show message
        jQuery('#' + humanMsg.msgID).show();
        messageContainer.show().animate({ opacity: humanMsg.msgOpacity }, 200, function() { });

        // Watch for mouse & keyboard in .5s
        humanMsg.t1 = setTimeout("humanMsg.bindEvents()", 700);

        // Remove message after 5s
        humanMsg.t2 = setTimeout("humanMsg.removeMsg()", 5000);
    },

    displaySuccessMessage: function(message) {
        setTimeout('humanMsg.displayMsg("' + message + '", false)', 500);
    },

    displayErrorMessage: function(message) {
        setTimeout('humanMsg.displayMsg("' + message + '", true)', 500);
    },

    bindEvents: function() {
        // Remove message if mouse is moved or key is pressed
        jQuery('#' + humanMsg.msgID)
			.mousemove(humanMsg.removeMsg)
			.click(humanMsg.removeMsg)
			.keypress(humanMsg.removeMsg);
    },

    removeMsg: function() {
        // Unbind mouse & keyboard
        jQuery('#' + humanMsg.msgID)
			.unbind('mousemove', humanMsg.removeMsg)
			.unbind('click', humanMsg.removeMsg)
			.unbind('keypress', humanMsg.removeMsg);

        // If message is fully transparent, fade it out
        if (jQuery('#' + humanMsg.msgID + " div").css('opacity') == humanMsg.msgOpacity) {
            jQuery('#' + humanMsg.msgID + " div").animate({ opacity: 0 }, 'slow', function() { jQuery('#' + humanMsg.msgID).hide(); });
        }
    }
};

jQuery(document).ready(function(){
	humanMsg.setup();
})
