var menuBar = (function() {
	var that = {};
	var timer = null;
	var open = null;
	var activate = function(e) {
		if (cvhUtils.checkMouseMove(e, this)) {
			if (timer) {
				clearTimeout(timer);
			}
			if (open) {
				cvhUtils.removeClassName('active', open);
				cvhUtils.removeClassName('highlight', open);
			}
			cvhUtils.addClassName('highlight', this);
			open = this.parentNode;
			var submenu = open.getElementsByTagName('ul');
			if (submenu[0]) {
				var subitems = open.getElementsByTagName('li');
				for (var i = 0; i < subitems.length; i++) {
					subitems[i].onmouseover = propopen; 
					subitems[i].onmouseout = removeprop;
				}
			}
			cvhUtils.addClassName('active', open);
			cvhUtils.addClassName('highlight', open);
		}
	}
	var propopen = function() {
		cvhUtils.addClassName('highlight', that.firstElement(this));
		cvhUtils.addClassName('highlight', this);
		clearTimeout(timer);
	}
	var removeprop = function() {
		cvhUtils.removeClassName('highlight', that.firstElement(this));
		cvhUtils.removeClassName('highlight', this);
		timer = setTimeout(function() {that.hide(open)}, 1000);
	}
	var deactivate = function() {
		cvhUtils.removeClassName('highlight', open);
		cvhUtils.removeClassName('highlight', that.firstElement(open));
		timer = setTimeout(function() {that.hide(open)}, 1000);
	}
	that.hide = function(target) {
		cvhUtils.removeClassName('active', open);
	}
	that.firstElement = function(parentNode) {	
		var child = parentNode.firstChild;
		var element = false;
		while (child != null) {
			if (child.nodeType == 1) {
				element = child;
				break;
			}
			child = child.nextSibling;
		}
		return child;
	}
	that.init = function() {
		var list = document.getElementById('topmainnav').getElementsByTagName('ul')[0];
		cvhUtils.removeClassName('static', list);
		cvhUtils.addClassName('scripted', list);
		var item = list.firstChild;
		while (item != null) {
			if (item.nodeType == 1 && that.firstElement(item) && (that.firstElement(item).nodeName.toLowerCase() == 'a' || that.firstElement(item).nodeName.toLowerCase() == 'p' )) {
				that.firstElement(item).onmouseover = activate;
				that.firstElement(item).onmouseout = deactivate;
			}
			item = item.nextSibling;
		}
	}
	return that;
})();
