// Click-through Fly-out Menu
var lastOpened = "";

onload = function() {
	var browseLists = document.getElementById("browse");
	var allLinks = document.getElementById("browse").getElementsByTagName("a");
	
	hideSubLists(browseLists);
	
	for (j = 0; j < allLinks.length; j++) {
		if(allLinks[j].nextSibling && allLinks[j].nextSibling.nextSibling && allLinks[j].nextSibling.nextSibling.nodeName.toLowerCase() == "ul") {
			allLinks[j].href = "";
			allLinks[j].onclick = function() { unfold(this);return false; }
			if(allLinks[j].parentNode.firstChild.firstChild.nodeValue != "Browse") allLinks[j].parentNode.className = "expandable";
		}
	}
	
}

function unfold(currentNode) {
	var nodeChildren = currentNode.parentNode.childNodes;
	var testText = "";
	
	for(i = 0; i < nodeChildren.length; i++) {
		if(nodeChildren[i].nodeName.toLowerCase() == "ul" && nodeChildren[i].nodeType == 1) {
			if(nodeChildren[i].className == "displayNone") {
				if(lastOpened) {
					if(returnLevel(nodeChildren[i]) <= returnLevel(lastOpened)) {
						hideSubLists(lastOpened.parentNode);
						if(returnLevel(nodeChildren[i])+2 == returnLevel(lastOpened)) {
							hideSubLists(lastOpened.parentNode.parentNode.parentNode);
						}
					}
				}
				nodeChildren[i].className = "displayBlock";
				lastOpened = nodeChildren[i];			
			} else if(nodeChildren[i].className == "displayBlock") {
				hideSubLists(nodeChildren[i].parentNode);
				break;
			}
		}
	}
}

function hideSubLists(parentItem) {
	var itemChildren = parentItem.getElementsByTagName("ul");
	
	for(h = 0; h < itemChildren.length; h++) {
		itemChildren[h].className = "displayNone";
	}					
}

function returnLevel(levelNode) {
	var level = 0;
	while(levelNode.parentNode.nodeName.toLowerCase() == "ul" || levelNode.parentNode.nodeName.toLowerCase() == "li") {
		level++;
		levelNode = levelNode.parentNode;
	}
	return level;
}

function captureClick(e) {
	var targ;
	if (!e) {
		var e = window.event;
	}
	
	if (e.target) {
		targ = e.target;
	} else if (e.srcElement) {
		targ = e.srcElement;
	}
	
	if (targ.tagName != "A" && targ.tagName != "LI") {
		hideSubLists(document.getElementById("browse"));
	}
}


/*// Click-through Fly-out Menu
Works in Chrome and FF 1/11/10
var lastOpened = "";

onload = function() {
	var browseLists = document.getElementById("browse");
	var allLinks = document.getElementById("browse").getElementsByTagName("a");
	
	hideSubLists(browseLists);
	
	for (j = 0; j < allLinks.length; j++) {
		if(allLinks[j].nextSibling && allLinks[j].nextSibling.nextSibling && allLinks[j].nextSibling.nextSibling.nodeName.toLowerCase() == "ul") {
			allLinks[j].setAttribute("href","");
			allLinks[j].setAttribute("onclick","unfold(this);return false;");
			allLinks[j].parentNode.setAttribute("class","expandable");
		}
	}
	
}

function unfold(currentNode) {
	var nodeChildren = currentNode.parentNode.childNodes;
	var testText = "";
	
	
	for(i = 0; i < nodeChildren.length; i++) {
		if(nodeChildren[i].nodeName.toLowerCase() == "ul" && nodeChildren[i].nodeType == 1) {
			if(nodeChildren[i].getAttribute("style") != "display:none;" && nodeChildren[i].getAttribute("style") != "display: none;") {
				hideSubLists(nodeChildren[i].parentNode);
				break;
			} else if(nodeChildren[i].getAttribute("style") != "display:normal;" && nodeChildren[i].getAttribute("style") != "display: normal;") {
				if(lastOpened) {
					if(returnLevel(nodeChildren[i]) <= returnLevel(lastOpened)) {
						hideSubLists(lastOpened.parentNode);
						if(returnLevel(nodeChildren[i])+2 == returnLevel(lastOpened)) {
							hideSubLists(lastOpened.parentNode.parentNode.parentNode);
						}
					}
				}
				nodeChildren[i].setAttribute("style","display:normal;");
				//nodeChildren[i].style.cssText = "display:normal;";
				lastOpened = nodeChildren[i];				
			} 				
		}
	}
}

function hideSubLists(parentItem) {
	var itemChildren = parentItem.getElementsByTagName("ul");
	
	for(h = 0; h < itemChildren.length; h++) {
		itemChildren[h].setAttribute("style","display:none;");
		//itemChildren[h].style.cssText = "display:none;";
	}					
}

function returnLevel(levelNode) {
	var level = 0;
	while(levelNode.parentNode.nodeName.toLowerCase() == "ul" || levelNode.parentNode.nodeName.toLowerCase() == "li") {
		level++;
		levelNode = levelNode.parentNode;
	}
	return level;
}*/
