if( navigator.appName == 'Microsoft Internet Explorer' )
{
	var isIE = true;
}
else
{
	var isIE = false;
}

var curOpenMenu = false;
var curOpenTiming = false;

var fadeTiming = false;
var fadePercent = 0.85;
var fadePercentReverse = 0;

var mouseOutTimeout = 500;
var mouseOverTimeout = 0;
var mouseMoveTimeout = 0;

function menuUnfade()
{
	if( fadeTiming )
	{
		clearFading();

		if( isIE )
			document.getElementById( curOpenMenu ).filters.alpha.opacity = fadePercent * 100;
		else
			document.getElementById( curOpenMenu ).style.MozOpacity = '';
	}
}

function menuFadeReverse()
{
	if( !curOpenMenu )
	{
		clearFadingReverse();
		return false;
	}

	fM = document.getElementById( curOpenMenu )

	if( (isIE && (fM.filters.alpha.opacity != '' && fM.filters.alpha.opacity >= fadePercent * 100) ) ||
	(fM.style.MozOpacity != '' && fM.style.MozOpacity >= fadePercent ) )
	{
		//alert('Non-Maximum Fade');
		clearFadingReverse();
		//hideMenu( curOpenMenu );
	}
	else
	{
		fadePercentReverse += 0.05;
		//alert('Fading menu to ' + document.getElementById( curOpenMenu ).style.MozOpacity );
		if( isIE )
			fM.filters.alpha.opacity = fadePercentReverse * 100;
		else
			fM.style.MozOpacity = fadePercentReverse;

		fadeTiming=setTimeout( 'menuFadeReverse(curOpenMenu)', 12 );
	}
}

function clearFadingReverse()
{
	if( fadeTiming )
		clearTimeout( fadeTiming );

	fadePercent = 0.85
	fadePercentReverse = 0;

	if( curOpenMenu )
	{
		if( isIE )
			document.getElementById( curOpenMenu ).filters.alpha.opacity = fadePercent * 100;
		else
			document.getElementById( curOpenMenu ).style.MozOpacity = '';
	}
}

function clearFading()
{
	if( fadeTiming)
		clearTimeout( fadeTiming );

	fadePercent = 0.85;
	fadePercentReverse = 0;

	if( curOpenMenu )
	{
		if( isIE )
			document.getElementById( curOpenMenu ).filters.alpha.opacity = fadePercent * 100;
		else
			document.getElementById( curOpenMenu ).style.MozOpacity = '';
	}
}

function menuFade()
{
	if( !curOpenMenu )
	{
		clearFading();
		return false;
	}

	fM = document.getElementById( curOpenMenu )

	if( (isIE && (fM.filters.alpha.opacity != '' && fM.filters.alpha.opacity <= 10) ) ||
	(fM.style.MozOpacity != '' && fM.style.MozOpacity <= 0.1) )
	{
		//alert('Non-Minimum Fade');
		clearFading();
		hideMenu( curOpenMenu );
	}
	else
	{
		fadePercent = fadePercent - 0.05;
		//alert('Fading menu to ' + document.getElementById( curOpenMenu ).style.MozOpacity );
		if( isIE )
			fM.filters.alpha.opacity = fadePercent * 100;
		else
			fM.style.MozOpacity = fadePercent;

		fadeTiming=setTimeout( 'menuFade(curOpenMenu)', 12 );
	}
}

function menuTimeoutHandler( timeOut )
{
	if( timeOut > 0 )
	{
		//alert('Called ' + curOpenMenu + ' for ' + timeOut + 'ms');
		//curOpenTiming=setTimeout( 'hideMenu(curOpenMenu)', timeOut);
		curOpenTiming=setTimeout( 'menuFade(curOpenMenu)', timeOut);
	}
	else
	{
		//alert('Timeout on ' + curOpenMenu );
		clearTimeout( curOpenTiming );
		curOpenTiming = false;
	}
}

function hideMenu( menuId )
{
	//alert('Closing ' + menuId );
	if( menuId )
	{
		if( curOpenTiming )
		{
			clearTimeout( curOpenTiming );
			curOpenTiming = false;
		}

		if( fadeTiming )
			clearFading();

		document.getElementById( menuId + 'Icon' ).onmouseout  = function(){ };
		document.getElementById( menuId + 'Icon' ).onmouseover  = function(){ };

		var	mR = document.getElementById( menuId );
		mR.style.display = 'none';
		mR.innerHTML = '';
		curOpenMenu = false;
	}
}

function showMenu( menuId, menuType, fDir, fName )
{
	args = showMenu.arguments;
	curOpenMenu = menuId;
	mR = document.getElementById( menuId );


	mR.style.display='';
	mR.className = 'objMenu';
	mR.onmouseout  = function(){ menuTimeoutHandler(mouseOutTimeout); }
	mR.onmouseover = function(){ menuTimeoutHandler(mouseOverTimeout); }
	//mR.onclick     = function(){ hideThisMenu() }
	//mR.onmousemove = function(){ menuTimeoutHandler(mouseMoveTimeout) }

	document.getElementById( menuId + 'Icon' ).onmouseout  = function(){ menuTimeoutHandler(mouseOutTimeout); };
	document.getElementById( menuId + 'Icon' ).onmouseover  = function(){ menuTimeoutHandler(mouseOverTimeout); };

	if( isIE )
	{
		//mR.filters.alpha.opacity=100;
		mR.filters.alpha.opacity=0;
	}
	else
	{
		//mR.style.MozOpacity = '';
		mR.style.MozOpacity = 0;
	}

	if( args.length > 4 )
	{
		fillHtmlMenu( mR, menuType, fDir, fName, args[4], args[5], args[6], args[7] )
	}
	else
	{
		fillHtmlMenu( mR, menuType, fDir, fName )
	}
}

function fillHtmlMenu()
{
	args = fillHtmlMenu.arguments;
	//alert( args.length );

	menuObj = args[0];
	menuType = args[1];
	fDir = args[2];
	fName = args[3];

	if( menuType == 'dir' )
	{
		menuObj.style.height = '50px';

		if( fName.length > 20 )
		{
			fNameStr = fName.substr(0,17) + '...';
		}
		else
		{
			fNameStr = fName;
		}

		menuObj.innerHTML = "<div class=\"menuTitle\" title=\"" + fName + "\">" + fNameStr + "<a href='javascript:void(0);' onclick='hideThisMenu(this);return false;'><img src='/Downloads/index.php?img=close.gif' class='menuClose' alt='X' title='Close menu' /></a></div>"
						  + "<div><a href=\"/Downloads/index.php?dir=" + escape( fDir + fName ) + "\">Open Directory</a></div>"
						  + "<div><a href=\"/Downloads/index.php?dir=" + escape( fDir + fName ) + "\" target=\"_blank\">Open in a new window</a></div>";
	}
	else if( menuType == 'img' )
	{
		if( args.length > 4 )
		{
			fSize = args[4];
			iWidth = args[5];
			iHeight = args[6];
			fMime = args[7];
		}

		if( fName.length > 20 )
			{
			fNameExt = fName.substr( fName.lastIndexOf('.')+1, fName.length );
			fNameStr = fName.substr(0,13) + '...' + fNameExt;
		}
		else
		{
			fNameStr = fName;
		}

		menuObj.innerHTML = "<div class=\"menuTitle\" title=\"" + fName + "\">" + fNameStr + "<a href='javascript:void(0);' onclick='hideThisMenu(this);return false;'><img src='/Downloads/index.php?img=close.gif' class='menuClose' alt='X' title='Close menu' /></a></div>"
						  + "<div class=\"fileInfo\"><img src='/Downloads/index.php?img=small_img.gif' alt='I' class='nonFade' width='16' height='16'/> " + iWidth + "x" + iHeight + ", " + fMime + ", " + fSize + "kb</div>"
						  + "<div><a href=\"" + escape( fDir + fName ) + "\">Open image</a></div>"
						  + "<div><a href=\"" + escape( fDir + fName ) + "\" target=\"_blank\">Open in a new window</a></div>"
						  + "<div><a href=\"http://www.wowroster.net/Downloads/gd.image2asci.php?url=http://www.wowroster.net/Downloads/" + escape( fDir + fName ) + "&amp;gz\">Show in ASCII</a></div>"
						  + "<div><a href=\"http://www.wowroster.net/Downloads/gd.image2html.php?url=http://www.wowroster.net/Downloads/" + escape( fDir + fName ) + "&amp;gz&amp;red\">Show in HTML</a></div>"
						  + "<div><a href=\"http://www.wowroster.net/Downloads/gd.image2htmltable.php?url=http://www.wowroster.net/Downloads/" + escape( fDir + fName ) + "&amp;gz&amp;red\">Show in HTML Table</a></div>"
						  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;download\">Download</a></div>";
	}
	else if( menuType == 'php' || menuType == 'phps' )
	{
		if( args.length > 4 )
		{
			fSize = args[4];
			fMime = args[5];
		}

		if( fName.length > 20 )
		{
			fNameExt = fName.substr( fName.lastIndexOf('.')+1, fName.length );
			fNameStr = fName.substr(0,13) + '...' + fNameExt;
		}
		else
		{
			fNameStr = fName;
		}

		if( menuType == 'php' )
		{
			menuObj.innerHTML = "<div class=\"menuTitle\" title=\"" + fName + "\">" + fNameStr + "<a href='javascript:void(0);' onclick='hideThisMenu(this);return false;'><img src='/Downloads/index.php?img=close.gif' class='menuClose' alt='X' title='Close menu' /></a></div>"
							  + "<div class=\"fileInfo\">" + fMime + " " + fSize + "kb</div>"
							  + "<div><a href=\"" + escape( fDir + fName ) + "\">Open</a></div>"
							  + "<div><a href=\"" + escape( fDir + fName ) + "\" target=\"_blank\">Open in New Window</a></div>"
							  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;source\">View Colorized Source</a></div>"
							  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;text\">View Text Source</a></div>"
							  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;download\">Download</a></div>";
		}
		else
		{
			menuObj.innerHTML = "<div class=\"menuTitle\" title=\"" + fName + "\">" + fNameStr + "<a href='javascript:void(0);' onclick='hideThisMenu(this);return false;'><img src='/Downloads/index.php?img=close.gif' class='menuClose' alt='X' title='Close menu' /></a></div>"
							  + "<div class=\"fileInfo\">" + fMime + " " + fSize + "kb</div>"
							  + "<div><a href=\"" + escape( fDir + fName ) + "\">Open</a></div>"
							  + "<div><a href=\"" + escape( fDir + fName ) + "\" target=\"_blank\">Open in New Window</a></div>"
							  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;text\">View Text Source</a></div>"
							  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;download\">Download</a></div>";
		}
	}
	else if( menuType == 'htm' || menuType == 'html' )
	{
		if( args.length > 4 )
		{
			fSize = args[4];
			fMime = args[5];
		}

		if( fName.length > 20 )
		{
			fNameExt = fName.substr( fName.lastIndexOf('.')+1, fName.length );
			fNameStr = fName.substr(0,13) + '...' + fNameExt;
		}
		else
		{
			fNameStr = fName;
		}

		menuObj.innerHTML = "<div class=\"menuTitle\" title=\"" + fName + "\">" + fNameStr + "<a href='javascript:void(0);' onclick='hideThisMenu(this);return false;'><img src='/Downloads/index.php?img=close.gif' class='menuClose' alt='X' title='Close menu' /></a></div>"
						  + "<div class=\"fileInfo\">" + fMime + " " + fSize + "kb</div>"
						  + "<div><a href=\"" + escape( fDir + fName ) + "\">Open</a></div>"
						  + "<div><a href=\"" + escape( fDir + fName ) + "\" target=\"_blank\">Open in New Window</a></div>"
						  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;text\">Show as Text</a></div>"
						  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;download\">Download</a></div>";
	}
	else
	{
		if( args.length > 4 )
		{
			fSize = args[4];
			fMime = args[5];
		}

		if( fName.length > 20 )
		{
			fNameExt = fName.substr( fName.lastIndexOf('.')+1, fName.length );
			fNameStr = fName.substr(0,13) + '...' + fNameExt;
		}
		else
		{
			fNameStr = fName;
		}

		menuObj.innerHTML = "<div class=\"menuTitle\" title=\"" + fName + "\">" + fNameStr + "<a href='javascript:void(0);' onclick='hideThisMenu(this);return false;'><img src='/Downloads/index.php?img=close.gif' class='menuClose' alt='X' title='Close menu' /></a></div>"
						  + "<div class=\"fileInfo\">" + fMime + " " + fSize + "kb</div>"
						  + "<div><a href=\"" + escape( fDir + fName ) + "\">Open Archive</a></div>"
						  + "<div><a href=\"" + escape( fDir + fName ) + "\" target=\"_blank\">Open in a new window</a></div>"
						  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;text\">Show as Text</a></div>"
						  + "<div><a href=\"/Downloads/index.php?show=1&amp;dir=" + escape( fDir ) + "&amp;file=" + escape( fName ) + "&amp;download\">Download</a></div>";
	}

	IEfix();
}

function toggleMenu( menuId,  menuType, fDir, fName )
{
	args = toggleMenu.arguments;

	if( curOpenMenu == menuId )
	{
		//hideMenu( menuId );
		menuFade( );
	}
	else
	{
		hideMenu( curOpenMenu );

		if( args.length > 4 )
		{
			showMenu( menuId, menuType, fDir, fName, args[4], args[5], args[6], args[7] )
		}
		else
		{
			showMenu( menuId, menuType, fDir, fName )
		}
		menuFadeReverse();
	}
}

function hideThisMenu()
{
	menuFade( curOpenMenu );
	//hideMenu( curOpenMenu );
}

function goToUrl( url )
{
	document.location = url;
}

function IEfix()
{
	if( isIE && parseFloat(navigator.appVersion) < 7 )
	{
		var imgs = document.getElementsByTagName('img');
		var n;

		for( n in imgs )
		{
			imgs[n].onmouseover = function() { this.filters.alpha.opacity=100; }
			imgs[n].onmouseout  = function() { this.filters.alpha.opacity=60; }
		}
	}
}
