
/***********************************************
* Cool DHTML tooltip script II- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
* http://www.dynamicdrive.com/dynamicindex5/dhtmltooltip2.htm
***********************************************
* He añadido los cambios necesarios para que se pueda utilizar este script como un popup.
* A través del parametro prmtrEstatica, si está a true, se puede indicar que el tooltip no 
* debe moverse con el puntero y que se cerrará cuando el usuario lo indique con el botón cerrar
***********************************************/

var offsetfromcursorX= 25 //Customize x offset of tooltip
var offsetfromcursorY= 10 //Customize y offset of tooltip

var offsetdivfrompointerX=15 //Customize x offset of tooltip DIV relative to pointer image
var offsetdivfrompointerY=14 //Customize y offset of tooltip DIV relative to pointer image. Tip: Set it to (height_of_pointer_image-1).

document.write('<div id="dhtmltooltip"></div>') //write out tooltip DIV
document.write('<img id="dhtmlpointer" src="../_img/Flecha_ToolTip.gif">') //write out pointer image

//document.write('<div id="dhtmltooltip2"></div>') //write out tooltip DIV
//document.write('<img id="dhtmlpointer2" src="../_img/Flecha_ToolTip.gif">') //write out pointer image

//document.write('<div id="btnCerrar" onmouseover = "positiontip"><a href = "javascript:hideltip()">Cerrar</a></div>')
document.write('<div id="btnCerrar" title = "Pulsa aquí para cerrar esta ventana."><a href = "javascript:hideddrivetip()">')
document.write	('<img src = "../_img/btnCerrar_12x12.gif" width = "12px" height = "12px" border = "0px" ></a></div>') 

var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""
var pointerobj=document.all? document.all["dhtmlpointer"] : document.getElementById? document.getElementById("dhtmlpointer") : ""
var btnCerrarobj=document.all? document.all["btnCerrar"] : document.getElementById? document.getElementById("btnCerrar") : ""

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

var blnEstatica = ""
function ddrivetip(thetext, prmtrEstatica, thewidth, thecolor) //, prmtrNombreObjeto)
	{
	if (ns6||ie)
		{
		//Si especifico otra capa que no sea la principal dhtmltooltip utilizo esa otra capa
		//alert(prmtrNombreObjeto)
		//if (prmtrNombreObjeto!=null && typeof prmtrNombreObjeto!="undefined" && prmtrNombreObjeto!="")
		//	{
		//	tipobj=document.all? document.all["dhtmltooltip" + prmtrNombreObjeto] : document.getElementById? document.getElementById("dhtmltooltip" + prmtrNombreObjeto) : ""
		//	pointerobj=document.all? document.all["dhtmlpointer" + prmtrNombreObjeto] : document.getElementById? document.getElementById("dhtmlpointer" + prmtrNombreObjeto) : ""
		//	//btnCerrarobj=document.all? document.all["btnCerrar" + prmtrNombreObjeto] : document.getElementById? document.getElementById("btnCerrar" + prmtrNombreObjeto) : ""
		//	}
		
		if (typeof prmtrEstatica!="undefined") {blnEstatica = prmtrEstatica;}
		if (typeof thewidth!="undefined") 
			tipobj.style.width=thewidth+"px"
		else 
			tipobj.style.width= "350px" //para que esté definida x defecto y así lo pille el boton de cerrar
		if (typeof thecolor!="undefined" && thecolor!="") 
			tipobj.style.backgroundColor=thecolor
		tipobj.innerHTML=thetext
		enabletip=true
		if (blnEstatica == true) 
			{
			if (ie) {positiontip()}
			// con está linea tb funcionaria en Firefox pero no me gusta como se comporta
			if (ns6) 
				{document.onclick = positiontip
				//positiontip()
				}
			//la siguiente linea es para evitar que si existen 2 sitios en una página donde se usa tooltip y
			//uno es estatico y otro no, al pasar por el último condicione el comportamiento cuando luego 
			//se pase por el estatico.
			document.onmousemove = "" 
			}
		else {document.onmousemove=positiontip}
		return false
		}
	}


function positiontip(e){
	//Mostrar_Propiedades(window)
	//alert("enabletip: " + enabletip + "\nns6:" + ns6 + "\ne: " + e)
	if (
		(enabletip && (ns6 && e != "undefined" && e != null) )
		||
		(enabletip && !ns6)
	   )
		{

		var nondefaultpos=false
		var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
		var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
		//Find out how close the mouse is to the corner of the window
		var winwidth=ie&&!window.opera? ietruebody().clientWidth : window.innerWidth-20
		var winheight=ie&&!window.opera? ietruebody().clientHeight : window.innerHeight-20
		
		var rightedge=ie&&!window.opera? winwidth-event.clientX-offsetfromcursorX : winwidth-e.clientX-offsetfromcursorX
		var bottomedge=ie&&!window.opera? winheight-event.clientY-offsetfromcursorY : winheight-e.clientY-offsetfromcursorY
		//la siguiente linea es de mi cosecha y es para evitar que la capa no se desborde por arriba, es decir, que no empiece
		//en numeros negativos y por tanto quede parte oculta.
		var topedge=ie&&!window.opera? event.clientY-tipobj.offsetHeight-offsetfromcursorY : e.clientY-tipobj.offsetHeight-offsetfromcursorY
		/*
		var strAlert = ""
		if (document.all)
			strAlert += "winheight: " + winheight + "\nevent.clientY: " + event.clientY + "\noffsetfromcursorY: " + offsetfromcursorY	
		else
			strAlert += "winheight: " + winheight + "\ne.clientY: " + e.clientY + "\noffsetfromcursorY: " + offsetfromcursorY	
		*/
		
		var leftedge=(offsetfromcursorX<0)? offsetfromcursorX*(-1) : -1000
	
		//if the horizontal distance isn't enough to accomodate the width of the context menu
		if (rightedge<tipobj.offsetWidth)
			{
			//move the horizontal position of the menu to the left by it's width
			tipobj.style.left=curX-tipobj.offsetWidth+"px"
			nondefaultpos=true
			}
		else if (curX<leftedge)
			tipobj.style.left="5px"
		else
			{
			//position the horizontal position of the menu where the mouse is positioned
			tipobj.style.left=curX+offsetfromcursorX-offsetdivfrompointerX+"px"
			pointerobj.style.left=curX+offsetfromcursorX+"px"
			}

		/*
		strAlert += "\n-------------------\nbottomedge: " + bottomedge + "\ntipobj.offsetHeight: " + tipobj.offsetHeight
		if (document.all)
			strAlert += "\n\n" + (event.clientY - tipobj.offsetHeight - offsetfromcursorY)
		else
			strAlert += "\n\n" + (e.clientY - tipobj.offsetHeight - offsetfromcursorY)
		strAlert += "\ntopedge: " + topedge
		alert(strAlert)*/

		//same concept with the vertical position
		if (bottomedge<tipobj.offsetHeight || topedge<0)
			{
			//y controlo que la capa mostrada no se desborde por abajo
			if (bottomedge<tipobj.offsetHeight)
				{
				tipobj.style.top=curY-tipobj.offsetHeight-offsetfromcursorY+"px"
				nondefaultpos=true
				}
			//ahora controlo que la capa no se desborde por arriba, es decir, que no empiece
			//en numeros negativos y por tanto quede parte oculta.
			if (topedge<0)
				{
				tipobj.style.top=ietruebody().scrollTop + 10 + "px"
				nondefaultpos=true
				}
			}
		else
			{
			tipobj.style.top=curY+offsetfromcursorY+offsetdivfrompointerY+"px"
			pointerobj.style.top=curY+offsetfromcursorY+"px"
			}
	
		/*
		else{
		tipobj.style.top=curY+offsetfromcursorY+offsetdivfrompointerY+"px"
		pointerobj.style.top=curY+offsetfromcursorY+"px"
		}
		*/
		tipobj.style.visibility="visible"
		if (!nondefaultpos)
			pointerobj.style.visibility="visible"
		else
			pointerobj.style.visibility="hidden"
	} //fin de 	if (enabletip)

	if (blnEstatica == true)
		{
		btnCerrarobj.style.visibility = "visible"
		btnCerrarobj.style.left = parseInt(tipobj.style.left.replace("px", "")) + parseInt(tipobj.style.width.replace("px", "")) - 14 + "px"
		btnCerrar.style.top = parseInt(tipobj.style.top.replace("px", "")) + 2 + "px"
		//tipobj.onclick = hideddrivetip
		//alert(btnCerrarobj.style.left)
		}


	}

function posicionarTooltip (prmtrLeft, prmtrTop)
	{
	var intTop, intLeft
	
	if (isNaN(prmtrTop))
		{intTop = parseInt(prmtrTop.replace("px", ""))}
	else
		{intTop = prmtrTop}
	
	if (isNaN(prmtrLeft))
		{intLeft = parseInt(prmtrLeft.replace("px", ""))}
	else
		{intLeft = prmtrLeft}

//	intLeft = parseInt(prmtrLeft.replace("px", ""))
	tipobj.style.top = intTop + "px"
	tipobj.style.left = intLeft + "px"
	
	var intTopBtnCerrar, intLeftBtnCerrar
	intLeftBtnCerrar = 0
	intLeftBtnCerrar = parseInt(tipobj.style.left.replace("px", "")) 
					   + parseInt(tipobj.style.width.replace("px", "")) - 14 
					   //+ parseInt(btnCerrarobj.style.left.replace("px", ""))
	intTopBtnCerrar = 0
	intTopBtnCerrar = parseInt(tipobj.style.top.replace("px", "")) + 2
					  //+ parseInt(btnCerrarobj.style.top.replace("px", ""))
	//alert("intLeftBtnCerrar: " + intLeftBtnCerrar + "\nintTopBtnCerrar: " + intTopBtnCerrar)
	btnCerrar.style.left = intLeftBtnCerrar
	btnCerrar.style.top = intTopBtnCerrar

	var intTopPointer, intLeftBtnPointer
	intLeftBtnPointer = parseInt(tipobj.style.left.replace("px", "")) + 10 
	pointerobj.style.left = intLeftBtnPointer
	intTopPointer = parseInt(tipobj.style.top.replace("px", "")) - 14
	pointerobj.style.top = intTopPointer
	//pointerobj.style.visibility = "visible"

	tipobj.style.visibility = "visible"
	//alert(blnEstatica)
	if (blnEstatica == true)
		{
		btnCerrarobj.style.visibility = "visible"
		//btnCerrarobj.style.left = parseInt(tipobj.style.left.replace("px", "")) + parseInt(tipobj.style.width.replace("px", "")) - 14 + "px"
		//btnCerrar.style.top = parseInt(tipobj.style.top.replace("px", "")) + 12 + "px"
		//tipobj.onclick = hideddrivetip
		//alert(btnCerrarobj.style.left)
		}
	
	/*
	btnCerrarobj.style.left = parseInt(tipobj.style.left.replace("px", "")) + parseInt(tipobj.style.width.replace("px", "")) - 14 
	alert(btnCerrarobj.style.left)
	btnCerrarobj.style.left += intLeft
	alert(btnCerrarobj.style.left)
	btnCerrarobj.style.left += "px"
	alert(btnCerrarobj.style.left)
	btnCerrar.style.top = parseInt(tipobj.style.top.replace("px", "")) + 2
	btnCerrar.style.top += intTop
	btnCerrar.style.top += "px"
	*/
	}

function hideddrivetip(){
if (ns6||ie){
enabletip=false
tipobj.style.visibility="hidden"
pointerobj.style.visibility="hidden"
btnCerrarobj.style.visibility = "hidden"
tipobj.style.left="-1000px"
tipobj.style.backgroundColor=''
tipobj.style.width=''
}
}

//la siguiente está añadida por mi y sirve para mostrar un mensaje resultado 
//de una acción AJAX justo debajo del botón
function Mensaje_Boton (prmtrText, prmtrNombreImgBoton, prmtrWidthMensaje, prmtrLeftMensaje, prmtrTopMensaje)
	{
	//alert("0\nprmtrWidthMensaje: " + prmtrWidthMensaje + "\nprmtrLeftMensaje: " + prmtrLeftMensaje)
	if (prmtrWidthMensaje == "undefined" || prmtrWidthMensaje == null) {prmtrWidthMensaje = 200}
	if (prmtrLeftMensaje == "undefined" || prmtrLeftMensaje == null) {prmtrLeftMensaje = 0}
	if (prmtrTopMensaje == "undefined" || prmtrTopMensaje == null) {prmtrTopMensaje = 20}
	
	//alert("1\nprmtrWidthMensaje: " + prmtrWidthMensaje + "\nprmtrLeftMensaje: " + prmtrLeftMensaje)
	ddrivetip(prmtrText, true, prmtrWidthMensaje)
	var varImg = getImage(prmtrNombreImgBoton);
	posicionarTooltip (getImagePageLeft(varImg) + prmtrLeftMensaje, getImagePageTop(varImg) + prmtrTopMensaje)
	}



	
	