var submenu_hidetime=500;
var submenu_timer;

function submenu_init() {
    if (!document.getElementById('submenu')) return false;
    var level2Links=submenu_getLevel2Links();
    for (var i=0;i<level2Links.length;i++) {
        level2Links[i].onmouseover=level2Element_Over;
        level2Links[i].onmouseout=level2Element_Out;
    }    
    
    var level3Elements=submenu_getLevel3Elements();
    for (i=0;i<level3Elements.length;i++) {
        level3Elements[i].onmouseover=level3Element_Over;
        level3Elements[i].onmouseout=level3Element_Out;
    }
}

function submenu_getLevel2Links() {
    var uls=document.getElementById('submenu').getElementsByTagName('ul');
    var level2Ul=new Array();
    for (var i=0;i<uls.length;i++) {
        if (uls[i].className.indexOf('submenu_level2')!=-1) level2Ul[level2Ul.length]=uls[i];
    }
    
    var lis=new Array();
    for (i=0;i<level2Ul.length;i++) {
        var nodes=level2Ul[i].childNodes;
        for (var j=0;j<nodes.length;j++) {
            if (nodes[j].nodeName=='LI') lis[lis.length]=nodes[j];
        }
    }


    var items=new Array();
    for (i=0;i<lis.length;i++) {
        nodes=lis[i].childNodes;
        for (var j=0;j<nodes.length;j++) {
            if (nodes[j].nodeName=='A') items[items.length]=nodes[j];
        }
    }

    return items;    
}

function submenu_getLevel3Elements() {
    var uls=document.getElementById('submenu').getElementsByTagName('ul');
    var items=new Array();
    for (var i=0;i<uls.length;i++) {
        if (uls[i].className.indexOf('submenu_level3')!=-1) items[items.length]=uls[i];
    }
    return items;
}

function level2Element_Over() {
    var level3Element=getClosestParentType(this,'li').getElementsByTagName('ul')[0];
    if (level3Element)  submenu_showElement(level3Element);
}
function level2Element_Out() {
    var level3Element=getClosestParentType(this,'li').getElementsByTagName('ul')[0];
    if (level3Element) {
        submenu_timer=setTimeout("submenu_hideAll()",submenu_hidetime); 
    } 
}

function level3Element_Over() {
    submenu_showElement(this)
}
function level3Element_Out() {
    submenu_timer=setTimeout("submenu_hideAll()",submenu_hidetime); 
}

function submenu_hideAll() {
    var items=submenu_getLevel3Elements();
    for (var i=0;i<items.length;i++) {
        submenu_hideElement(items[i]);
    }
}

function submenu_showElement(obj) {
    clearTimeout(submenu_timer);
    submenu_hideAll();
    obj.className=obj.className.replace(/\s*hidden\s*/g,'');
}

function submenu_hideElement(obj) {
    obj.className+=' hidden';
}


function getClosestParentType(obj,type) {
    while (obj.parentNode) {
        if (obj.parentNode.nodeName.toLocaleLowerCase()==type.toLocaleLowerCase()) return obj.parentNode;
        obj=obj.parentNode;
    }
    return false;
}


var oldOnLoad = window.onload;
if (typeof window.onload != 'function') {
    window.onload = function() {
        submenu_init();
    };
} else {
    window.onload = function() {
        oldOnLoad();
        submenu_init();
    };
}
