(function($) { 
$.fn.toolTips = function(settings) {     
options =  { 
click: true,
offsetX:    10, 
offsetY:    -5,
delay:      500,
baseLine:   'top'
}; 
var options = $.extend(options, settings); 
return this.each(function(){ 
var $$ = $(this); 
var aTitle   = $$.attr('title') || ''; 
var aHref    = $$.attr('href')  || ''; 
var aRel     = $$.attr('rel')   || ''; 
var aToolTip = $("<div></div>");
var aCaption = '';
var aImage;
var timer;
var offsetX = 1;
var offsetY = 1;
$$.mouseover(function(e) {           
$$.attr('title', '');    
if (aTitle) { 
aCaption = '<div class="toolTip-caption"><span>'+ aTitle +'</span></div>'; 
}
if (aRel.match(/\.(png|jpg|jpeg|gif)$/)) { 
aImage = $('<img src="'+ aRel +'" />');
aToolTip = $('<div class="toolTip-thumbnail">'+ aCaption +'</div>'); 
} else if (aHref.match(/\.(png|jpg|jpeg|gif)$/)) { 
aImage = $('<img src="'+ aHref +'" />');
aToolTip = $('<div class="toolTip-picture">'+ aCaption +'</div>'); 
} else if (aTitle) {
aToolTip = $("<div class='toolTip-text'><span>"+ aTitle +"</span></div>");     
} 
aToolTip.appendTo("body").hide().css({ position:'absolute', top:0, left:0 });
if ((aImage)) {
aImage.load(function() {
aImage.prependTo(aToolTip);

offsetX = options.offsetX;
if (options.baseLine == 'bottom') {
offsetY = options.offsetY - aToolTip.height();
} else if (options.baseLine == 'middle') {
offsetY = options.offsetY - (aToolTip.height() / 2);
}
aToolTip.css({
left: parseInt(aToolTip.css('left')) + offsetX + "px",
top:  parseInt(aToolTip.css('top'))  + offsetY + "px"                            
});
});
}
$$.mousemove(function(e) { 
aToolTip.css({
left: e.pageX + offsetX + "px",
top:  e.pageY + offsetY + "px"                            
});
}); 
timer = setTimeout( function() { aToolTip.show() }, options.delay);
}) 
$$.mouseout(function(e) { 
clearTimeout(timer);
$$.attr("title", aTitle);   
$$.unbind("mousemove");      
aToolTip.remove(); 
});
$$.click(function() {
return options.click;
});     
}); 
}; 
})(jQuery); 
