function MenuHoverManager(id, /*optional*/ timeout) {

	var liLevel1List = getElementsByClass('level1', document.getElementById(id));
	var timeout = timeout || 1000;
	var offCounter = 0;
	var resetCounter = 0;
	var that = this;

	function menuClearHovers() {
		var li;
		for (var i=0; i<liLevel1List.length; ++i) {
			li = liLevel1List[i];
			removeClass(li, 'jshover');
		}
	}

	function mouseOver(el) {
		menuClearHovers();
		addClass(el, 'jshover');
	}

	function mouseOut() {
		++offCounter;
		setTimeout(function () {
		           	++resetCounter;
		           	if (offCounter==resetCounter) {
		           		menuClearHovers();
		           	}
		           }, timeout
		);
	}

	this.init = function () {
		var li, aChild;
		for (var i=0; i<liLevel1List.length; ++i) {
			li = liLevel1List[i];
			aChild = li.firstChild;
			if (!aChild) {

				aChild.onmouseover = function () {
					mouseOver(this.parentNode);
				};
			
				aChild.onmouseout = mouseOut;

			} else {

				li.onmouseover = function () {
					mouseOver(this);
				};
			
				li.onmouseout = mouseOut;

			}
		}
	}

}