function Menu() {
	var _activeMenu = null;
	var _me = this;
	var _node;
	
	if (!_node) {
		_node = { 
			ELEMENT_NODE : 1, 
			TEXT_NODE : 3
		};
	}
	
	_me.checkNode = function (node, filter) {
		return (filter == null || node.nodeType == _node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
	}
	
	_me.getChildren = function (node, filter) {
		var result = new Array();
		var children = node.childNodes;
		for(var i = 0; i < children.length; i++){
			if(_me.checkNode(children[i], filter)) result[result.length] = children[i];
		}
		return result;
	}
	
	_me.getChildrenByElement = function (node) {
		return _me.getChildren(node, "ELEMENT_NODE");
	}
	
	_me.getFirstChild = function (node, filter) {
		var child;
		var children = node.childNodes;
		for(var i = 0; i < children.length; i++){
			child = children[i];
			if(_me.checkNode(child, filter)) return child;
		}
		return null;
	}
	
	_me.getFirstChildByText = function (node) {
		return _me.getFirstChild(node, "TEXT_NODE");
	}
	
	_me.getNextSibling = function (node, filter) {
		for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling) {
			if(_me.checkNode(sibling, filter)) {
				return sibling;
			}
		}
		return null;
	}
	
	_me.getNextSiblingByElement = function (node) {
		return _me.getNextSibling(node, "ELEMENT_NODE");
	}
	
	_me.showMenu = function () {
		if(_activeMenu){
			_activeMenu.className = "";
			_me.getNextSiblingByElement(_activeMenu).style.display = "none";
		}
		if(this == _activeMenu){
			_activeMenu = null;
		} else {
			this.className = "active";
			_me.getNextSiblingByElement(this).style.display = "block";
			_activeMenu = this;
		}
		return false;
	}
	
	_me._makeItem = function(obj) {
		var li = document.createElement("li");
		var text = document.createTextNode(obj.Name);
		if (obj.Value != "") {
			var a = document.createElement("a");
			a.href = obj.Value;
			a.target = obj.Target;
			a.appendChild(text);
			li.appendChild(a);
		} else {
			li.appendChild(text);
		}
		
		return li;
	}
	
	_me.init = function () {
		var obj = document.getElementById("menu");
		
		if (obj) {
			var _menu = new MenuContainer();
			
			// Home
			var mnuHome = new Menu("Home", "index.htm", "");
			_menu.Add(mnuHome);
			
			// Stories
			var mnuStories = new Menu("Stories", "", "");
			mnuStories.Add(new MenuItem("A Sister\'s Promise", "stories/ASistersPromise.htm", ""));
			mnuStories.Add(new MenuItem("Blue Star Bros", "stories/BlueStarBrothers.htm", ""));
			mnuStories.Add(new MenuItem("Hand of God", "stories/TheHandOfGod.htm", ""));
			mnuStories.Add(new MenuItem("My Tank\'s Perch", "stories/FromMyTanksPerch.htm", ""));
			mnuStories.Add(new MenuItem("Remembrance of Liberation", "stories/RemembranceOfLiberation.htm", ""));
			mnuStories.Add(new MenuItem("The Later March", "stories/TheLaterMarch.htm", ""));
			mnuStories.Add(new MenuItem("We Meet Again", "stories/WeMeetAgain.htm", ""));
			_menu.Add(mnuStories);
			
			// Blogs
			var mnuBlogs = new Menu("Blogs", "", "");
			mnuBlogs.Add(new MenuItem("Tricia\'s Blog", "http://www.triciagoyer.blogspot.com/", "_blank"));
			mnuBlogs.Add(new MenuItem("GenX Parents", "http://www.genxparents.blogspot.com/", "_blank"));
			mnuBlogs.Add(new MenuItem("Writer\'s Quotes", "http://www.writerquotes.blogspot.com/", "_blank"));
			_menu.Add(mnuBlogs);
			
			// Contact Tricia
			var mnuContactUs = new Menu("Contact Tricia", "contactinfo.htm", "");
			_menu.Add(mnuContactUs);
			
			var _items = _menu.Items;
			for (var i = 0; i < _items.length; i++) {
				var li = _me._makeItem(_items[i]);
				
				if (_items[i].Items.length > 0) {
					var ol = document.createElement("ol");
					for (var j = 0; j < _items[i].Items.length; j++) {
						var liChld = _me._makeItem(_items[i].Items[j]);
						ol.appendChild(liChld);
					}
					li.appendChild(ol);
				}
				obj.appendChild(li);
			}
		}
		
		var menus = _me.getChildrenByElement(document.getElementById("menu"));
		for(var i = 0; i < menus.length; i++) {
			var menu = menus[i];
			text = _me.getFirstChildByText(menu);
			if(text) {
				a = document.createElement("a");
				menu.replaceChild(a, text);
				a.appendChild(text);
				a.href = "#";
				a.onclick = _me.showMenu;
				a.onfocus = function() {
					this.blur();
				}
			}
		}
	}
	
	function MenuContainer(obj) {
		var _items = new Array();
		this.Items =_items;
		
		this.Add = function(obj) {
			_items[_items.length] = obj;
		}
	}
	
	function Menu(Name, Value, Target) {
		var _items = new Array();
		var _name = Name;
		var _value = Value;
		var _target = Target;
		
		this.Items =_items;
		this.Name = _name;
		this.Value = _value;
		this.Target = _target;
		
		this.Add = function(obj) {
			_items[_items.length] = obj;
		}
	}
	
	function MenuItem(Name, Value, Target) {
		var _name = Name;
		var _value = Value;
		var _target = Target;
		
		this.Name = _name;
		this.Value = _value;
		this.Target = _target;
	}
}