var gMenus = new Array();
var gFadeInterval;
var gMenuIn = null;
var gMenusVisible = false;
var gMenuTime = 50;
var gMenuStep = 0.1;

if(document.getElementById)
{
	window.onload= setMenuHover;
}

function setMenuHover()
{
	var nav, n, m;
	if(nav = document.getElementById('nav'))
	{
		mmAddOpacity(nav);
		for(var x=0; x<nav.childNodes.length; x++)
		{
			n = nav.childNodes[x];
			if(n.nodeType==1)
			{
				n.menuOver = menuOver;
				n.menuOut = menuOut;
				n.onmouseover = n.menuOver;
				n.onfocus = n.menuOver;
				n.onblur = n.menuOut;
				n.onmouseout = n.menuOut;
				m = n.getElementsByTagName('ul').item(0);
				gMenus[gMenus.length] = m;
			}
		}
		gFadeInterval = setInterval(mmFade,gMenuTime);
	}
	else setTimeout(setMenuHover,50);
}

function menuOver()
{
	var m = this.getElementsByTagName('ul').item(0);
	gMenuIn = m;
}

function menuOut()
{
	gMenuIn = null;
	gMenusVisible = true;
}

function mmFade()
{
	var flag = false;
	if(gMenuIn || gMenusVisible)
	{
		var el = gMenuIn;
		var step = gMenuStep;
		var o, m;
		if(el)
		{
			if(!el.style.opacity) el.style.opacity = 0;
			o = el.style.opacity;
			if(o<1)
			{
				el.style.opacity = step+(1*o);
				el.style.visibility = 'visible';
				flag = true;
			}
		}
		for(var x=0; x<gMenus.length; x++)
		{
			m = gMenus[x];
			if(m!=el && m.style.visibility == 'visible')
			{
				flag = true;
				o = m.style.opacity;
				if(o>0) m.style.opacity = -step+(1*o);
				if(o<=step) m.style.visibility = 'hidden';
			}
		}
		if(!flag) gMenusVisible = false;
	}
}

function mmAddOpacity(el)
{
	if(el.getElementsByTagName && el.filters)
	{
		el.attachEvent('onpropertychange',_mmOpacityIE);
		var eps = el.getElementsByTagName('*');
		for(var x=0; x<eps.length; x++)
		{
			eps[x].attachEvent('onpropertychange',_mmOpacityIE)
		}
	}
}

function _mmOpacityIE()
{
	var e = window.event;
	if(e.propertyName=='style.opacity')
	{
		var el = e.srcElement;
		el.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(opacity="+el.style.opacity+")";
	}
}

