var divHint
///divHint: <div id="divHint" style="background-color:green; position:absolute; top:-1000px; padding:2px 5px 2px 5px" onMouseOver="divHint._over=true" onMouseOut="divHint._over=false"></div>

// Considera a amostragem de uma dica para el. Deve ser chamada no "onMouseMove".
function hintIn (el, ev) {
	divHint || (divHint = elm ("divHint"))
	var vis = divHint.offsetTop >= 0
	_saveCoords (ev)
	// Se for a primeira vez que se mostra, fazer um ajustamento para evitar o cursor.
	if (!vis) {
		divHint._hintX += 5
		divHint._hintY += 15
	}

	if (divHint._closing) {
		clearTimeout (divHint._hto)
		divHint._closing = false
	}
	if (divHint.el == el) return
	divHint.el = el
	vis ? _showHint () : divHint._hto = setTO (divHint._hto, _showHint, 100)
	_showHint ()
}

// Esconde a dica. Deve ser chamada no "onMouseOut".
function hintOut (el, ev) {
	divHint || (divHint = elm ("divHint"))
	var divst = divHint.style
	divHint.el == el && clearTimeout (divHint._hto)
	if (divHint.offsetTop < 0) return
	divHint._closing = true
	var f = function () {
		if (divHint.el != el) return
		if (divHint._over) {
			divHint._hto = setTO (divHint._hto, f, 500)
			return
		}
		divst.top = "-1000px"
		divHint.el = null
	}

	divHint._hto = setTO (divHint._hto, f, 500)
}

// Mostra a dica.
function _showHint () {
	var divst = divHint.style, el = divHint.el
	// Colocar texto.
	if (!(divHint.innerHTML = el.alt)) {
		var e = elmx ((el.id || el.name) + "-alt")
		if (!e || !(divHint.innerHTML = e.innerHTML)) {
			divst.top = "-1000px"
			return
		}
	}
	divst.width = "20px"
	// Calcular tamanho.
	var n = el.offsetWidth * 1.5
	divHint.offsetWidth > n && (divst.width = n + "px")
	divHint.offsetHeight > divHint.offsetWidth && (divst.width = divHint.offsetHeight + "px")
	// Colocar a caixa.
	divst.left = divHint._hintX + "px"
	divst.top = divHint._hintY + "px"
}

// Guarda as coordenadas em 'ev'.
_saveCoords = isIE ?
function (ev) {
	var el = ev.srcElement
	divHint._hintX = getAbsLeft (el) + ev.offsetX
	divHint._hintY = getAbsTop (el) + ev.offsetY
}
:
function (ev) {
	divHint._hintX = ev.pageX
	divHint._hintY = ev.pageY
}

