function visibleChildren(id) {
	var vChildren = new Array();
	if (leafs[id].children.length > 0) {
		for (i in leafs[id].children) {
			vChildren[vChildren.length] = leafs[id].children[i];
			if (leafs[leafs[id].children[i]].children.length > 0 && leafs[leafs[id].children[i]].isOpen) {
				vChildren = vChildren.concat(visibleChildren(leafs[id].children[i]));
			}
		}
	}
	return vChildren;
}

function visibleAdd(main, where, sub) {
	var resArr = new Array();
	for (i in main) { resArr[resArr.length] = main[i]; if (main[i] == where) for (j in sub) resArr[resArr.length] = sub[j]; }
	return resArr;
}

function visibleRemove(main, sub) {
	for (i in main) for (j in sub) if (main[i] == sub[j]) delete main[i];
	return main;
}

function vertPlace(which) {
	var currTop = treeTop;
	if (nn) for (i in which) {
		document.layers[which[i]].top = currTop;
		currTop += document.layers[which[i]].document.height + 1;
	}
	if (ie) for (i in which) {
		document.all[which[i]].style.top = currTop;
		currTop += document.all[which[i]].offsetHeight + 1;
	}
        if (nc6) for (i in which) {
	         document.getElementById(which[i]).style.top = currTop;
                 currTop += document.getElementById(which[i]).offsetHeight + 1;
        }
}

function showLeer(which) {
	if (nn) document.layers[which].visibility = "show";
	if (ie) document.all[which].style.visibility = "visible";
        if (nc6) document.getElementById(which).style.visibility = "visible";
}

function hideLeer(which) {
	if (nn) document.layers[which].visibility = "hide";
	if (ie) document.all[which].style.visibility = "hidden";
        if (nc6) document.getElementById(which).style.visibility = "hidden";
}

function moveBough(which) {
	changingElems = visibleChildren(which);
	if (leafs[which].isOpen) {
		visible = visibleRemove(visible,changingElems);
		for (i in changingElems) hideLeer(changingElems[i]);
		leafs[which].isOpen = false;
		if (nn) document.layers[which].document.images[which+"Img"].src = closeImg.src;
		// if (nc6) document.getElementById(which+"Img").src = closeImg.src;
			else document.images[which+"Img"].src = closeImg.src;
	} else {
		visible = visibleAdd(visible,which,changingElems);
		for (i in changingElems) showLeer(changingElems[i]);
		leafs[which].isOpen = true;
		if (nn) document.layers[which].document.images[which+"Img"].src = openImg.src;
		// if (nc6) document.getElementById(which+"Img").src = closeImg.src;
			else document.images[which+"Img"].src = openImg.src;
	}
	vertPlace(visible);
}

function init() {
	for (i in visible) showLeer(visible[i]);
	vertPlace(visible);
}