(function($){
	$.fn.tooltip = function(settings) {
		settings = $.extend({
				addClass: 'tooltip',
				targetOpacity: 0.9,
				offsetX: 10,
				offsetY: 10
			}, settings);
		
		var matches = this;
		
		function _initialize() {
			if (matches.length <= 0)
				return;
			
			matches.appendTo('body');
			matches.each(function(i,tt){
				var jtt = $(tt);
				var forEl = jtt.css({
						position: 'absolute',
						display: 'none'
					}).addClass(settings.addClass).attr('forElement');
				if (!!forEl) {
					var jForEl = $(forEl);
					jForEl.each(function(i,el){el._tooltip = tt});
					jForEl.hover(
						function(){$(this._tooltip).stop().css({display: 'block', opacity: 0}).fadeTo('normal',settings.targetOpacity)},
						function(){$(this._tooltip).stop().fadeOut('slow')});
				}
			});
			$(document).mousemove(function(e){matches.css({left: (e.pageX + settings.offsetX) + 'px', top: (e.pageY + settings.offsetY) + 'px'})});
		}
		
		_initialize(this);
		return this;
	}
})(jQuery);
jQuery(function(){jQuery('[rel=tooltip]').tooltip()});