﻿/*
	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"><p></p></div></div>')
	},

	displayMsg: function(msg, error) {
		if (msg == '')
			return;

		clearTimeout(humanMsg.t2);

		// Inject message
		jQuery('#'+humanMsg.msgID+' p').html(msg)
		
		var className =  (error) ? 'error-message' : 'success-message';		
		var messageContainer = jQuery('#'+humanMsg.msgID+' div');
		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 + '")', 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();
})