var objs_cache = new Array;
var objs = new Array;

function hidetree(tree, id)
{
	for(var i=0; i<tree.length; i++)
		if (tree[i].getAttribute("parent")==id)
		{
			tree[i].style.display="none";
			hidetree(tree, i);
		}
}

function showtree(tree, id)
{
	for(var i=0; i<tree.length; i++)
		if (tree[i].getAttribute("parent")==id)
		{
			tree[i].style.display="";
			if (!tree[i].getAttribute("shrinked"))
				showtree(tree, i);
		}
}

function has_sons(menu_obj, id)
{
	for (var i=0; i<objs.length; i++)
		if (objs[i].getAttribute("parent")==id) return true;
	return false;
}

function menu(ptr)
{
	eval("var curimg = document.all."+ptr.getAttribute("table")+ptr.id+";");
	var iidx = 0;
	if (objs_cache[ptr.getAttribute("table")])
		objs = objs_cache[ptr.getAttribute("table")];
	if (!objs.length)
	{
		objs = new Array;
		for (var i=0; i<document.all.length; i++)
			if (document.all[i].getAttribute("table")==ptr.getAttribute("table"))
			{
				objs[iidx] = document.all[i];
				iidx++;
			}
	}
	if (ptr.getAttribute("shrinked"))
	{
		showtree(objs, ptr.id);
		sons = has_sons(objs, ptr.id);
		if (sons)
		{
			if (ptr.getAttribute("parent")==-1)
			{
				for (var j=0; j<objs.length; j++)
					if ((objs[j].id!=ptr.id) && (objs[j].getAttribute("parent")==-1) && (!objs[j].getAttribute("shrinked")))
					{
						hidetree(objs, j);
						objs[j].setAttribute("shrinked", "true");
						eval("if (document.all."+ptr.getAttribute("table")+j+") document.all."+ptr.getAttribute("table")+j+".src=document.all."+ptr.getAttribute("table")+j+".getAttribute('imgclose');");
					}
			}
			else
			{
				for (var j=0; j<objs.length; j++)
					if ((objs[j].id!=ptr.id) && (objs[j].getAttribute("parent")==ptr.getAttribute("parent")) && (!objs[j].getAttribute("shrinked")))
					{
						hidetree(objs, j);
						objs[j].setAttribute("shrinked", "true");
						eval("if (document.all."+ptr.getAttribute("table")+j+") document.all."+ptr.getAttribute("table")+j+".src=document.all."+ptr.getAttribute("table")+j+".getAttribute('imgclose');");
					}
			}
		}
		ptr.setAttribute("shrinked", "");
		if (curimg)
			curimg.src = curimg.getAttribute('imgopen');
	}
	else
	{
		hidetree(objs, ptr.id);
		ptr.setAttribute("shrinked", true);
		if (curimg)
			curimg.src = curimg.getAttribute('imgclose');
	}
	objs_cache[ptr.getAttribute("table")] = objs;
}