// Javascipt Document for displaying an expandable menu system
// Author: Thomas Craig
// Created Date:  September 26, 2005

function rollout(objMenuItem, objEvent)
{
	var iKeyCode;
	
	// check if navigation is from a keyboard - non Internet Explorer (IE), but 
	// irrelevant as tab doesn't trigger the keypress event in IE
	if (objEvent && objEvent.type == 'keypress')
	{
		if (objEvent.keyCode)
			iKeyCode = objEvent.keyCode;
		else if (objEvent.which)
			iKeyCode = objEvent.which;
			
			// If it's not the enter key or space key then pass control back to browser
			if (iKeyCode != 13 && iKeyCode != 32)
				return true;
	}
	
	// work out what we need to do
	if (objMenuItem.nextSibling.style.display == 'block')
		var strDisplay = 'none'
	else
		var strDisplay = 'block';
		
	// close any nested lists that are open
	var objMenu = document.getElementById('mainnav');
	var objNested = objMenu.getElementsByTagName('ul');
	
	for (var i=0; i<objNested.length; i++)
		if (objNested[i].style.display == 'block')
		    objNested[i].style.display = 'none';
			
	objMenuItem.nextSibling.style.display = strDisplay;
	
	// keep any parent menus for this item open
	while (objMenuItem.parentNode.parentNode.id != 'mainnav')
	{
		objMenuItem = objMenuItem.parentNode.parentNode;
		objMenuItem.style.display = 'block';
	}
	
	// stop the browser requesting the link
	return false;
}

function rollup()
{
	var bRollup, objLinks, objNode, objAnchor;
	
	// check to see if we are working with a DOM compliant browser
	if (document.getElementById && document.createElement)
	{
		if (document.getElementById('mainnav')) 
		{
		
			var strLocation = window.location;
			
			var objMenu = document.getElementById('mainnav');
			
			var objNested = objMenu.getElementsByTagName('ul');
			
			// hide each of the nested unordered list items
			for (var i=0; i<objNested.length; i++)
			{
				// only hide if the current location is not found in the list
				bRollup = true;
				objLinks = objNested[i].getElementsByTagName('a');
				
				for (var j=0; j<objLinks.length; j++)
				{
					if (objLinks[j].href == strLocation)
					{
						bRollup = false;
						
						// remove link for current page
						objNode = objLinks[j];
						strContent = objNode.firstChild.data;
						var objCurrentPage = document.createElement('strong');
						objCurrentPage.appendChild(document.createTextNode(strContent));
						objNode.parentNode.replaceChild(objCurrentPage, objNode);
						
						// add an id so we can keep the parent element open
						objCurrentPage.id = 'keepOpen';
					}
				}
				
				if (bRollup == true)
					objNested[i].style.display = 'none';
				else
					objNested[i].style.display = 'block';
					
				// place the top-level text in an anchor tag
				objNode = objNested[i].parentNode;
				
				strContent = objNode.firstChild.data;
				
				objAnchor = document.createElement('a');
				objAnchor.href = '#';
				objAnchor.onclick = function(event){ return rollout(this, event); }
				objAnchor.onkeypress = function(event){ return rollout(this, event); }
				objAnchor.appendChild(document.createTextNode(strContent));
				
				objNode.replaceChild(objAnchor, objNode.firstChild);
			}
			
			// keep any parent menus for the current item open
			if (document.getElementById('keepOpen'))
			{
				var objKeepOpen = document.getElementById('keepOpen');
				while (objKeepOpen.parentNode.id != 'mainnav')
				{
					objKeepOpen = objKeepOpen.parentNode;
					objKeepOpen.style.display = 'block';
				}
			}
		}
	}
}
