function Tree_DoOpenClose(id,obj) {
	var rowNode = document.getElementById(id);		
	var isClosed = rowNode.className.match('item_closed');
	if (isClosed) {
		rowNode.className = rowNode.className.replace('item_closed','item_opened');
		obj.src='images/hier_rootopen.gif';
	} else {
		rowNode.className = rowNode.className.replace('item_opened','item_closed');
		obj.src='images/hier_rootclose.gif';

	}
	Tree_DoEnableDisable(rowNode.nextSibling,Tree_GetLevel(rowNode.className),isClosed);
}

function Tree_GetLevel(classNames) {
	var levelPos = classNames.indexOf("level_");
	if (levelPos!=-1) {
		return classNames.charAt(levelPos+6) - '0';
	} else {
		return -1;
	}
}

function Tree_DoEnableDisable(tmpNode,myLevel,enable) {
	while (tmpNode) {
		if (tmpNode.nodeType == 1) {
			var tmpLevel = Tree_GetLevel(tmpNode.className) - '0';
			if(tmpLevel <= myLevel){
				break;
			} else {
				if (!enable) {
					if (tmpNode.className.match('item_shown')) {
						tmpNode.className = tmpNode.className.replace('item_shown','item_hidden');
					}
					tmpNode = tmpNode.nextSibling;	
				} else {
					if (tmpLevel == (myLevel+1)) {
						tmpNode.className = tmpNode.className.replace('item_hidden','item_shown');
						if (tmpNode.className.match('item_opened')) {
							tmpNode = Tree_DoEnableDisable(tmpNode.nextSibling,tmpLevel,enable);
						} else { 
							tmpNode = tmpNode.nextSibling;	
						}
					} else {
						tmpNode = tmpNode.nextSibling;	
					}
				}
			} 
		}
	}
	return tmpNode;
}
