﻿// JScript File

// Procura pela posição exata do objeto na janela, através do calculo da posição da cadeia
// de seus proprietarios (componente pai, pai do componente pai, pai do pai do componente pai ....)
function findPos(obj) {
	var curleft = curtop = 0; // inicializa posição corrente em 0,0

	if (obj.offsetParent) {  // Se estiver dentro de algum componente
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {  // passa por toda hierarquia de componentes proprietarios (componentes pais)
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop]; // retorna vetor de duas posiçoes: esquerda e topo
}

// Calcula a posição de uma dialog (normalmente uma div) em relacao a outro componente exibido na tela.
// Recebe como parametros o controle de referencia da posiçao e o controle da dialog (normalmente uma div)
function Posiciona_E_Exibe_Dialog(ControleReferencia, ControleDialog)
{
	var coords = findPos(ControleReferencia); // Procura pela posição real do controle de referencia
	var x = (coords[0]); // Inicializa variaveis: x = coluna (curleft) e y = linha (curtop). Ver retorno da rotina findPos
	var y = (coords[1]);

	ControleDialog.style.top = y + ControleReferencia.offsetHeight +5 + 'px'; // Faz o calculo da linha da Dialog (div), somando sua altura à linha do componente pai, + 5 pontos (borda). O '5' pode ser alterado livremente
	ControleDialog.style.left = x + ControleReferencia.offsetLeft - 5 + 'px'; // Calculo da coluna, análogo ao calculo da linha (ver acima)
	ControleDialog.style.visibility = "visible"; // Exibe a dialog (div), caso estiver oculta. Também pode ser alterado livremente conforme necessidade.
}

