
// Open all folders
// May not work with very large trees (browser may time out)
// You may call this on a node other than the root, but it must be a folder
function expandTree(folderObj)
{
    var childObj;
    var i;

    //Open folder
    if (!folderObj.isOpen)
      clickOnNodeObj(folderObj)

    //Call this function for all folder children
    for (i=0 ; i < folderObj.nChildren; i++)  {
      childObj = folderObj.children[i]
      if (typeof childObj.setState != "undefined") {//is folder
        expandTree(childObj)
      }
    }
}

// Close all folders
function collapseTree()
{
	//hide all folders
	clickOnNodeObj(foldersTree)
	//restore first level
	clickOnNodeObj(foldersTree)
}

// In order to show a folder, open all the folders that are higher in the hierarchy
// all the way to the root must also be opened.
// (Does not affect selection highlight.)
function openFolderInTree(linkID)
{
	var folderObj;
	folderObj = findObj(linkID);
	folderObj.forceOpeningOfAncestorFolders();
	if (!folderObj.isOpen)
		clickOnNodeObj(folderObj);
}

// syncronize the tree with the active section
function syncTree(linkID)
{
	var folderObj;
	docObj = findObj(linkID+DOCID);
	if(docObj){
		docObj.forceOpeningOfAncestorFolders();
		highlightObjLink(docObj);
		//clickOnLink(linkID,docObj.link,'basefrm');

			//Scroll the tree window to show the selected node
			//Other code in these functions needs to be changed to work with
			//frameless pages, but this code should, I think, simply be removed
			//if (typeof document.body != "undefined") //scroll doesn work with NS4, for example
			//		document.body.scrollTop=docObj.navObj.offsetTop
	}else{
		alert("Could not synchronize because the object "+linkID+" was not found");
	}
}
