//Menu functions
function showMenu(pageID,menuID) 
{
    if ( null == (tipElement = document.getElementById(menuID)) )
	return;

    if(tipElement.style.visibility == "visible") {
	return;
    }
    
    fieldElement = document.getElementById(pageID);
    fieldElement.className = "buttonMiddle_hover";
    
    positionLeft = getAbsoluteLeft(pageID);
    positionTop = getAbsoluteTop(pageID) + fieldElement.offsetHeight;
    
    tipElement.style.left = positionLeft + 'px';
    tipElement.style.top = (positionTop -6) + 'px';
    delay = setTimeout("setVisible('"+menuID+"')", 200);
}

function setVisible(menuID) {
    tipElement = document.getElementById(menuID);
    tipElement.style.visibility = 'visible';

    //hide the other elements
    elements =document.getElementById('menu').getElementsByTagName('div');
    for(i in elements)
	{
 	    if(elements[i].className == 'sub' && elements[i].id!=menuID )
 		{
		    elements[i].style.visibility = 'hidden';
 		}
	}

}

function showMe(pageID, menuID) { 
    if ( null == (tipElement = document.getElementById(menuID)) )
	return;
    fieldElement = document.getElementById(pageID);
    fieldElement.className = "buttonMiddle_hover";
    tipElement.style.visibility = 'visible';

}


/*
 * hide menu only if outside menu and caller (pageID)
 * elements.
 */

function hideMenu(event, parentID, menuID) 
{
    // i don't know why hideMenu is called all the time
    // so I have to make it 'smarter'

    // first get some positions to see if we still inside 
    // parent frame

    parElement = document.getElementById(parentID);
    parElement.className = "buttonMiddle";
    menuElement = document.getElementById(menuID);

    positionLeft = getAbsoluteLeft(menuID);
    positionTop = getAbsoluteTop(menuID);

    positionLeftParent = getAbsoluteLeft(parentID);
    positionTopParent = getAbsoluteTop(parentID);

    positionRight = positionLeft + menuElement.offsetWidth;
    positionBottom = positionTop + menuElement.offsetHeight;

    positionRightParent = positionLeftParent + parElement.offsetWidth;
    positionBottomParent = positionTopParent + parElement.offsetHeight;
   

    // now compare with the mouse position to decide if 
    // the menu should be hidden or no

    var posx = 0;
    var posy = 0;
    var myWindow;
    if (!e) var e = window.event;

    if (window.event) {
	posx = window.event.clientX + document.documentElement.scrollLeft
	    + document.body.scrollLeft;
	posy = window.event.clientY + document.documentElement.scrollTop +
	    + document.body.scrollTop;
    }
    else {
	posx = event.clientX + window.scrollX;
	posy = event.clientY + window.scrollY;
    }

    if((posx > positionLeft && posy > positionTop && posx < positionRight  &&  posy < positionBottom)) {
	return;
    }

    else if(posx > positionLeftParent && posy > positionTopParent && posx < positionRightParent  &&  posy < positionBottomParent) {
 	return;
    }

    if ( null == (tipElement = document.getElementById(menuID)) ) 
	return;
    
    tipElement.style.visibility = 'hidden';

}


function getAbsoluteLeft(id) 
{
  element = document.getElementById(id);
  posX = element.offsetLeft;

  while ( null != element.offsetParent ) 
  {
    parentElement = element.offsetParent;
    posX += parentElement.offsetLeft;
    element = parentElement;
  }

  return posX
}

function getAbsoluteTop(id) 
{
  element = document.getElementById(id);
  posY = element.offsetTop;

  while ( null != element.offsetParent ) 
  {
    parentElement = element.offsetParent;
    posY += parentElement.offsetTop;
    element = parentElement;
  }

  return posY;
}

function hover(id) {

  fieldElement = document.getElementById(id);
  fieldElement.className = "submenu1_hover";

}

function normal(id) {

  fieldElement = document.getElementById(id);
  fieldElement.className = "submenu1";

}

