var delay = 100;
var topNav = $('mainNav');
var els = topNav.getElementsByTagName('a');
var timeouts = {};

for (var i=0; i<els.length; i++)
{
	var link = els[i];
	
	var img = link.getElementsByTagName('img')[0];
	if (img) img['rollover'] = /.+_off.+/.test(img.src);
	
	Event.observe(link, 'mouseover', menuOver, false);
	Event.observe(link, 'focus', menuOver, false);
	Event.observe(link, 'mouseout', menuOut, false);
	Event.observe(link, 'blur', menuOut, false);
}

function menuOver()
{
	var obj = eventTarget( arguments[0] || window.event );
	if (obj.tagName=='IMG') obj = obj.parentNode;
	
	var dd = (obj.parentNode.parentNode==$('mainNav')) ? obj.parentNode : obj.parentNode.parentNode.parentNode;
	
	var img = dd.getElementsByTagName('img')[0];
	if (img['rollover'])
		img.src = img.src.replace(/(.+)_off(.+)/, "$1_on$2");
	
	if (timeouts[dd.id]) { window.clearTimeout(timeouts[dd.id]); delete timeouts[dd.id]; }
	
	var subMenu = dd.getElementsByTagName('dl')[0];
	
	if (subMenu)
		subMenu.style.display = 'block';
}

function menuOut()
{
	var obj = eventTarget( arguments[0] || window.event );
	if (obj.tagName=='IMG') obj = obj.parentNode;
	
	var dd = (obj.parentNode.parentNode==$('mainNav')) ? obj.parentNode : obj.parentNode.parentNode.parentNode;
	
	var img = dd.getElementsByTagName('img')[0];
	
	var subMenu = dd.getElementsByTagName('dl')[0];
	
	if (subMenu)
	{
		if (timeouts[dd.id]) { window.clearTimeout(timeouts[dd.id]); }
		
		timeouts[dd.id] = window.setTimeout(function() { subMenu.style.display = 'none'; if (img['rollover']) img.src = img.src.replace(/(.+)_on(.+)/, "$1_off$2");  }, delay );
	}
	else
	{
		if (img['rollover']) 
			img.src = img.src.replace(/(.+)_on(.+)/, "$1_off$2");
	}
}

function eventTarget(evnt)
{
	if (evnt.target) return evnt.target;
	if (evnt.srcElement) return evnt.srcElement;

	return null;
}