var persisteduls=new Object();
var ddtreemenu=new Object();

ddtreemenu.closefolder="../common/tree_menu/closed.gif";
ddtreemenu.openfolder="../common/tree_menu/open.gif";


ddtreemenu.createTree = function(treeid)
{
	var ultags = document.getElementById(treeid).getElementsByTagName("ul");
	
	for (var i=0; i<ultags.length; i++)
		ddtreemenu.buildSubTree(treeid, ultags[i], i);
}

ddtreemenu.buildSubTree=function(treeid, ulelement, index)
{
	ulelement.parentNode.className="submenu";
	ulelement.setAttribute("rel", "closed");
	
	ulelement.parentNode.onclick=function(e)
	{
		var submenu=this.getElementsByTagName("ul")[0];
		if (submenu.getAttribute("rel")=="closed")
		{
			submenu.style.display="block";
			submenu.setAttribute("rel", "open");
			ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")";
		}
		else if (submenu.getAttribute("rel")=="open")
		{
			submenu.style.display="none";
			submenu.setAttribute("rel", "closed");
			ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")";
		}
		ddtreemenu.preventpropagate(e);
	}
	ulelement.onclick=function(e)
	{
		ddtreemenu.preventpropagate(e);
	}
}

//expand a UL element and any of its parent ULs
ddtreemenu.expandSubTree=function(treeid, ulelement)
{
	var rootnode=document.getElementById(treeid);
	var currentnode=ulelement;
	currentnode.style.display="block";
	currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")";
	while (currentnode!=rootnode)
	{
		if (currentnode.tagName=="UL")
		{
			//if parent node is a UL, expand it too
			currentnode.style.display="block";
			currentnode.setAttribute("rel", "open"); //indicate it's open
			currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")";
		}
		currentnode=currentnode.parentNode;
	}
}

//expand or contract all UL elements
ddtreemenu.flatten=function(treeid, action)
{
	var ultags=document.getElementById(treeid).getElementsByTagName("ul");
	
	for (var i=0; i<ultags.length; i++)
	{
		ultags[i].style.display=(action=="expand")? "block" : "none";
		var relvalue=(action=="expand")? "open" : "closed";
		ultags[i].setAttribute("rel", relvalue);
		ultags[i].parentNode.style.backgroundImage=(action=="expand")? "url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")";
	}
}

//prevent action from bubbling upwards
ddtreemenu.preventpropagate=function(e)
{
	if (typeof e!="undefined")
		e.stopPropagation();
	else
		event.cancelBubble=true;
}
