function containsNode(containerNode, testNode){
	while(testNode.parentNode){
		testNode = testNode.parentNode;
		if (testNode == containerNode) return true;
	}
	return false;
}

function closeOpenMenu(id){
	var openNode;

	openNode = findDOM(id,0);
	openNode.style.display = "none";	
}

function doMenu(id, brother, sister){
	var theNode;
	var brotherNode;
	var sisterNode;

	theNode = findDOM(id,0);
	brotherNode = findDOM(brother,0);
	if (sister) sisterNode = findDOM(sister,0);	

	brotherNode.style.display = "none";
	if (sister) sisterNode.style.display = "none";

	theNode.style.display = "block";
	theNode.onmouseout = doMouseOut;
}

function doSubMenu(id, parent, brother){
	var theNode;
	var parentNode;
	var brotherNode;

	theNode = findDOM(id,0);
	parentNode = findDOM(parent,0);
	brotherNode = findDOM(brother,0);

	parentNode.onmouseout = doSpecial;
	brotherNode.style.display = "none";

	theNode.style.display = "block";
	theNode.onmouseout = doMouseOut;
}

function doMouseOut(evt){
	var curNode;
	var newNode;
	
	if (typeof(window.event)!="undefined"){
		curNode = this;
		newNode = window.event.toElement;
	}
	else {
		curNode = evt.currentTarget;
		newNode = evt.relatedTarget;
	}
	
	if (curNode != newNode && !containsNode(curNode, newNode)){
		curNode.style.display = "none";
	}
}

function doSpecial(id){
	var curNode;
	var newNode;
	
	if (typeof(window.event)!="undefined"){
		curNode = this;
		newNode = window.event.toElement;
	}
	else {
		curNode = evt.currentTarget;
		newNode = evt.relatedTarget;
	}
	
	if (curNode != newNode && !containsNode(curNode, newNode)){
		curNode.style.display = "block";
	}
}
