(function($) {
	$.fn.imageTooltip = function(options)
	{
		//Combine the passed in options with the default settings
		settings = jQuery.extend({
			tooltipId: "thumbTooltip",
			tooltipCSS: {'border': '1px solid #000000', 'background': '#dedede', 'padding': '5px', 'z-index': '1000'},
			cursorTopOffset: 10,
			cursorLeftOffset: 10,
			fadeInDuration: 300,
			fadeOutDuration: 1000
		}, options);
		
		//Create tooltip element
		tooltip = $("<div />")
			.attr('id', settings.tooltipId)
			.css(settings.tooltipCSS)
			.css('position', 'absolute')
			.appendTo('body').hide();
		
		//Attach hover events that manage the popup
		$(this)
			.hover(showTooltip)
			.mousemove(updateTooltip)
			.mouseout(hideTooltip);
		
		function showTooltip(event)
		{
			updateTooltip(event);
			$(tooltip).stop().empty().append(
				$('<img />').attr('src', $(this).attr('rel'))
			).css('opacity', 0).show().fadeTo(settings.fadeInDuration, 1);
		}
		
		function hideTooltip(event)
		{
			$(tooltip).hide();
		}
		
		function updateTooltip(event)
		{
			var windowSize = {
				scrollLeft: $(window).scrollLeft(),
				scrollTop: $(window).scrollTop(),
				width: $(window).width(),
				height: $(window).height()
			}
			var tooltipSize = {
				width: $(tooltip).width(),
				height: $(tooltip).height()
			}
			if ( windowSize.width + windowSize.scrollLeft < event.pageX + tooltipSize.width + settings.cursorLeftOffset ) {
				$(tooltip).css("left", event.pageX - tooltipSize.width - settings.cursorLeftOffset);
			} else {
				$(tooltip).css("left", event.pageX + settings.cursorLeftOffset);
			}
			if ( windowSize.height + windowSize.scrollTop < event.pageY + tooltipSize.height + settings.cursorTopOffset ) {
				$(tooltip).css("top", event.pageY - tooltipSize.height - settings.cursorTopOffset);
			} else {
				$(tooltip).css("top", event.pageY + settings.cursorTopOffset);
			}
		}
		
		//Return original selection for chaining
		return this;
	};
})(jQuery);
