/*
Protótipo de métodos para manipulação do efeito drop-down nos menu's superiores
Versão: 0.8

Fix-Me: aparece um efeito estranho em computadores lentos ao passar o mouse pela primeira vez.
*/


/* 
Função GPL Que retorna a Posição Y de um elemento 
*/
 function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    
    return curleft;
  }


/* 
Método GPL Que retorna a Posição Y de um elemento 
*/
  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
/*
Método criado por Rony Barbosa Tomaz
o método abaixo calcula a posição do elemento pai
e efetua operações para indicar a posição do menu dos subitens filhos.
ob: método usado somente para menus superiores (Drop Down Menus)
*/
function setPosMenuFilho(id,tam){
try
{

if(booleanosdps.hassetpos[id] != true){
var elementpai = document.getElementById("menudpitempai" + id);
var elementfilho = document.getElementById("menudpitensfilho" + id);
var elementulfilho = document.getElementById("ulsubitensdpsup" + id);

elementfilho.style.position = 'absolute';
elementfilho.style.top = findPosY(elementpai)  + getElementDimensions(elementpai,4) + "px";
elementfilho.style.left = findPosX(elementpai) + "px";
elementulfilho.style.width = tam + "px";
elementfilho.style.width = tam + "px";
booleanosdps.hassetpos[id] = true
}

}
catch(err)
{

}


}

// método para setar None no display de alguma TAG. Foi criado por poder tratar erro caso a TAG não exista
function setNoneDysplay(id){

try{

document.getElementById(id).style.display = 'none';
}
catch(err)
{
}
}
// método para setar Block no display de alguma TAG. Foi criado por poder tratar erro caso a TAG não exista
function setBlockDysplay(id){

try{

document.getElementById(id).style.display = 'block';
}
catch(err)
{
}
}


/*
Método criado por Rony Barbosa Tomaz
getElementDimensions retorna dimensões de um determinado elemento
de acordo com as seguintes entradas:
getElementDimensions(el,1) : Retorna left
getElementDimensions(el,2) : Retorna Top
getElementDimensions(el,3) : Retorna width
getElementDimensions(el,4) : Retorna height
*/
function getElementDimensions(el,x) {
    if (typeof(el) == "string") {
        el = document.getElementById(el);
    }
    if (!el || !el.offsetParent)
        return false;

    var left = el.offsetLeft,
        top = el.offsetTop,
        width = el.offsetWidth,
        height = el.offsetHeight;

    do {
        el = el.offsetParent;
        left += el.offsetLeft, top += el.offsetTop;
    } while (el.offsetParent);

    if(x == 1){
        return left;
        }
    if(x == 2){
        return top;
        }
    if(x == 3){
        return width;
        }
    if(x == 4){
        return height;
        }

}


booleanosdps =new Object();
booleanosdps.hassetpos = new Array();

