/* 
	PopUp Menu
*/

		function hasDOM()
		{
			return ( document.implementation && document.implementation.hasFeature('HTML','') );
		}

		function getObject(id)
		{
			if ( hasDOM() )
			{
				return document.getElementById(id);
			}
			else if ( document.all )
			{
				return document.all[id];
			}
			else if ( document.layers )
			{
				return document.layers[id];
			}

			return null;
		}
		
		function hideObject(obj)
		{
			if ( obj.style ) { obj = obj.style; }
			obj.visibility = 'hidden';
		}

		function showObject(obj)
		{
			if ( obj.style ) { obj = obj.style; }
			obj.visibility = 'visible';
		}
		
		function isObjectVisible(obj)
		{
			if ( obj.style ) { obj = obj.style; }
			return (obj.visibility == 'visible');
		}
		
		function registerMenu(menu, parent)
		{
			if ( document.layers )
			{
				objPopup  = getObject(menu);
				objParent = getObject(parent);
			
				objPopup.parent = objParent;
				objPopup.onMouseOver = popupMouseOver;
				objPopup.onMouseOut = popupMouseOut;
			}
		}
		
		function hideMenu(menu)
		{
			hideObject(getObject(menu));
			window.currentMenu = null;
		}
		
		function parentMouseOver(evt, menu, parent)
		{
			objPopup  = getObject(menu);
			objParent = getObject(parent);

			if ( window.currentMenu && window.currentMenu != objPopup )
			{
				hideObject(window.currentMenu);
			}

			window.clearTimeout(currentTimer);
			window.currentMenu = objPopup;

			if ( ! isObjectVisible(objPopup) ) 
			{
				showObject(objPopup);
			}
			
			return true;
		}
				
		function parentMouseOut(evt, menu, parent) 
		{
			if ( ! evt ) evt = window.event;
					
			objPopup  = getObject(menu);
			objParent = getObject(parent);
			
			window.currentMenu = objPopup;

			window.currentTimer = window.setTimeout("hideMenu('" + objPopup.id + "')", 500);
						
			return true;
		}

		function parentMouseOverNetscape(evt, menu, parent) 
		{
		    objPopup  = getObject(menu);
			if ( window.currentMenu && window.currentMenu != objPopup )
			{
				hideObject(window.currentMenu);
			}
			
			if ( document.layers)
			{
				registerMenu(menu, parent);
				return parentMouseOver(evt, menu, parent);
			}
			
			return false;
		}

		function parentMouseOutNetscape(evt, menu, parent) 
		{
			if ( document.layers)
			{
				return parentMouseOut(evt, menu, parent);
			}
			
			return false;
		}
		
		function popupMouseOver(evt, menu, parent) 
		{
			if ( ! evt ) evt = window.event;
			
			window.clearTimeout(window.currentTimer);
			
			if ( window.currentTimerPar )
			{   
			    window.clearTimeout(window.currentTimerPar);
			}

			if ( document.layers )
			{
				objPopup = evt.target;
				objParent = objPopup.parent;
			}
			else
			{
				objPopup  = getObject(menu);
				objParent = getObject(parent);
			}

			window.currentMenu = objPopup;
			return true;
		}
		
		function popupMouseOut(evt, menu, parent) 
		{
			if ( ! evt ) evt = window.event;
			
			if ( document.layers )
			{
				objPopup = evt.target;
				objParent = objPopup.parent;
			}
			else
			{
				objPopup  = getObject(menu);
				objParent = getObject(parent);
			}
			
			window.currentTimer = window.setTimeout("hideMenu('" + objPopup.id + "')", 200);
						
			return true;
		}
		
// Submenu

function registerSubMenu(evt, menu, parent)
		{
			if ( document.layers )
			{
				if ( ! evt ) evt = window.event;
				
				objPopup  = getObject(menu);
				objParent = getObject(parent);
			
				objPopup.parent = objParent;
				objPopup.onMouseOver = subOver;
				objPopup.onMouseOut = subOutNS;
			}
		}
		

function subMouseOver(evt, menu, parent)
		{
			objPopup  = getObject(menu);
			
			if ( document.layers )
			{
				registerSubMenu(evt, menu, parent);
			}
			
			window.clearTimeout(currentTimer);
			window.currentSubMenu = objPopup;

			if ( ! isObjectVisible(objPopup) ) 
			{	
				showObject(objPopup);
			}
			
			return true;
		}

function subOver(evt, menu, parent)
		{
			objPopup  = getObject(menu);
			objParent = getObject(parent);
			
			window.clearTimeout(window.currentTimerSub);
			window.clearTimeout(window.currentTimerPar);
			window.clearTimeout(window.currentTimer);
				
			return true;
		}

function subOutNS(evt, menu, parent) 
		{
			if ( ! evt ) evt = window.event;
			
			if ( document.layers )
			{
				objPopup = evt.target;
				objParent = objPopup.parent;
			}
			else
			{
				objPopup  = getObject(menu);
				objParent = getObject(parent);
			}
			
			window.currentTimer = window.setTimeout("hideMenu('" + objPopup.id + "')", 200);
			window.currentTimer = window.setTimeout("hideMenu('" + objParent.id + "')", 200);
						
			return true;
		}

function subOut(evt, menu, parent)
		{
			if ( ! evt ) evt = window.event;
			
			objPopup  = getObject(menu);
			objParent = getObject(parent);
			
			if ( isObjectVisible(objPopup) ) 
				{
			   		 window.currentTimerSub = window.setTimeout("hideMenu('" + objPopup.id + "')", 100);
					 window.currentTimerPar = window.setTimeout("hideMenu('" + objParent.id + "')", 200);
				}
			
			return true;
		}

function subMouseOut(evt, menu)
		{
			objPopup  = getObject(menu);
			
			
			if ( document.layers)
			{
	            window.currentTimerSub = window.setTimeout("parentMouseOut('"+evt+ "','" + objPopup.id + "','')", 100);
			} else {		
				if ( isObjectVisible(objPopup) ) 
			    {
			    window.currentTimerSub = window.setTimeout("hideMenu('" + objPopup.id + "')", 100);
			    }
			}
			return true;
		}
