/* DROPDOWN MENU - ALTERNATIVE */

var mainMenuID = 'topmenu';
var dropdownMenuID = 'dropdownID';
var subMenuClass = 'submenu';
var dropdownMenuClass = 'dropdownmenu';
var iframeID = 'iframeID';

var dropdownMenues = new Array();
var dropdownMenuIframes = new Array(); /* Only used for IE */
var lastMenuNumber = -1;
var stillHover;
var minWidthPixels = 120; /* Only used for IE */
var setWidth = '10em'; /* Only used for IE */

function menuInit()
{
    var subMenuItemsCount = 0;
	var elementItems = document.getElementById( mainMenuID ).getElementsByTagName( 'div' );

	for( var k = 0; k < elementItems.length; k++ )
	{
		if( elementItems[k].className == subMenuClass )
		{
			dropdownMenues[subMenuItemsCount] = elementItems[k].id = dropdownMenuID + subMenuItemsCount;

            elementItems[k].className = dropdownMenuClass;

            if( /MSIE [567]/.test( navigator.appVersion ) )
            {
                var newIframe = document.createElement( 'iframe' );

           		dropdownMenuIframes[subMenuItemsCount] = iframeID + subMenuItemsCount;
                newIframe.setAttribute( 'id', dropdownMenuIframes[subMenuItemsCount] );
                elementItems[k].appendChild( newIframe );
            }

			subMenuItemsCount++;
		}
	}
}


/* DROPDOWN CONTROL */

function menuHover()
{
	stillHover = true;
}

function menuOut()
{
	stillHover = false;
}

function switchDropdown( element )
{
    element.blur();

    var getElement = element.nextSibling.id;

    if( !getElement ) /* Triggered only by IE, as element order differs from others */
    {
        getElement = element.nextSibling.nextSibling.id;
    }

    var idPattern = new RegExp( '^' + dropdownMenuID + '(\\d+)' );

	if( idPattern.test( getElement ) )
	{
		var currentMenuNumber = RegExp.$1;
	}
	else
	{
		return false;
	}

	if( lastMenuNumber == currentMenuNumber )
	{
	    hideDropdown( currentMenuNumber )
	    lastMenuNumber = -1;
	}
	else
	{
	    if( lastMenuNumber >= 0 )
	    {
	        hideDropdown( lastMenuNumber );
	    }

	    showDropdown( currentMenuNumber );

        lastMenuNumber = currentMenuNumber;
	    stillHover = true;
	}
}

function showDropdown( menuNumber )
{
    var currentMenu = document.getElementById( dropdownMenues[menuNumber] );
	currentMenu.style.display = 'block';
    currentMenu.parentNode.firstChild.className = 'menuhover';
    var leftAdjust;

    if( /MSIE [567]/.test( navigator.appVersion ) ) /* Only if IE */
    {
        var currentIframe = document.getElementById( dropdownMenuIframes[menuNumber] );

        if( currentMenu.offsetWidth < minWidthPixels )
        {
            currentMenu.style.width = setWidth;
        }

        currentIframe.style.height = currentMenu.offsetHeight;
        currentIframe.style.width = currentMenu.offsetWidth;
    }

    var leftAdjust = - ( ( currentMenu.offsetWidth / 2 ) - ( currentMenu.parentNode.firstChild.offsetWidth / 2) );
    if( currentMenu.parentNode.parentNode.offsetWidth < ( currentMenu.parentNode.offsetLeft + leftAdjust + currentMenu.offsetWidth ) )
    {
        leftAdjust += currentMenu.parentNode.parentNode.offsetWidth - ( currentMenu.parentNode.offsetLeft + leftAdjust + currentMenu.offsetWidth );
    }
    currentMenu.style.left = leftAdjust + 'px' ;

    if( currentMenu.parentNode.offsetLeft + currentMenu.offsetLeft < 0  )
    {
        currentMenu.style.left = - currentMenu.parentNode.offsetLeft + 'px';
    }
}

function tryHideDropdown()
{
	if( !stillHover )
	{
		hideDropdown( lastMenuNumber );
		lastMenuNumber = -1;
	}
}

function hideDropdown( menuNumber )
{
    var currentMenu = document.getElementById( dropdownMenues[menuNumber] );
    if ( currentMenu != null && currentMenu != undefined )
    {
        currentMenu.style.display = 'none';
        currentMenu.parentNode.firstChild.className = '';
    }
}
