	function Menu() {
		
		var menuItems = [];
		
		function onMenuItemClick(e) {
			if (!e) var e = window.event;
			if (e == null) {
				return;
			}
			var target = (e.target) ? e.target : e.srcElement;
			setSelectedCore(target.id);
		}
		
		function setSelectedCore(menuId) {
			refreshCore();
			for (var i = 0; i < menuItems.length; i++) {
				if (menuItems[i].id == menuId) {
					var menuItem = document.getElementById(menuId);
					if (menuItem != null) {
						menuItem.parentNode.className = "selected";
					}
					
					var subMenuItem = document.getElementById(menuItems[i].subMenuId);
					if (subMenuItem != null) {
						subMenuItem.style.display = "block";
					}
					
					break;
				}
			}
		}
		
		function refreshCore() {
			for (var i = 0; i < menuItems.length; i++) {
				var subMenuItem = document.getElementById(menuItems[i].subMenuId);
				if (subMenuItem != null) {
					subMenuItem.style.display = "none";
				}
				
				var menuItem = document.getElementById(menuItems[i].id);
				if (menuItem != null) {
					menuItem.parentNode.className = "";
				}
			}
		}
		
		this.add = function(id, subMenuId) {
			if (id == null || subMenuId == null) {
				return;
			}
			
			var menuItem = document.getElementById(id);
			if (menuItem == null) {
				return; 
			}
			menuItem.onclick = onMenuItemClick;
			
			var menuItem = {id: id, subMenuId: subMenuId};
			menuItems[menuItems.length] = menuItem;
		}
		
		this.refresh = function() {
			refreshCore();
		}
		
		this.setSelected = function (menuId) {
			setSelectedCore(menuId);
		}
	}
