/* DROPDOWN MENU */

var mainMenuID = 'mainmenu';
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 stillHover, delayHide;
var hoverOffDelay = 500;
var minWidthPixels = 221; /* Only used for IE */
var setWidth = '221px'; /* 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++;
		}
	}
}

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 < dropdownMenues.length; menuCount++ )
	{
		if( menuCount == currentMenuNumber )
		{
			showDropdown( menuCount );
		}
		else
		{
			hideDropdown( menuCount );
		}
	}
	stillHover = true;
}

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

    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;
    }
}

function menuHover()
{
	stillHover = true;
}

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

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

function hideDropdown( menuNumber )
{
    var currentMenu = document.getElementById( dropdownMenues[menuNumber] );
	currentMenu.style.display = 'none';
    removeClass( currentMenu.parentNode, 'menuhover' );
}


/* EQUAILIZE COLUMN HEIGHTS */

function equalizeColumnHeights( containerId, rowClass, colClass, heightAdjustment )
{
    var elementArray = document.getElementById( containerId ).getElementsByTagName('div');

    for ( var x = 0 ; x < elementArray.length ; x++  )
    {
        if ( elementArray[x].className == rowClass  )
        {
            var rowArray = elementArray[x].getElementsByTagName('div');
            var rowHeight = elementArray[x].offsetHeight;

            for ( var y = 0 ; y < rowArray.length ; y++  )
            {
                if ( rowArray[y].className == colClass  )
                {
                    rowArray[y].style.height = rowHeight + heightAdjustment + 'px';
                }
            }
        }
    }
}


/* SET/REMOVE CLASSES */

function readClassArray( element )
{
    if ( typeof( element ) == 'string' )
    {
        element = document.getElementById( element );
    }
    
    var classString = element.className;
    var classArray = classString.split( ' ' );
    return classArray;
}

function writeClassArray( element, classArray )
{
    if ( typeof( element ) == 'string' )
    {
        element = document.getElementById( element );
    }

    var classString = classArray.join( ' ' );
    element.className = classString;
}

function checkClass( element, className )
{
    var classArray = readClassArray( element );

    for ( x = 0; x < classArray.length; x++ )
    {
        if ( classArray[ x ] == className )
        {
            return true;
        }
    }

    return false;
}

function setClass( element, className )
{
    if ( !checkClass( element, className ) )
    {
        var classArray = readClassArray( element );
        classArray[ classArray.length ] = className;
        writeClassArray( element, classArray );
    }
}

function removeClass( element, className )
{
    var classArray = readClassArray( element );

    for ( x = 0; x < classArray.length; x++ )
    {
        if ( classArray[ x ] == className )
        {
            classArray[ x ] = '';
        }
    }
    
    writeClassArray( element, classArray );
}


/* SHOW/HIDE SHORTCUTS */

function showShortcuts()
{
    document.getElementById( 'shortcuts-columns' ).style.display = 'block';
    document.getElementById( 'shortcuts-open' ).style.display = 'none';
    document.getElementById( 'shortcuts-close' ).style.display = 'block';
    return false;
}

function hideShortcuts()
{
    document.getElementById( 'shortcuts-columns' ).style.display = 'none';
    document.getElementById( 'shortcuts-open' ).style.display = 'block';
    document.getElementById( 'shortcuts-close' ).style.display = 'none';
    return false;
}


/* E-MAIL */

function sendEmail( element )
{
    var spans = element.getElementsByTagName( 'span' )
    var address = false;
    for ( var i = 0; i < spans.length; i++ )
    {
        if ( spans[i].className == 'address' )
        {
            address = spans[i].innerHTML;
            break;
        }
    }

    if ( address )
    {
        address = 'mailto:' + address.replace( /<span class="?dot"?>[^<]*<\/span>/ig, '.' ).replace( /<span class="?at"?>[^<]*<\/span>/i, '@' ).replace( /<span class="?hide"?>[^<]*<\/span>/i, '' );
        element.href = address;
        location.href = address;
    }
    return false;
}
