function HideTree()
{
	// Get all the branches
	var objs = getElementsByClassName(document, "*", "branch");
	// Go through each branch and collapse it
	for (var j=0;j < objs.length;j++)
	{
            var obj = objs[j];
			obj.style.display = 'none';
	}
}

function Toggle(node) // RECURSIVE FUNCTION
{
	// Check if branch is a DIV
    if (node.nextSibling.nodeName.toLowerCase() == 'div')
    {	
		// Unfold the branch if it isn't visible
		if (node.nextSibling.style.display.toLowerCase() == 'none')
		{
			// Change the image (if there is an image)
			if (node.childNodes.length > 0)
			{
				if (node.childNodes.item(0).nodeName.toLowerCase() == "img")
				{
					node.childNodes.item(0).src = "images/minus.gif";
				}
			}
			node.nextSibling.style.display = 'block';
		}
		// Collapse the branch if it IS visible
		else
		{
			// Change the image (if there is an image)
			if (node.childNodes.length > 0)
			{
				if (node.childNodes.item(0).nodeName.toLowerCase() == "img")
				{
					node.childNodes.item(0).src = "images/plus.gif";
				}
			}
			node.nextSibling.style.display = 'none';
		}
	}
	else
	{
		// If the branch isn't a DIV then move to the next branch (RECURSIVE)
        Toggle(node.nextSibling);
	}
}


// Helper Functions

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}
