/*-------------------------------------------------------------------------------
	My jQuery Tooltip
	Version 1.0
	By Roberto Herrero
	indomita@indomita.org
	29/04/2009
-------------------------------------------------------------------------------*/

$.fn.myTooltip = function(options){

	// Iniciamos las opciones de nuestro tooltip 
	var defaults = {
		speed: 200,
		delay: 300,
		mitipo: 'title'
	};
	
	var options = $.extend(defaults, options);

	// Creamos la función que genera el tooltip 
	getTip = function() {
		var tTip = 
			"<div class='tip'>" +
				"<div class='tipMid'>"	+
				"</div>" +
				"<div class='tipBtm'></div>" +
			"</div>";
		return tTip;
	}
	//añadimos el tip
	$("body").prepend(getTip());
	
	// Asociamos cada objeto con el tooltip    
	$(this).each(function(){
		//preparamos donde mostrar
		var $this = $(this);
		var tip = $('.tip');
		var tipInner = $('.tip .tipMid');
		var tipBtm = $('.tip .tipBtm');;
		var tTitle = ($this.attr(options.mitipo));
		this.title = "";	
		
		 
		var offset = $(this).offset();	
		var tLeft = offset.left;
		var tTop = offset.top;
		var tWidth = $this.width();
		var tHeight = $this.height();
		
		// Mostramos con el over y ocultamos en el out 
		$this.hover(
			function(e) {
				tipInner.html(tTitle);
				setTip(tTop, tLeft, e.pageX, e.pageY);
				setTimer();
			}, 
			function() {
				stopTimer();
				tip.hide();
			}
		);	

		// Retrasa la animación fade-in del tooltip
		setTimer = function() {
			$this.showTipTimer = setInterval("showTip()", defaults.delay);
		}
		
		// Eliminamos la animación
		stopTimer = function() {
			clearInterval($this.showTipTimer);
		}
		
		// Posicionamos el tooltip
		setTip = function(top, left, pageX, pageY){
			var topOffsetY = tip.height();
			var topOffsetX = tip.width();
			var xTip = (pageX-64);
			var yTip = (pageY-topOffsetY-65);
			//controlamos su posición
			xTip = (xTip<0) ? left : xTip;
			xTip = (xTip+topOffsetX>screen.width) ? screen.width-topOffsetX : xTip;

			if(yTip<-40){
				//mostramos bocadillo boca abajo
				yTip =  pageY+topOffsetY-100;		
				tip.removeClass('utip').addClass('dtip');
				tipBtm.removeClass('utipBtm').addClass('dtipBtm');				
			}else{
				//mostramos bocadillo boca arriba
				tip.removeClass('dtip').addClass('utip');
				tipBtm.removeClass('dtipBtm').addClass('utipBtm');
			}

			tip.css({'top' : yTip+"px", 'left' : xTip+"px"});
		}
		
		// Mostramos el nuevo tip deteniendo cualquier otro
		showTip = function(){
			stopTimer();
			tip.animate({"top": "+=20px", "opacity": "toggle"}, defaults.speed);
		}
	});
	
};
