var treeNodeClassesRE = /(treeLeafNode|treeBranchNode)/;
var treeIconClassesRE = /treeToggleIcon/;
function treeNodeToggle( treeNode ) {
	if( treeNode == null ) return false;
	if( treeNode.className.indexOf( "treeBranchNode" ) == -1 ) return false;

	// we have a branch
	var l = treeNode.childNodes.length;
	var doOpen =  ( treeNode.getAttribute("isOpen") != "true" );

	for( var i=0; i<l; i++ ) {
		// only process nodes with children
		if( treeNode.childNodes[i].className ) {

			// change the display property of tree nodes
			if( treeNodeClassesRE.test( treeNode.childNodes[i].className ) ) {
				treeNode.childNodes[i].style.display = ( doOpen ? "block" : "none" );

			// toggle the image class in icon nodes
			} else if( treeIconClassesRE.test( treeNode.childNodes[i].className ) ) {
				var eles = treeNode.childNodes[i].getElementsByTagName("img");
				for( var j=0; j<eles.length; j++ ) {
					eles[j].className = ( doOpen ? "open" : "closed" )
				}
			}
			
		}
	}

	treeNode.setAttribute("isOpen", doOpen + "");

	return false;
}
