/* DROPDOWN MENU INITIALIZATION */

var menuData = new Array();
//menuData[0] = ['Menu 1-1','http://ez.no', 'Menu 1-2','http://ez.no', 'Menu 1-3','http://ez.no'];
//menuData[1] = ['Menu 2-1','http://ez.no', 'Menu 2-2','http://ez.no', 'Menu 2-3','http://ez.no'];
//menuData[2] = ['Menu 3-1','http://ez.no', 'Menu 3-2','http://ez.no', 'Menu 3-3','http://ez.no'];

var mainMenuID = 'mainmenu';
var dropdownMenuID = 'dropdownID';
var dropdownMenuClass = 'dropdownmenu';
var iframeID = 'iframeID';

var subMenues = new Array();
var subMenuIframes = new Array(); /* Only used for IE */
var stillHover, delayHide;
var hoverOffDelay = 0;
var minWidthPixels = 120; /* Only used for IE */
var setWidth = '10em'; /* Only used for IE */

function menuInit()
{
    var elementNodeList = document.getElementById( mainMenuID ).getElementsByTagName( 'li' );
    var elementItems = new Array();
    
    for( var copyCount = 0; copyCount < elementNodeList.length; copyCount++ )
    {
        elementItems[copyCount] = elementNodeList[copyCount];
    }
    
    for( var dropdownMenu = 0; dropdownMenu < elementItems.length; dropdownMenu++ )
    {
        var newMenuDiv = document.createElement( 'div' );
        var newUl = document.createElement( 'ul' );
        
        for( var dropdownItems = 0; dropdownItems < menuData[dropdownMenu].length; dropdownItems += 2 )
        {
            var newLi = document.createElement( 'li' );
            var newDiv = document.createElement( 'div' );
            var newA = document.createElement( 'a' );
            var newText = document.createTextNode( menuData[dropdownMenu][dropdownItems] );

            newA.setAttribute( 'href', menuData[dropdownMenu][dropdownItems+1] );
            newA.appendChild( newText );
            newDiv.appendChild( newA );
            newLi.appendChild( newDiv );
            newUl.appendChild( newLi );
        }
        newMenuDiv.setAttribute( 'id', dropdownMenuID + dropdownMenu );
        newMenuDiv.className = dropdownMenuClass;

        if( newUl.childNodes.length > 0 ) /* Do not insert elements if there is no dropdown items */
        {
            newMenuDiv.appendChild( newUl );
        }

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

            subMenuIframes[dropdownMenu] = iframeID + dropdownMenu;
            newIframe.setAttribute( 'id', subMenuIframes[dropdownMenu] );
            newMenuDiv.appendChild( newIframe );
        }
        elementItems[dropdownMenu].appendChild( newMenuDiv );
        subMenues[dropdownMenu] = dropdownMenuID + dropdownMenu;
    }
}

/* DROPDOWN CONTROL */

function switchDropdown( element )
{
    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;
    }
    
    for( var menuCount = 0; menuCount < subMenues.length; menuCount++ )
    {
        if( menuCount == currentMenuNumber )
        {
            showDropdown( menuCount );
        }
        else
        {
            hideDropdown( menuCount );
        }
    }
    stillHover = true;
}

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

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

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

        currentIframe.style.height = currentMenu.offsetHeight;
        currentIframe.style.width = currentMenu.offsetWidth;
    }
    
    if( ( /Safari\/(\d+)/.test( navigator.appVersion ) ) && ( RegExp.$1 < 400 ) ) /* Only if Safari 1 */
    {
        currentMenu.parentElement.style.position = 'static';
        currentMenu.style.left = ( currentMenu.parentNode.offsetLeft ) + 'px';

        for( var safariMenuItems = 0; safariMenuItems < currentMenu.firstChild.childNodes.length; safariMenuItems++ )
        {
            currentMenu.firstChild.childNodes[safariMenuItems].style.position = 'static';
        }
    }
}

function menuHover()
{
    stillHover = true;
}

function tryHideAllDropdowns()
{
    stillHover = false;
    clearTimeout( delayHide );
    delayHide = setTimeout( 'hideAllDropdowns()', hoverOffDelay );
}

function hideAllDropdowns()
{
    if( !stillHover )
    {
        for( var menuCount = 0; menuCount < subMenues.length; menuCount++ )
        {
            hideDropdown( menuCount );
        }
    }
}

function hideDropdown( menuNumber )
{
    var currentMenu = document.getElementById( subMenues[menuNumber] );
    currentMenu.style.display = 'none';
    currentMenu.parentNode.firstChild.className = '';
}
