window.onload=rollup;

function getQueryVariable(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0; i<vars.length; i++)
	{
		var pair = vars[i].split("=");
		if (pair[0] == variable)
			return pair[1];
	} 
	//alert('Query Variable ' + variable + ' not found');
}

function rollout(objMenuitem, objEvent)
{
	var iKeyCode;

	// Check if from a keyboard - non 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, 
		// pass control back to the browser
		if (iKeyCode != 13 && iKeyCode != 32)
			return true;
	}

	// Work out what we need to do
	if (objMenuitem.nextSibling.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.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 we're working with a DOM compliant browser
	if (document.getElementById && document.createElement)
	{
		// wenn Menü und Inhalt in verschiedenen Frames stehen, braucht man die zweite Form!
		var strLocation = window.location; // parent.contentframe.window.location; // 
		
		var objMenu = document.getElementById('mainnav');
		var objNested = objMenu.getElementsByTagName('ul');

		// Hide each of the nested unordered list
		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');
			//var strLink = getQueryVariable('link');

			for (var j=0; j<objLinks.length; j++)
			{
				if ((objLinks[j].href == strLocation) || (objLinks[j].id == 'active'))
				{
					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 parents open
					objCurrentPage.id = 'jsKeepOpen';
				}

			}
			
			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));
			
			objNested[i].previousSibling.previousSibling.onclick=function(event){ return rollout(this, event); }
			objNested[i].previousSibling.previousSibling.onkeypress=function(event){ return rollout(this, event); }

			objNode.replaceChild(objAnchor, objNode.firstChild);
		}

		// Keep any parent menus for the current item
		if (document.getElementById('jsKeepOpen'))
		{
			var objKeepOpen = document.getElementById('jsKeepOpen');
			while (objKeepOpen.parentNode.id != 'mainnav')
			{
				objKeepOpen = objKeepOpen.parentNode;
				objKeepOpen.style.display = 'block';
			}
		}
	}
}
