function initNav() {
	var liElements = $$('#primary_nav > ul > li > a');
  liElements.invoke('observe', 'mouseover', navTopMouseOver);
  liElements.invoke('observe', 'mouseout', navMouseOut);
	var liElements = $$('#primary_nav ul ul > li > a');
  liElements.invoke('observe', 'mouseover', navSubMouseOver);
  liElements.invoke('observe', 'mouseout', navMouseOut);
  timeouts = new Hash();
}

function navTopMouseOver(event) {
	var element = event.element();
	var liElement = element.up('li');
	// collapse other expanded items
	$$('#primary_nav > ul > li.expanded').each(function(o) {
		if (o != liElement) {
			o.removeClassName('expanded');
			o.addClassName('collapsed');
		}
	});
	// if a flyout menu
	if (liElement.hasClassName('expandable')) {
		// expand
		if (liElement.hasClassName('collapsed')) {
			liElement.addClassName('expanded');
			liElement.removeClassName('collapsed');
		}
		// keep open
		var timeoutID = timeouts.get(liElement.id);
		if (timeoutID) {
			clearTimeout(timeoutID);
		}
	}
}
function navSubMouseOver(event) {
	var element = event.element();
	var liElement = element.up('li.expanded');
	// keep open
	var timeoutID = timeouts.get(liElement.id);
	if (timeoutID) {
		clearTimeout(timeoutID);
	}
}

function navMouseOut(event) {
	var element = event.element();
	var liElement = element.up('li.expanded');
	// if a flyout or in a flyout menu
	if (liElement) {
		// schedule for closing/collapsing
		var timeoutID = setTimeout(
			function() {
				liElement.addClassName('collapsed');
				liElement.removeClassName('expanded');
			},
			500
		);
		timeouts.set(liElement.id, timeoutID);
	}
}