var timeout = 1000;
var timeHandler;
var menuIsOpen = false;
var menuItems = new Object();
var previous = -1;
var current = -1;

function menuOpen(childId, parentId)
{
	/**
	 * maak een nieuw menuItems object aan wanneer deze nog niet bestaat.
	 */
	if (!menuItems[childId])
	{
		menuItems[childId] = new Object();
	}
	
	/**
	 * stel het parent id in van de child.
	 */
	menuItems[childId].parent = parentId;
	menuItems[childId].active = true;
	
	/**
	 * kijk of de huidige child niet voor het vorige child ligt
	 * wanneer dit het geval is moet de "show" class verwijdert worden.
	 */
	previous = current;
	if (menuItems[childId].parent != previous)
	{
		current = menuItems[childId].parent;
		
		backtrack(previous, false);
	}
	
	/**
	 * voeg de "show" class toe aan de ul elementen.
	 */
	menuIsOpen = true;
	backtrack(parentId, true);
	
	/**
	 * stop de timer als deze loopt.
	 */
	if (timeHandler)
	{
		window.clearTimeout(timeHandler);
	}
}

function menuClose(childId, parentId)
{
	/**
	 * maak een nieuw menuItems object aan wanneer deze nog niet bestaat.
	 */
	if (!menuItems[childId])
	{
		menuItems[childId] = new Object();
	}
	
	/**
	 * stel het parent id in van de child.
	 */
	menuItems[childId].parent = parentId;
	menuItems[childId].active = false;

	/**
	 * start de timeout timer wanneer het menu geen focus meer heeft
	 * zodat deze uiteindelijk verwijdert kan worden.
	 */
	menuIsOpen = false;
	if (!menuIsOpen)
	{
		var callback = function() { backtrack(parentId, false); }
		
		timeHandler = window.setTimeout(callback, timeout);
	}
}	

function backtrack(parentId, bool)
{
	menuShow(parentId, bool);
		
	/**
	 * kijk of er nog een parent aanwezig is.
	 */
	if (menuItems[parentId] && menuItems[parentId].parent > -1)
	{
		backtrack(menuItems[parentId].parent, bool);	
	}
}

function menuShow(id, bool)
{
	var el = document.getElementById("ul_" + id);
	if (el)
	{
		if (bool)
		{
			el.className = "show";
		}
		else
		{
			el.className = "";
		}
	}
}

function changeClassTo(id, classTo)
{
	var el = document.getElementById("a_" + id);
	if(el)
	{
		el.className = "subLink " + classTo;
	}
}

sfHover = function() 
{
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i = 0; i < sfEls.length; i++) 
	{
		sfEls[i].parentNode.onmouseover = function() 
		{
			this.lastChild.className += " sfhover";
		}
		
		sfEls[i].parentNode.onmouseout = function() 
		{
			this.lastChild.className = this.lastChild.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}

if (window.XMLHttpRequest == undefined && ActiveXObject != undefined)
{
	window.attachEvent("onload", sfHover);
}

function swapTTF(id, swapTo) 
{
	var menu = document.getElementById("alphamenu_" + id);
	if (menu)
	{
		menu.className = "menuNormal" + swapTo;
	}
		
	var ttfOver = document.getElementById("ttf_" + id + "_over");
	if (ttfOver)
	{
		ttfOver.style.display == "none" ? ttfOver.style.display = "block" : ttfOver.style.display = "none";
		ttfOver.style.visibility == "hidden" ? ttfOver.style.visibility = "visible" : ttfOver.style.visibility = "hidden";
	}
	
	var ttfOut = document.getElementById("ttf_" + id + "_out");
	if(ttfOut)
	{
		ttfOut.style.display == "block" ? ttfOut.style.display = "none" : ttfOut.style.display = "block";
		ttfOut.style.visibility == "visible" ? ttfOut.style.visibility = "hidden" : ttfOut.style.visibility = "visible";
	}
}
