function Navigation() {}
	
	Navigation.On = function()
	{
		this.isOn = true;
		
		if (this.menuType == "menu")
		    setTimeout('$("#'+this.id+'").css("display", "block")', 20);
			//$("#"+this.id).slideDown("fast");
		else
			this.className = "on";
	}
	
	Navigation.Off = function()
	{
		this.isOn = false;
		
		if (this.menuType == "menu")
		    setTimeout('$("#'+this.id+'").css("display", "none")', 20);
			//$("#"+this.id).slideUp("fast");
		else
			this.className = "";
	}
	
	Navigation.Menu = function() {}
		
		Navigation.Menu.Initialize = function(id)
		{
			var obj = document.getElementById(id);
			if (obj)
			{
				obj.menuType = "menu";
				obj.isOn = false;
				obj.Opener = undefined;
				obj.onmouseover = Navigation.Menu.OnMouseOver;
				obj.onmouseout = Navigation.Menu.OnMouseOut;
				obj.On = Navigation.On;
				obj.Off = Navigation.Off;
				obj.Open = Navigation.Menu.Open;
				obj.Show = Navigation.Menu.Show;
				obj.Hide = Navigation.Menu.Hide;
				
				return obj;
			}
			else
				return undefined;
		}

		Navigation.Menu.OnMouseOver = function()
		{
			this.Show();
		}
		
		Navigation.Menu.OnMouseOut = function()
		{
			this.isOn = false;
			setTimeout("Navigation.Menu.Hide('"+this.id+"')", 20);
		}
		
		Navigation.Menu.Open = function(opener)
		{
			this.Opener = opener;
			this.On();
		}
		
		Navigation.Menu.Show = function()
		{
			this.On();
			
			if (this.Opener != undefined)
			{
				this.Opener.On();
				
				if (this.Opener.Menu != undefined)
					this.Opener.Menu.Show();
			}
		}
		
		Navigation.Menu.Hide = function(id)
		{
			var obj = (id == undefined) ? this : document.getElementById(id);
			if (obj && !obj.isOn)
			{
				obj.Off();
				
				if (obj.Opener != undefined)
				{
					obj.Opener.Off();
					
					if (obj.Opener.Menu != undefined)
						obj.Opener.Menu.onmouseout();
				}
			}
		}
		
	Navigation.MenuItem = function() {}
		
		Navigation.MenuItem.Initialize = function(id, menu)
		{
			var obj = document.getElementById(id);
			if (obj)
			{
				if (menu == undefined)
					menu = Navigation.MenuItem.GetMenu(obj);
				
				obj.menuType = "item";
				obj.isOn = false;
				obj.Menu = menu;
				obj.SubMenu = Navigation.Menu.Initialize("s"+id, obj);
				obj.onmouseover = Navigation.MenuItem.OnMouseOver;
				obj.onmouseout = Navigation.MenuItem.OnMouseOut;
				obj.On = Navigation.On;
				obj.Off = Navigation.Off;
				obj.Exit = Navigation.MenuItem.Exit;
				
				return obj;
			}
			else
				return undefined;
		}

		Navigation.MenuItem.OnMouseOver = function()
		{
			this.On();
			
			if (this.SubMenu != undefined)
				this.SubMenu.Open(this);
		}
		
		Navigation.MenuItem.OnMouseOut = function()
		{
			this.isOn = false;
			setTimeout("Navigation.MenuItem.Exit('"+this.id+"')", 20);
		}
		
		Navigation.MenuItem.Exit = function(id)
		{
			var obj = (id == undefined) ? this : document.getElementById(id);
			if (obj && !obj.isOn)
			{
				obj.Off();
				
				if (obj.SubMenu != undefined)
					obj.SubMenu.Off();
			}
		}
		
		Navigation.MenuItem.GetMenu = function(obj)
		{
			var menu = obj;
			while (menu && (menu.menuType == undefined || menu.menuType != "menu"))
				menu = menu.parentNode;
			
			if (menu && menu.id != obj.id)
				return menu;
			else
				return undefined;
		}
