function mouseCoords(ev) {
	if (ev.pageX || ev.pageY) {
		return {
			x:ev.pageX,
			y:ev.pageY
		};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}
function getMouseOffset(target, ev) {
	ev            = ev ? ev : window.event;
	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {
		x:mousePos.x - docPos.x,
		y:mousePos.y - docPos.y
	};
}

function getPosition(e) {
	if (!e)
		return {x:0, y:0};
		
	var left = 0;
	var top  = 0;

	while (e.offsetParent && e.id != "Miolo") {
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}

	left += e.offsetLeft + 275;
	top  += e.offsetTop + 15;

	return {
		x:left,
		y:top
	};
}

function showHelp(target, name, ev) {
	ev = ev ? ev : window.event;
	var fra = document.getElementById("hiddenFrame");
	var lay = document.getElementById("helpLayer");
	lay.innerHTML = helpTexts[name];
	var mouseOffset = getMouseOffset(target, ev);
	var mousePos    = mouseCoords(ev);
	var y = mousePos.y - mouseOffset.y;
	var x = mousePos.x - mouseOffset.x;
	
	lay.style.top = (y + 20) + "px";
	lay.style.left = (x + 25) + "px";
	lay.style.visibility = "visible";	
	fra.style.top = (y + 20) + "px";
	fra.style.left = (x + 25) + "px";
	fra.style.width = lay.offsetWidth + "px";
	fra.style.height = lay.offsetHeight + "px";
	fra.style.visibility = "visible";
}

function hideHelp() {
	var lay = document.getElementById("helpLayer");
	var fra = document.getElementById("hiddenFrame");
	lay.style.visibility = "hidden";
	fra.style.visibility = "hidden";
}

function showError(target, name, ev) {
	ev = ev ? ev : window.event;
	if (errorTexts[name] == null || errorTexts[name] == "")
		return;
	var fra = document.getElementById("hiddenFrame");
	var lay = document.getElementById("errorLayer");
	lay.innerHTML = "<nobr>" + errorTexts[name] + "</nobr>";
	var mouseOffset = getMouseOffset(target, ev);
	var mousePos    = mouseCoords(ev);
	var y = mousePos.y - mouseOffset.y;
	var x = mousePos.x - mouseOffset.x;
	
	lay.style.top = (y + 5) + "px";
	lay.style.left = (x + 25) + "px";
	lay.style.visibility = "visible";
	fra.style.top = (y + 5) + "px";
	fra.style.left = (x + 25) + "px";
	fra.style.width = lay.offsetWidth + "px";
	fra.style.height = lay.offsetHeight + "px";
	fra.style.visibility = "visible";
}

function hideError() {
	var lay = document.getElementById("errorLayer");
	var fra = document.getElementById("hiddenFrame");
	lay.style.visibility = "hidden";
	fra.style.visibility = "hidden";
}
