(function($) {
	if(typeof jQuery.fn.niceTitles == 'function') { return; }
	jQuery.fn.niceTitles = function(args) {
		var elements = $(this);

		var options = $.extend({
			'includeCSS': true,
			'includeURL': true,
			'cleanUpMailtos': true,
			'delay': 0.1,
		},args);
		
		if(options.includeCSS && elements.size()) {
			$('head').append($(jQuery("<style type=\"text/css\">div.nicetitles-tooltip { position: absolute; bottom: 152%; left: -10px; padding: 12px 14px; background: #CCFF99; border:1px solid #008000; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; text-align: left; text-shadow: #fff 0px 1px 1px; color: #393939; font: italic normal 13px/15px 'Lucida Grande', 'Segoe UI', 'Tahoma', 'Helvetica', 'Arial', clean, sans-serif; z-index: 2; } div.nicetitles-tooltip span { display: block; white-space: nowrap; } div.nicetitles-tooltip span.nicetitles-name { font-weight: bold; } div.nicetitles-tooltip span.nicetitles-url { margin-bottom: 1px; }</style>")));
		}
		
		elements.each(function() {
			var elem = $(this);
			var title = elem.attr('title');
			if(title != '') {
				elem.removeAttr('title');
				elem.attr({'oldTitle': title});
				if(elem.css('position') == 'static') { elem.css({'position': 'relative'}); }
				var tooltip = $(jQuery('<div class="nicetitles-tooltip"></div>'));
				tooltip.append($(jQuery('<span class="nicetitles-name">' + title + '</span>')));
				if(options.includeURL && elem.is('[href]')) {
					tooltip.append($(jQuery('<span class="nicetitles-url">' + (options.cleanUpMailtos ? elem.attr('href').replace(/^mailto:/i,'Email: ') : elem.attr('href')) + '</span>')));
				}
				tooltip.hide().appendTo(elem);
				
				var isHovered = false;
				elem.hover(function() {
					isHovered = true;
					setTimeout(function() {
						if(isHovered) {
							tooltip.fadeIn('fast');
						}
					},(options.delay * 1000));
				}, function() {
					isHovered = false;
					tooltip.fadeOut('fast');
				});
				tooltip.hover(function() {
					isHovered = false;
					tooltip.fadeOut('fast');
				}, function() {
					// Do nothing
				});
				
				elem.click(function() {
					tooltip.fadeOut('fast');
				});
			}
		});
		
		return elements;
	}
})(jQuery);
