function menuItem(name, id, parent, url, subitems) {
	this.name = name;
	this.id = id;
	this.parent = parent;
	this.url = url;
	this.subitems = subitems;
	this.uniqueId='';
}
var g_MenuData; 
var g_MenuItems; 
var g_DefURL;
var g_TreeRoot;
var g_TreeMap;
var g_TreeSel;
var g_MenuRenderer;
function makeTreeMenu() {
	g_TreeRoot=new menuItem('',0,null, '', g_MenuData);
	g_TreeMap=new Array();
	g_MenuItems=new Array();
	g_TreeMap["0"]=g_TreeRoot;
	g_TreeSel=g_TreeRoot
	BuildHierarchyTree(g_TreeRoot);
	ShowHierarchyTree();
}
function BuildHierarchyTree(node) {
	if (node.subitems==null)
		return;
	var item
	for(var i=0;i<node.subitems.length;i++) {
		item=node.subitems[i];
		g_MenuItems.push(item);
		item.parent=node;
		item.uniqueId=node.id+':'+item.id;
		g_TreeMap[String(item.uniqueId)]=item
		BuildHierarchyTree(item);
	}
}
function ShowHierarchyTree() {
	var html='';
	var node=g_TreeSel;
	var level=GetHierarchyDepth(node);
	var l=level;
	var subId=0;
	while(node!=null) {
		html=g_MenuRenderer.RenderSubItems(node,l,html,subId);
		subId=node.id;
		node=node.parent;
		l--;
	}
	g_MenuRenderer.Display(html, level);
}

function SelectTreeItem(id) {
	if (g_TreeMap[String(id)]!=null) {
		g_TreeSel=g_TreeMap[String(id)]
		ShowHierarchyTree()
	}
}
function GetHierarchyDepth(node) {
	var level=0;
	while(node.parent!=null) {
		node=node.parent;
		level++
	}
	return level
}

