;(function($) {

function getTooltipDefaults() {
	return { delay: 100,
		followMouse: false,
		fadeIn: true,
		x: 20, //pixel offset
		y: -10, //pixel offset
		positionTooltip: function (event,x,y) {
			$('div#tooltip').css({"top":event.pageY + y, "left":event.pageX + x});
		}
  	};
}

$.fn.tooltip = function(parameters) {
	$(this).each(function() {
		parameters = jQuery.extend(getTooltipDefaults(), parameters);

		function showTooltip (event) {
			hideTooltip();
			var text = $(this).attr('tiptext');
			
			if (parameters.fadeIn) {
				$('<div id="tooltip" class="hidden">' + text + '</div>')
					.css({opacity:0.0})
					.animate({opacity: 1}, 300)
					.appendTo('body');
			} else {
				$('<div id="tooltip" class="hidden">' + text + '</div>')
					.appendTo('body');
			}
				
			parameters.positionTooltip(event,parameters.x,parameters.y);
			
			setTimeout( "$('div#tooltip').removeClass('hidden');", parameters.delay);
			
			tootltipWidth = $('div#tooltip').width();
			
        	if ( tootltipWidth > 250 ) {
				$('div#tooltip').width(250);
			}
		} 
		// end showToolTip

		function hideTooltip () {
			$('div#tooltip').remove();
		} 
		// end hideToolTip
	
		if (parameters.text != null) {
			$(this).attr("tiptext", parameters.text);
		} else {
			$(this).attr("tiptext", $(this).attr("title"));
		}

		$(this).removeAttr('title');
		$(this).removeAttr('alt');
		
		if (parameters.followMouse) {
			$(this).mousemove(positionTooltip);
		}
		$(this).hover(showTooltip, hideTooltip);
		
	});
};

})(jQuery);	
