/*
   Tooltip v0.1 por Javier Zatarain, Agosto 2007.

License:
	BSD licensed.
*/   	


var toolTip= function(){this.constructor.apply(this,arguments)};

toolTip.prototype={
	constructor:function(id,mensaje,checar){
		this.mensaje=mensaje;
		this.id=id;
		this.checar=checar;
		var me=this;
		addLoadEvent(function(){me.crearToolTip()});
	},
	
	crearToolTip:function(){
		this.element=$(this.id);
		if (this.element.tagName=='LABEL'){
			this.element.addClassName('error_message');
		}
		if (this.element.parentNode.tagName=='LABEL'){
			var padre=Element.extend(this.element.parentNode);
			padre.addClassName('error_message');
			if((padre.getElementsByTagName('input').length+padre.getElementsByTagName('select').length)<=1){
				this.element=padre;
			}
			
		}
		this.toolTip=document.getElementById('toolTip');
		if(!this.toolTip){
			var div=document.createElement('div');
			div.id='toolTip';
			var divArriba=document.createElement('div');
			divArriba.className='arriba';
			div.appendChild(divArriba);
			var divContenido=document.createElement('div');
			divContenido.className='contenido';
			divContenido.id='toolTipContenido';
			div.appendChild(divContenido);	
			var divAbajo=document.createElement('div');
			divAbajo.className='abajo';
			div.appendChild(divAbajo);
			document.getElementsByTagName('body')[0].appendChild(div);
			if(/MSIE/.test(navigator.userAgent) && !window.opera){
				var iefix=document.createElement('iframe');
				iefix.id='toolTip_iefix';
				iefix.style.position='absolute';
				iefix.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity=0)';
				iefix.frameborder=0;
				iefix.scrolling="no";
				iefix.style.zIndex=1;	
				iefix.style.top='0';
				iefix.style.left='0';
				divContenido.style.zIndex=2;
				divArriba.style.zIndex=2;
				divAbajo.style.zIndex=2;
				div.appendChild(iefix);
			}
			this.toolTip=div;
		}
		if(/MSIE/.test(navigator.userAgent) && !window.opera){
			this.iefix=document.getElementById('toolTip_iefix');
		}
		this.contenido=document.getElementById('toolTipContenido');
		var me=this;
		this.element.onmouseover=function(event){me.mostrar(event)};
		this.element.onmousemove=function(event){me.posicionar(event)};
		this.element.onmousedown=function(event){me.ocultar()};
		this.element.onmouseup=function(event){me.mostrar(event)};		
		this.element.onmouseout=function(event){me.ocultar()};
		if (this.checar){
			this.interval=setInterval(function(){me.existe()},100);
		}
		
	},
	
	posicionar:function(event){
		if(event==null){
			event=window.event;
		}
		var posX=0;
		var posY=0;
		if(event.pageX||event.pageY){
		    posX=event.pageX;
		    posY=event.pageY;
		}else if(event.clientX||event.clientY){
		    if(document.documentElement.scrollLeft||document.documentElement.scrollTop){
		        posX=event.clientX+document.documentElement.scrollLeft;
		        posY=event.clientY+document.documentElement.scrollTop;
		    }else{
		        posX=event.clientX+document.body.scrollLeft;
		        posY=event.clientY+document.body.scrollTop;
		    }
		}
	    this.toolTip.style.left=''+(posX-32)+'px';
		this.toolTip.style.top=''+(7+posY)+'px';	
	},

	mostrar:function (event){	
		this.contenido.innerHTML=this.mensaje;
		this.posicionar(event);
		this.toolTip.style.display='block';
		if(this.iefix){	
			this.iefix.style.width=''+(this.toolTip.offsetWidth)+'px';
			this.iefix.style.height=''+(this.toolTip.offsetHeight)+'px';
		}
	},

	ocultar:function(event){	
		this.toolTip.style.display='none';
	},
	
	existe:function(){
		if (!this.element.parentNode){
			this.ocultar();
			clearInterval(this.interval);
		}
	}
	

}
