function ieHoverSupport() {
	if (!/MSIE (5\.5|6\.)/.test(navigator.userAgent)) {  // bounce back non-IE6
		return; 
	} 
	$$('#nav-main ul li').each(function (el) {
		el.observe('mouseover', addActive, null);
		el.observe('mouseout', removeActive, null);

		var a = el.down('a.subnav-opener');
		var div = el.down('div');
		if (a) { 
			a.observe('mouseover', addChildActive);
			a.observe('mouseout', removeChildActive);
		}
		if (div) { 
			div.observe('mouseout', removeChildActive);
		}
	});
}

function addActive(event) {
	_addActive(event.element());
}
function addChildActive (event) {
	_addActive(event.element().up());
}
function _addActive (el) {
	el.addClassName('hover');
	if (el.hasClassName('with-subnav')) {
		el.addClassName('with-subnav-hover');
	}
	if (el.hasClassName('nav-image')) {
		el.addClassName('nav-image-hover');
	}
}
function removeActive(event) {
	// see http://digitalmemo.neobie.net/2009/03/28/onmouseout-triggered-on-child-element/
	var reltg = (event.relatedTarget) ? event.relatedTarget : event.toElement;
	try {
		while (reltg.tagName != 'BODY'){
			if (reltg.id == this.id) {
				return;
			}
			reltg = reltg.parentNode;
		}
	} catch (e) {
		; // ignore
	}
	_removeActive(event.element());	
}
function removeChildActive (event) {
	var reltg = (event.relatedTarget) ? event.relatedTarget : event.toElement;
	try {
		while (reltg.tagName != 'BODY'){
			if (reltg.id == this.parentNode.id) {
				return;
			}
			reltg = reltg.parentNode;
		}	
	} catch (e) {
		; // ignore
	}
	_removeActive(event.element().up());
}
function _removeActive (el) {
	el.removeClassName('hover');
	if (el.hasClassName('with-subnav')) {
		el.removeClassName('with-subnav-hover');
	}
	if (el.hasClassName('nav-image')) {
		el.removeClassName('nav-image-hover');
	}
}

Event.observe(window, 'load', ieHoverSupport);
