/*
 * jQuery Simple Tooltip 0.9
 *
 * Copyright (c) 2007 Pierre Bertet (pierrebertet.net)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 */
(function($j){
	
	// viewportHeight from dimensions plugin
	$j.viewportHeight = function(){return self.innerHeight || jQuery.boxModel && document.documentElement.clientHeight || document.body.clientHeight;};
	
	// simpletooltip
	$j.fn.simpletooltip = function(options){
		var all_tooltips = [];
		
		var openTooltip = function(e){
			
			e.preventDefault();
			
			var tooltipE = e.data.tooltipE;
			var tooltip = e.data.tooltip;
			var hideDelay = e.data.hideDelay;
			var hideOnMouseOut = e.data.hideOnMouseOut;
			
			var winWidth = $j(window).width();
			var winHeight = $j(window).height();
			var winYViewLimit = (window.pageYOffset || document.documentElement.scrollTop) + $j.viewportHeight();
			
			// Effect
      if (tooltipE._effect && (tooltipE._effect=="fadeIn" || tooltipE._effect=="slideDown" || tooltipE._effect=="show")) {
				window.eval("tooltip."+tooltipE._effect+"('fast')");
			}
			else {
				tooltip.show();
			}
			
			if (!tooltipE._width){
				tooltipE._width = tooltip.width();
				tooltipE._height = tooltip.height();
			}
			
			var tPosX = e.pageX - (tooltip.width()/1.5);
			var tPosY = e.pageY - (tooltip.height()/1.5);
			

			
			var timer = new Number();
			
			tooltip.css({"left": tPosX + "px", "top": tPosY + "px"});
			
			if (hideOnMouseOut) {
				tooltip.unbind().hover(
					function(){window.clearTimeout(timer);},
					function(){timer = window.setTimeout(function(){tooltip.hide();}, hideDelay * 1000);}
				);
			}
		};
		
		this.each(function(){
			var currentHref = $j(this).attr("href");
			
			if (currentHref && currentHref.match(/^#.+/)){
				var tooltip = $j(currentHref);
				
				if (tooltip.length > 0){
					var tooltipE = tooltip.get(0);
					
					// Initialize a tooltip
					if (!tooltipE._tooltipInit) {
						all_tooltips.push(tooltipE);
						
						if (options && options.margin) {tooltipE._margin = options.margin;}
						else {tooltipE._margin = 5;}
						
						if (options && options.effect) {tooltipE._effect = options.effect;}
						else {tooltipE._effect = false;}
						
						tooltip.find("a[href^=#][rel=close]").click(function(e){
							e.preventDefault();
							tooltip.hide();
						});
						
						tooltipE._tooltipInit = true;
					}
					
					// Hide on mouseOut event ?
					if (options && options.hideOnMouseOut != null) {var hideOnMouseOut = options.hideOnMouseOut;}
					else {var hideOnMouseOut = true;}
					
					// Show event type
					if (options && options.click && options.click == true) {var showEvent = "click";}
					else {var showEvent = "click";}
					
					// Hide delay
					if (options && options.hideDelay && options.hideDelay > 0) {var hideDelay = options.hideDelay;}
					else {var hideDelay = 0;}
					
					// Bind event
					$j(this).bind(showEvent, { "tooltipE": tooltipE, "tooltip": tooltip, "hideDelay": hideDelay, "hideOnMouseOut": hideOnMouseOut }, openTooltip);
				}
			}
		});
		
		$j(all_tooltips)
		.appendTo("body")
		.css({"position": "absolute", "zIndex": "9999", "display": "none"});
		
		return this;
	};
})(jQuery);
