var FOLLOW_UP = 'follow-up';

function getNodeByClassName (className)
{
    var d=document; el=d.getElementById('mainlinks');
    var li_list = el.getElementsByTagName('li');

    for (var i=0; i<li_list.length; i++)
    {
        var node = li_list[i];
        if (node.className.indexOf(className)!=-1)
        {
            return node;
        }
    }
}

function addEvent (elm, evType, fn, useCapture) 
{
    // cross-browser event handling for IE5+, NS6 and Mozilla
    // By Scott Andrew
    if (elm.addEventListener) 
    {
        elm.addEventListener(evType, fn, useCapture);
        return true;
    } 
    else if (elm.attachEvent) 
    {
        var r = elm.attachEvent('on' + evType, fn);
        return r;
    } 
    else 
    {
        elm['on' + evType] = fn;
    }
}

function init () 
{
    var d = document; 

    // Init main navigation
    var mainlinks = d.getElementById('mainlinks');
    var ul_nodes = mainlinks.childNodes;
    for (var u=0; u<ul_nodes.length; u++) 
    {
        var ul_node = ul_nodes[u];
        if (ul_node.nodeName.toLowerCase() == 'ul')
        {
            var li_nodes = ul_node.childNodes;
            for (var i=0; i<li_nodes.length; i++) 
            {
                var li_node = li_nodes[i];
                if (li_node.nodeName.toLowerCase() == 'li' &&
                    li_node.className!='selected') 
                {
                    addEvent(li_node, 'mouseover', getMoverFor(li_node), false);
                    addEvent(li_node, 'mouseout', getMoutFor(li_node), false);
                }
            }           
        }
    }

    // Init backlink-navigation
    var backlinks = d.getElementById('backlinks');

    if (backlinks)
    {
        var li_nodes = backlinks.getElementsByTagName('li');

        for (var i=0; i<li_nodes.length; i++)
        {
            var li_node = li_nodes[i];
            addEvent(li_node, 'mouseover', getMoverFor(li_node), false);
            addEvent(li_node, 'mouseout', getMoutFor(li_node), false);
        }
    }
}

addEvent(window, 'load', init, false);

function getMoverFor (node) 
{
    return function(e) { mover(e, node); };
}

function getMoutFor (node) 
{
    return function(e) { mout(e, node); };
}

function mover (e, targetElement) 
{
    var el = window.event ? targetElement : e ? e.currentTarget : null;
    if (!el) return;
    clearTimeout(el.outTimeout);
    
    // Display child elements
    for (var i=0; i<el.childNodes.length; i++) 
    {
        var node = el.childNodes[i];
        if (node.nodeName.toLowerCase() == 'ul') 
        {
            node.style.display = 'block';
        }
    }

    // Deactivate selected menu
    var node = getNodeByClassName('selected');
    if (node)
    {
        node.className = 'disabled';
    }
}

function mout (e, targetElement) 
{
    var el = window.event ? targetElement : e ? e.currentTarget : null;
    if (!el) return;
    el.outTimeout = setTimeout(function() { mout2(el); }, 50);

    // Activate selected menu
    var node = getNodeByClassName('disabled');
    if (node)
    {
        node.className = 'selected';
    }
}

function mout2 (el) {
        
    // Hide child elements
    for (var i = 0; i < el.childNodes.length; i++) 
    {
        var node = el.childNodes[i];
        if (node.nodeName.toLowerCase() == 'ul') 
        {
            node.style.display = 'none';
        }
    }
}
