/* author: Data Access Europe B.V. */
/* Creation date: 16-07-04 */

var sCurrentNode = "";
var bCurrentNodeExpanded = false;

function Menu_GetNodeIdString(iID)
{
  return "node"+iID.toString();
}

function Menu_GetImageIdString(iID)
{
  return "menuImgnode"+iID.toString();
}

//		Function: Menu_GetNodeIMGByID
//		Purpose: Returns the TR object of the node with the correct ID 
function Menu_GetNodeByID(iID){
	var aNodes, iLoop, oNode;

	oNode = document.getElementById(Menu_GetNodeIdString(iID));
	return oNode;
}

//		Function: Menu_GetNodeIMGByID
//		Purpose: Returns the IMG object of the node with the correct ID 
function Menu_GetNodeIMGByID(iID){
	var aIMGS, iLoop, oIMG;

	oIMG = document.getElementById(Menu_GetImageIdString(iID));
	return oIMG;
}


//		Function: Menu_Click
//		Purpose: If extended = true i collapses the menu else it extends
function Menu_Click(iID){
	var oNode = Menu_GetNodeByID(iID);
	var oImgNode;

  if ( sCurrentNode == oNode.id )
  {
    bCurrentNodeExpanded = !bCurrentNodeExpanded;
    Menu_ChangeNodeChildrenStatus( sCurrentNode, bCurrentNodeExpanded );
  }
  else
  {
    Menu_HideNodeBranch( sCurrentNode );
    Menu_RevealNodeBranch( oNode.id );
    sCurrentNode = oNode.id;
    bCurrentNodeExpanded = true;
  }
  oImgNode = Menu_GetNodeIMGByID( iID );
  oImgNode.src = ( bCurrentNodeExpanded ? "Images/extended.gif" : "Images/collapsed.gif" );
}


//		Function: Menu_ChangeNodeBranchStatus
//		Purpose:  Hides a menu branch from a particular node up to the main level
function Menu_ChangeNodeChildrenStatus( sNodeId, bVisible)
{
	var sChildNodeId, oChildNode;
	
	if ( sNodeId != "" )
	{
  	var oNode = document.getElementById(sNodeId);
  
    if ( oNode )
    {
    	if ( vhMenu[sNodeId].vsChildrenId )
    	{
    	  for ( sChildNodeId in vhMenu[sNodeId].vsChildrenId )
    	  {
      	  oChildNode = document.getElementById(vhMenu[sNodeId].vsChildrenId[sChildNodeId]);
          oChildNode.style.display = ( bVisible ? "" : "none" );
    	  }
    	}
    }
  }
}

//		Function: Menu_ChangeNodeBranchStatus
//		Purpose:  Hides a menu branch from a particular node up to the main level
function Menu_ChangeNodeBranchStatus( sNodeId, bVisible)
{
	var sChildNodeId, oChildNode;
	
	if ( sNodeId != "" )
	{
  	var oNode = document.getElementById(sNodeId);
  
    if ( oNode )
    {
      if ( vhMenu[sNodeId].iLevel > 1 )
      {
        // Not top level
        oNode.style.display = ( bVisible ? "" : "none" );
        Menu_ChangeNodeBranchStatus( vhMenu[sNodeId].sParentId, bVisible );
      }
      Menu_ChangeNodeChildrenStatus( sNodeId, bVisible );
    }
  }
}

//		Function: Menu_HideNodeBranch
//		Purpose:  Hides a menu branch from a particular node up to the main level
function Menu_HideNodeBranch(sNodeId){
	var sChildNodeId, oChildNode;

	Menu_ChangeNodeBranchStatus( sNodeId, false );
}

//		Function: Menu_RevealNodeBranch(
//		Purpose:  Reveals a menu branch from a particular node up to the main level
function Menu_RevealNodeBranch(sNodeId){
	var sChildNodeId, oChildNode;

	Menu_ChangeNodeBranchStatus( sNodeId, true );
}



//		Function: Menu_Open
//		Purpose: Opens the menu so the item with iID will be displayed and opened
function Menu_Open(viIds){
	var oNode, iNodeId, iLoop;
	
	iNodeId = 1;

	for ( var iLoop = 0; iLoop < viIds.length; iLoop++ )
	{
		oNode = Menu_GetNodeByID(viIds[iLoop]);
		if ( oNode !== null )
		{
			iNodeId = vhMenu[oNode.id].iNodeId;
			break;
		}
	} 

	Menu_RevealNodeBranch( Menu_GetNodeIdString(iNodeId) );
}
