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