var dropdown_rootNode = null; // Reference to root node of the current navigation.
var dropdown_timer = null; // Timer to hide all menu's on a 'onmouseout'.
var dropdown_timerWait = 750; // Time to wait before closing all open menu's.
var dropdown_zIndex = 1000; // zIndex of the navigation.

function createDropdown(nav_id)
{
    if(document.getElementById) // Browser compatability
    {
        try 
        {
            var rootNode = document.getElementById(nav_id);

            // Add javascript to items in navigation and hide submenu's.
            for(var i = 0; i < rootNode.childNodes.length; i++)
            {
                var ulNode = rootNode.childNodes[i];

                if(ulNode.nodeName == 'UL') // Lookup UL tags
                {
                    for(var j = 0; j < ulNode.childNodes.length; j++)
                    {
                        var liNode = ulNode.childNodes[j];

                        if(liNode.nodeName == 'LI') // Lookup LI tags
                        {
                            // Init subitems
                            __initDropdown(liNode);

                            // Add a mouseover-event to each list item.
                            liNode.onmouseover = function() 
                            {
                                try
                                {
                                    clearTimeout(dropdown_timer);
                                }
                                catch(e)
                                {
                                }

                                __showDropdown(this);
                            }

                            liNode.onmouseout = function()
                            {
                                try
                                {
                                    clearTimeout(dropdown_timer);
                                }
                                catch(e)
                                {
                                }

                                dropdown_timer = setTimeout('__hideDropdown()', dropdown_timerWait);
                            }
                        }
                    }
                }
            }
        }
        catch(e)
        {
            // Ignore
        }
    }
}

// Add classes and mouse-events to subitems.
function __initDropdown(rootNode)
{
    dropdown_zIndex += 2;
    var zIndex = dropdown_zIndex;

    // Open subitems
    for(var i = 0; i < rootNode.childNodes.length; i++)
    {
        var ulNode = rootNode.childNodes[i];

        if(ulNode.nodeName == 'UL')
        {
            ulNode.style.display = 'none';
            ulNode.style.visibility = 'hidden';
            ulNode.style.zIndex = zIndex;

            for(var j = 0; j < ulNode.childNodes.length; j++)
            {
                var liNode = ulNode.childNodes[j];

                if(liNode.nodeName == 'LI')
                {
                    // liNode.style.zIndex = zIndex + 1;

                    // Init subitems
                    __initDropdown(liNode);

                    // Add a mouseover-event to each list item.
                    liNode.onmouseover = function() 
                    {
                        try
                        {
                            clearTimeout(dropdown_timer);
                        }
                        catch(e)
                        {
                        }

                        this.className += ' hover';
                        __showDropdown(this);
                    }

                    liNode.onmouseout = function()
                    {
                        try
                        {
                            clearTimeout(dropdown_timer);
                        }
                        catch(e)
                        {
                        }

                        this.className = this.className.replace('hover', '');

                        dropdown_timer = setTimeout('__hideDropdown()', dropdown_timerWait);
                    }
                }
            }
        }
    }
}

// Show submenu
function __showDropdown(rootNode)
{
    if(dropdown_rootNode == null)
    {
        dropdown_rootNode = rootNode.parentNode.parentNode;
    }

    // Hide siblings' submenu's
    var ulNode = rootNode.parentNode;
    for(var i = 0; i < ulNode.childNodes.length; i++)
    {
        var liNode = ulNode.childNodes[i];

        if(liNode.nodeName == 'LI')
        {
            if(liNode != rootNode)
            {
                __hideDropdown(liNode);
            }
        }
    }

    // Show submenu's (if any)
    for(var i = 0; i < rootNode.childNodes.length; i++)
    {
        var ulNode = rootNode.childNodes[i];

        if(ulNode.nodeName == 'UL')
        {
            ulNode.style.display = 'block';
            ulNode.style.visibility = 'visible';
        }
    }
}

// Hide submenu's
function __hideDropdown(rootNode)
{
    if(__hideDropdown.arguments.length < 1)
    {
        var tmpNode = dropdown_rootNode;
        dropdown_rootNode = null;

        if(tmpNode != null)
        {
            for(var i = 0; i < tmpNode.childNodes.length; i++)
            {
                var ulNode = tmpNode.childNodes[i];

                if(ulNode.nodeName == 'UL')
                {
                    for(var j = 0; j < ulNode.childNodes.length; j++)
                    {
                        var liNode = ulNode.childNodes[j];
                        if(liNode.nodeName == 'LI')
                        {
                            __hideDropdown(liNode);
                        }
                    }
                }
            }
        }
    }
    else
    {
        for(var i = 0; i < rootNode.childNodes.length; i++)
        {
            var ulNode = rootNode.childNodes[i];

            if(ulNode.nodeName == 'UL')
            {
                ulNode.style.display = 'none';
                ulNode.style.visibility = 'hidden';

                for(var j = 0; j < ulNode.childNodes.length; j++)
                {
                    var liNode = ulNode.childNodes[j];

                    if(liNode.nodeName == 'LI')
                    {
                        __hideDropdown(liNode);
                    }
                }
            }
        }
    }
} 

