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

function menuOpen(childId, parentId)
{
	if (!navigator.userAgent.match(/mobile/gi))
	{
		/**
		 * 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) 
{
	if (!navigator.userAgent.match(/mobile/gi))
	{
		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";
		}
	}
}
