/*
 * * * * * * * * * * * * * * * * * * * * * *
 *	  s l a s h j q u e r  y . c  o m
 * Tooltip v. 1 - jQuery tooltip widget
 * Copyright (c) 2008 Rasmus Styrk
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * * * * * * * * * * * * * * * * * * * * * *
*/
 
(function($){
	$.fn.tooltip = function(options) 
	{	  
		/*	Default values
		*/
		var defaults = {
			offsetY: 15,
			offsetX: 15,
			delay: 100,
			opacity: 0.85
		};
		
		var options = $.extend(defaults, options);
		var currentTitle;
		var currentObj;
		var trackMouse = true;
		var d = $("body");
		
		var tb = $("<div id='tooltip'></div>");
		
		d.append(tb);
		$("#tooltip").hide();
		$("#tooltip").animate({ opacity: options.opacity });
		
		return this.each
		(
			function()
			{
				var obj = $(this);
				
				if(obj.attr("title"))
				{
					obj.hover
					(
						function()
						{
							currentObj = obj;
							currentTitle = obj.attr("title");
							
							if(obj.attr("track") == "false") trackMouse = false;

							$("#tooltip").html(currentTitle);
							
							this.title = "";
							this.alt = "";
							
							setTimeout(showTooltip, options.delay);
							
							$(d).bind("mousemove", update)
						},
						function()
						{	
							obj.attr("title", currentTitle);
							$("#tooltip").hide();

							currentTitle = null;
							currentObj = null;
							trackMouse = true;
						}
					);
					
					obj.click
					(
						function()
						{
							$("#tooltip").hide();
						}
					);
				}
			}
		);
		
		function showTooltip(e)
		{
			if(currentTitle)
			{
				$("#tooltip").fadeIn("fast");
			}
		}
		
		function update(e)
		{
			if(currentTitle == null)
			{
				$("#tooltip").hide();
				$(d).unbind("mousemove", update);
			}
			else
			{
				if(trackMouse) 
				{
					$("#tooltip").css({
						top: (options.offsetY+e.pageY)+"px",
						left: (options.offsetX+e.pageX)+"px"
					});
				}
				else
				{
					if(currentObj)
					{
						var offset = currentObj.offset();
						$("#tooltip").css({
							top: (options.offsetY+5+offset.top)+"px",
							left: (options.offsetX+5+offset.left)+"px"
						});
					}
				}	
			}
		}
	}
})(jQuery);  