;(function($) {

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

function hideTooltip () {
	$('div#tooltip').remove();
}

$.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: 0.85}, 1000) //keep in sync with css opacity
					.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);
		}
	
		if (parameters.text != '') {
			$(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);	

