	
function treeClose(totree, alevel) {
	var a;
	for (var i = treeBranches.length - 1; i >= alevel; i--) {
		if ((treeBranches[i] != totree) && (treeBranches[i] != '0')) {
			a = document.getElementById(treeBranches[i]);
			if (a)
				destroy(a.id);
		}
	}
}

// ---------------------------------------------------------------------

function treeGo (fromtree, totree, alevel, horizontal, xoff, yoff) {
	if (!m)
		return;
	if (alevel > 0)
		treeStartTimeOut = setTimeout('treeShow(\'' + fromtree + '\', \'' + totree + '\', ' + alevel + ', ' + horizontal + ', ' + xoff + ', ' + yoff + ')', 100);
	else
		treeStartTimeOut = setTimeout('treeShow(\'' + fromtree + '\', \'' + totree + '\', ' + alevel + ', ' + horizontal + ', ' + xoff + ', ' + yoff + ')', 200);
}

// ---------------------------------------------------------------------

function treeMake (id, level) {
	var html = '';
	var node = m["m" + id];
	var kids = new Array();
	for (var i in node) {
		var n = getNumber(i);
		if (n > 0)
			kids.push(n);
	}
	for ( var i = 0; i < kids.length; i++ ) {
		var kid = m["m" + kids[i]];
		if (kid.id > 0) {
			var link = "";
			if (kid.exlink)
				link = kid.exlink;
			else if (kid.inlink)
				link = "index.php?Doo=ContentView&id=" + kid.inlink;
			else 
				link = kid.template + "?Doo=ContentView&id=" + kid.id;
			html += '<a href="' + link + '" id="linkTop' + kid.id + '" class="Top1" onmouseover="treeGo(\'linkTop' + kid.id + '\', \'menuTop' + kid.id + '\', ' + (level + 1) + ', 0, 0, 0)" onmouseout="treeStop();">' + kid.label + '</a>';

		}	
	}
	return html;
}

// ---------------------------------------------------------------------

function treeStop () {
	clearTimeout(treeStartTimeOut);
}

// ---------------------------------------------------------------------

function treeShow (fromtree, totree, alevel, horizontal, xoff, yoff) {
	treeClose(totree, alevel);
	clearTimeout(treeTimeOut);
	treeTimeOut = setTimeout('treeClose(\'0\', 0)', 60000);
	treeBranches[alevel] = totree;
	
	var subid = getNumber(totree);
	var div = document.createElement('div');
	div.id="menuTop" + subid;
	div.className = "Top1";
	div.style.display = 'block';
	div.style.position = 'absolute';
	div.style.left = '-20000px';
	document.body.appendChild(div);
	div.innerHTML = treeMake(subid, alevel);
	
	if (document.getElementById(totree)) {
		var a = document.getElementById(fromtree);
		var b = document.getElementById(totree);
		var x = findPos(a, 'x');
		var y = findPos(a, 'y');
		var w = Math.max(a.clientWidth, a.offsetWidth);
		var h = Math.max(a.clientHeight, a.offsetHeight);
		var bw = b.offsetWidth;
		var bh = b.offsetHeight;
		var sx = window.innerWidth;
		var sy = window.innerHeight;
		var dx = 0;
		if (horizontal) {
			if (x + 2 + bw > sx)
				dx = -(x + 2 + bw - sx);						
		} else {
			if (x + w + 2 + bw > sx)
				dx = -(w + bw + (2 * xoff));
		}
		var dy = y;
		if (y + bh > sy)
			dy = sy - bh - 1;
		b.style.zIndex = 400;
		if (horizontal) {
			b.style.top = (y + h + 1) + 'px';
			b.style.left = (x + dx) + 'px';
		} else {
			b.style.top = (dy + yoff) + 'px';
			b.style.left = (x + w + xoff + dx) + 'px';
		}
		if (bh > sy) {
			b.style.top = '1px';
			b.style.height = (sy - 2) + 'px';
		}	
		b.style.visibility = 'visible';
	}
}

// ---------------------------------------------------------------------
// globals -------------------------------------------------------------
// ---------------------------------------------------------------------

var treeBranches = new Array();
treeBranches[0] = '0';
treeStartTimeOut = 0;
treeTimeOut = 0;

document.onclick = function() { 
	treeClose('0', 0);
	menuClose('0', 0);
	if (document.getElementById('calendarpopup'))
		destroy('calendarpopup');
};

var m = new Object();
