function menu( event ) {
  var target;
  if( event.target == null ) {  // ie
    target = event.srcElement;
  } else {  // netscape
    target = event.target;
  }

  var e = null;
  if( target != null ) {
    var tableId = target.id.substring( 1 );
    e = document.getElementById( tableId );
  }

  var wasVisible = e != null && e.style.visibility=='visible';

  // first set all menus hidden
  if( document.all == null ) {  // netscape
    var menuElements = document.getElementsByName('menu');
    for( var i=0; i<menuElements.length; i++ ) {
      menuElements[ i ].style.visibility='hidden';
    }
  } else {  // ie
    var allElements = document.all;
    for( var i=0; i<allElements.length; i++ ) {
      if(allElements[ i ].name=='menu') {
        allElements[ i ].style.visibility='hidden';
      }
    }
  }


  // opens the menu if a link was clicked
  if( e != null && !wasVisible ) {
    aTag = target;
    var fixedX = -1;
    var fixedY = -1;
    var leftpos = 0;
    var toppos = 0;
    do {
      aTag = aTag.offsetParent;
      leftpos += aTag.offsetLeft;
      toppos += aTag.offsetTop;
    } while(aTag.tagName!="BODY");

    e.left = fixedX==-1 ? target.offsetLeft + leftpos : fixedX;
    e.top = fixedY==-1 ? target.offsetTop + toppos + target.offsetHeight + 2 : fixedY;
    e.style.visibility='visible';
  }
}
