var rootMenuId = "mymenu";
var maxWidth = 760;
var scriptLoaded = false;
var initialized = false;
var currentMenu = null;
var mytimer = null;
var timerOn = false;
var delay = 300;

var ie = (navigator.userAgent.indexOf("MSIE") != -1);
var n6 = (navigator.userAgent.indexOf("Netscape6") != -1);

if (!document.getElementById)
    document.getElementById = function() { return null; }
  

window.onload = function() {
    loadMenu();
    var root = document.getElementById(rootMenuId);
    positionMenus(root, root);
}     

function loadMenu() {
    if (initialized) return;
    if (!scriptLoaded) return;
    var root = document.getElementById(rootMenuId);
    getMenus(root, root);
    if (!ie) { positionMenus(root, root); }
    initialized = true;
}


function initialiseMenu(menu, starter, root) {

    if (menu == null || starter == null) return;

    currentMenu = menu;

    starter.onmouseover = function() {
        if (currentMenu) {                
            currentMenu.style.visibility = "hidden";                
            currentMenu = null;
            this.showMenu();
        }
    }

    starter.showMenu = function() {
        currentMenu = menu;
        menu.style.visibility = "visible";
    }

    starter.onfocus = function() {
        starter.onmouseover();
    }

    menu.onmouseover = function() {
        if (currentMenu) {
            currentMenu = null;             
            this.showMenu();
        }
    }   

    menu.onfocus = function() {

    }

    menu.showMenu = function() {
        menu.style.visibility = "visible";
        currentMenu = menu;
        stopTime();
    }

    menu.hideMenu = function()  {
        if (!timerOn) {
            mytimer = setInterval("killMenu('" + this.id + "', '" + root.id + "');", delay);
            timerOn = true;
        }
    }

    menu.onmouseout = function(event) {
        this.hideMenu();
    }

    starter.onmouseout = function() {
        menu.hideMenu();
    }
}

function positionMenu(menu, starter, root) {
    menu.style.left = "";
    var diff = maxWidth - (starter.parentNode.offsetLeft + menu.offsetWidth);
    if (diff < 0) { menu.style.left = (menu.offsetLeft + diff) + "px"; }
}

function killMenu(menu, root) {
    var menu = document.getElementById(menu);
    var root = document.getElementById(root);
    menu.style.visibility = "hidden";
    stopTime();
}

function stopTime() {
    if (mytimer) {
         clearInterval(mytimer);
         mytimer = null;
         timerOn = false;
    }
} 

function getMenus(elementItem, root) {    
    var menuStarter;
    var menuItem;
    for (var x = 0; x < elementItem.childNodes.length; x++) {
        if (elementItem.childNodes[x].nodeName == "TD") {
            if (elementItem.childNodes[x].getElementsByTagName("UL").length > 0) {
                menuStarter = elementItem.childNodes[x].getElementsByTagName("A").item(0);
                menuItem = elementItem.childNodes[x].getElementsByTagName("UL").item(0);
                initialiseMenu(menuItem, menuStarter, root);
            }
        }
    }
}

function positionMenus(elementItem, root) {
    var menuStarter;
    var menuItem;
    for (var x = 0; x < elementItem.childNodes.length; x++) {
        if (elementItem.childNodes[x].nodeName == "TD") {
            if (elementItem.childNodes[x].getElementsByTagName("UL").length > 0) {
                menuStarter = elementItem.childNodes[x].getElementsByTagName("A").item(0);
                menuItem = elementItem.childNodes[x].getElementsByTagName("UL").item(0);
                positionMenu(menuItem, menuStarter, root);
            }
        }
    }
}



scriptLoaded = true;


