// EZPZ Tooltip v1.0; Copyright (c) 2009 Mike Enriquez, http://theezpzway.com; Released under the MIT License
// Modified for DesignContestScript (http://www.designcontestscript.com), shrink the script to only what we need.

(function($){
	$.fn.ezpz_tooltip = function(options){
		var settings = $.extend({}, $.fn.ezpz_tooltip.defaults, options);

		return this.each(function(){
			var	content = $("#" + this.id + "-" + settings.contentSuffix);
			var targetMousedOver = $(this).mouseover(function(){
          contentInfo = getElementDimensionsAndPosition(content);
          targetInfo = getElementDimensionsAndPosition($(this));
          contentInfo = $.fn.ezpz_tooltip.positions[settings.contentPosition](contentInfo, 0, 0, settings.offset, targetInfo);
          contentInfo = keepInWindow(contentInfo);

          content.css('top', contentInfo['top']);
          content.css('left', contentInfo['left']);

          settings.showContent(content);
			  });

			if (settings.stayOnContent && this.id != "") {
				$("#" + this.id + ", #" + this.id + "-" + settings.contentSuffix).mouseover(function(){
          content.onmouseover = true;
					content.css('display', 'block');
				}).mouseout(function(){
          content.onmouseover = false;
          content.animate({delay:100}, function() {
            if (!content.onmouseover)
					    settings.hideContent(content);
          });
				});
			}
			else {
				targetMousedOver.mouseout(function(){
					settings.hideContent(content);
				})
			}

		});

		function getElementDimensionsAndPosition(element){
			var height = element.outerHeight(true);
			var width = element.outerWidth(true);
			var top = $(element).offset().top;
			var left = $(element).offset().left;
			var info = new Array();

			// Set dimensions
			info['height'] = height;
			info['width'] = width;

			// Set position
			info['top'] = top;
			info['left'] = left;

			return info;
		};

		function keepInWindow(contentInfo){
			var windowWidth = $(window).width();
			var windowTop = $(window).scrollTop();
			var output = new Array();

			output = contentInfo;

			if (contentInfo['top'] < windowTop) { // Top edge is too high
				output['top'] = windowTop;
			}
			if ((contentInfo['left'] + contentInfo['width']) > windowWidth) { // Right edge is past the window
				output['left'] = windowWidth - contentInfo['width'];
			}
			if (contentInfo['left'] < 0) { // Left edge is too far left
				output['left'] = 0;
			}

			return output;
		};
	};

	$.fn.ezpz_tooltip.positionContent = function(contentInfo, mouseX, mouseY, offset, targetInfo) {
		contentInfo['top'] = mouseY - offset - contentInfo['height'];
		contentInfo['left'] = mouseX + offset;

		return contentInfo;
	};

	$.fn.ezpz_tooltip.positions = {
		aboveRightStatic: function(contentInfo, mouseX, mouseY, offset, targetInfo) {
                        contentInfo['top'] = targetInfo['top'] - offset - contentInfo['height'];
                        contentInfo['left'] = targetInfo['left'] + targetInfo['width'] + offset;

                        return contentInfo;
		                  }
	};

	$.fn.ezpz_tooltip.defaults = {
		contentPosition: 'aboveRightStatic',
		stayOnContent: false,
    contentSuffix: 'tip',
		offset: 5,
		showContent: function(content){
			content.fadeIn('fast');
		},
		hideContent: function(content){
			content.fadeOut('fast');
		}
	};

})(jQuery);
