//trigger initialiserfunction menuInitTrigger(menuTrigger){	//null menu object	var menuMenu = null;	//moz needs this         //mac/ie5 needs this	if(menuTrigger.firstChild && menuTrigger.firstChild.nextSibling)	{		//get menu object		menuMenu = menuTrigger.childNodes[2];	}	//bind menu mouse-opener	menuTrigger.onmouseover = function()	{		this.menuShowMenu();	}	//bind menu mouse-closer	menuTrigger.onmouseout = function(e)	{		this.menuHideMenu(e);	}	//menu opening function	menuTrigger.menuShowMenu = function()	{		//rollover				menuTrigger.firstChild.style.backgroundColor = '#ffffff'; //ffefcf		menuTrigger.firstChild.style.color = '#000000'; //806020		//if trigger has menu		if(menuMenu != null)		{			//tweak top position			menuMenu.style.marginTop = (0-menuTrigger.offsetHeight)+'px';						//show menu			menuMenu.style.visibility = 'visible';		}	}	//menu mouse-closing function	menuTrigger.menuHideMenu = function(e)	{		if(!e) { e = window.event; }		//if event came from outside current trigger branch		if(!menuTrigger.contains(e.relatedTarget || e.toElement))		{			//rollout			menuTrigger.firstChild.style.backgroundColor = '#000000'; //ffc			menuTrigger.firstChild.style.color = '#ffffff'; //008000			//if trigger has menu			if(menuMenu != null)			{				//hide menu				menuMenu.style.visibility = 'hidden';			}		}	}	if(!(menu.macie||menu.winie))	{				menuTrigger.contains = function(node)		{			if (node == null) { return false; }			if (node == this) { return true; }			else { return this.contains(node.parentNode); }		}	}}//navbar objectfunction menuNavbar(ulTree){	//object	menu.nav = this;	//ul tree	menu.tree = ulTree;	//invalidate markup so it works in win/ie	if(menu.winie)	{		//get inner HTML		menu.html = menu.tree.innerHTML;		//replace <li> with <div> to prevent excess margins		//sorry - I know this invalidates the DOM		//but invalid markup is the only language it understands ...		menu.html = menu.html.replace(/<([\/]?)li/ig,'<$1div');		//write back to tree		menu.tree.innerHTML = menu.html;	}	//get trigger elements 	(menu.xdom) ? menu.tagNames = 'li' : (menu.winie) ? menu.tagNames = 'DIV' : menu.tagNames = 'LI'; 	menu.listItems = menu.tree.getElementsByTagName(menu.tagNames); 	menu.listLen = menu.listItems.length; 	//initialise 	for(i=0; i<menu.listLen; i++) 	{ 		menuInitTrigger(menu.listItems[i]); 	}}//menu treevar tree = null;//menu objectvar menu = new Object;menu.ua = navigator.userAgent.toLowerCase();menu.op6 = (menu.ua.indexOf("opera 6")!=-1||menu.ua.indexOf("opera/6")!=-1)?true:false;menu.dom = (typeof document.getElementById!="undefined"&&typeof document.createElement!="undefined"&&!menu.op6)?true:false;menu.winie = (menu.dom&&typeof document.all!="undefined"&&typeof window.opera=="undefined")?true:false;menu.macie = (menu.winie&&menu.ua.indexOf("mac")!=-1)?true:false;if(menu.macie){menu.winie=false;}menu.xdom = (menu.dom&&typeof document.write=='undefined')?true:false;//initiatewindow.onload = function(){	//if browser is supported	if(menu.dom)	{		//tree object		tree = document.getElementById('menu');		if(tree != null)		{			//create navbar object			menu.nav = new menuNavbar(tree)		}	}}