VertMenu = {

	container :null,
	items :null,

	init : function(container, items) {
		this.container = container;
		this.items = items;

		Minimizer.init(this.container);
		VertMenu.initMenuItems();
		if (typeof sessvars != "undefined" && sessvars) {
			if (!VertMenu.isFirstTime()) {
				for ( var i = 0; i < sessvars.verMenuPref.length; i++) {
					if (sessvars.verMenuPref[i].visible == false) {
						Minimizer.minimizeByKey(sessvars.verMenuPref[i].id);
					}
				}
			}
			if (sessvars.selectedMenuItem && !VertMenu.checkSelectedMenuItem()) {
				VertMenu.selectMenuItem(sessvars.selectedMenuItem);
			}
			var self = VertMenu;
			Event.observe(window, "unload", function() {
				var verMenuPref = [];
				for ( var i = 0; i < self.items.length; i++) {
					verMenuPref[verMenuPref.length] = {
						id :self.items[i],
						visible :Element.visible(self.items[i])
					};
					sessvars.verMenuPref = verMenuPref;
					sessvars.$.flush();
				}
			});
		}
	},

	isFirstTime : function() {
		return (typeof sessvars != "undefined" && sessvars)
				&& !sessvars.verMenuPref;
	},

	initMenuItems : function() {
		try {
			var els = document.getElementsByClassName("menu-item",
					this.container);
			// for IE 5,6
			if (els == undefined) {
				var children = ($(this.container) || document.body)
						.getElementsByTagName('*');
				var els = [], child;
				for ( var i = 0, length = children.length; i < length; i++) {
					child = children[i];
					if (Element.hasClassName(child, "menu-item"))
						els.push(Element.extend(child));
				}
			}
		} catch (e) {
			// special for IE 7
			if (els == undefined) {
				var children = ($(this.container) || document.body)
						.getElementsByTagName('*');
				var els = [], child;
				for ( var i = 0, length = children.length; i < length; i++) {
					child = children[i];
					if (Element.hasClassName(child, "menu-item"))
						els.push(Element.extend(child));
				}
			}
		}

		for ( var i = 0; i < els.length; i++) {
			var el = els[i];
			Event.observe(el, "click", function(event) {
				var el = Event.element(event);
				VertMenu.defineSelected(el.href);
			});
		}
	},

	checkSelectedMenuItem : function() {
		var selected = false;

		var findChild = function(parent) {
			if (selected)
				return;
			if (parent && parent.className
					&& Element.hasClassName(parent, "selected-menu-item")) {
				selected = true;
			}
			if (parent.hasChildNodes()) {
				for ( var i = 0; i < parent.childNodes.length; i++) {
					var child = parent.childNodes[i];
					findChild(child);
				}
			}
		};
		findChild($('VertMenu'));
		return selected;
	},

	selectMenuItem : function(href) {
		var els = document.getElementsByTagName('a');
		for ( var i = 0; i < els.length; i++) {
			var value = els[i];
			if (value.href.indexOf(href) >= 0) {
				if (!Element.hasClassName(value.parentNode,
						"selected-menu-item")) {
					Element
							.addClassName(value.parentNode,
									"selected-menu-item");
				}
				break;
			}
		}
	},

	defineSelected : function(href) {
		if (typeof sessvars != "undefined" && sessvars) {
			sessvars.selectedMenuItem = href;
			return true;
		}
		return false;
	}
}