/**
 * Menu functions
 *
 * @version $Id: menu.inc.js,v 1.5 2005/11/30 12:36:39 mkortleven Exp $
 */
lastTimeout = null;
selectsShowing = true;

function MenuHideUL(theUL)
{
    myMenu = document.getElementById('mainmenu_id');
    myMenuULs = myMenu.getElementsByTagName('UL');
    myShowULs = new Array();
    myShowULs[myShowULs.length] = theUL;
    while (myShowULs[myShowULs.length-1].id != 'mainmenu_id') {
        myLI = myShowULs[myShowULs.length-1].parentNode;
        myShowULs[myShowULs.length] = myLI.parentNode;
    }
    if (theUL.id == 'mainmenu_id') {
        if (!selectsShowing) {
            /* display hidden selects and remove the inputs */
            mySelects = document.getElementsByTagName('SELECT');
            for (m = 0; m < mySelects.length; m++) {
                if (mySelects.item(m).previousSibling) {
                    mySelects.item(m).style.display = mySelects.item(m).previousSibling.style.display;
                    mySelects.item(m).parentNode.removeChild(mySelects.item(m).previousSibling);
                } else {
                    mySelects.item(m).style.display = 'inline';
                }
            }
            selectsShowing = true;
        }
    } else if (selectsShowing) {
        /* hide selects and display inputs instead */
        mySelects = document.getElementsByTagName('SELECT');
        for (m = 0; m < mySelects.length; m++) {
            newNode = document.createElement('INPUT');
            newNode.type = 'text';
            try {
                if (mySelects.item(m).options && mySelects.item(m).selectedIndex) 
                    newNode.value = mySelects.item(m).options[mySelects.item(m).selectedIndex].text;
            } catch($e) {
            
            }
            newNode.style.width = mySelects.item(m).offsetWidth + 'px';
            newNode.style.fontSize = mySelects.item(m).style.fontSize;
            if (mySelects.item(m).style.display) {
                newNode.style.display = mySelects.item(m).style.display; 
            } else {
                newNode.style.display = 'inline';
            }
            mySelects.item(m).style.display = 'none';
            mySelects.item(m).parentNode.insertBefore(newNode, mySelects.item(m));
        }
        selectsShowing = false;
    }
    for (i = 0; i < myMenuULs.length; i++) {
        found = false;
        for (myJ = 0; myJ < myShowULs.length; myJ++) {
            if (myMenuULs[i] == myShowULs[myJ]) {
                found = true;
            }
        }
        if (!found) {
            /* hide menu */
            if (myMenuULs[i] && myMenuULs[i].style.display) {
                myMenuULs[i].style.display = 'none';
            }
        } else {
            myK = 0;
            myParent = myMenuULs[i];
            while (myParent.parentNode.id != 'mainmenu_id') {
                myParent = myParent.parentNode;
                myK++;
            }
            if (myK >= 3) {
                myMenuULs[i].style.left = (myMenuULs[i].parentNode.offsetWidth) + 'px';
            }
            myMenuULs[i].style.display = 'block';
            myMenuLIs = myMenuULs[i].getElementsByTagName('LI');
            maxWidth = 0;
            for (myK = 0; myK < myMenuLIs.length; myK++) {
                if (myMenuLIs.item(myK).parentNode == myMenuULs[i]) {
                    myAs = myMenuLIs.item(myK).getElementsByTagName('A');
                    if ((myAs.length > 0) && (myAs.item(0).parentNode.className != 'menu_search')) {
                        if (myAs.item(0).offsetWidth > maxWidth) {
                            /* get max A width; LI may be smaller and display A as overflow */
                            maxWidth = myAs.item(0).offsetWidth;
                        }
                        if (myMenuULs[i].offsetWidth < maxWidth) {
                            /* set UL width */
                            myMenuULs[i].style.width = (maxWidth + 6) + 'px';
                        }
                    }
                }
            }
            if (maxWidth > 0) {
                /* get UL width and subtract the borders */
                maxWidth = myMenuLIs.item(0).parentNode.offsetWidth-2;
                for (myK = 0; myK < myMenuLIs.length; myK++) {
                    myMenuLIs.item(myK).style.width = maxWidth + 'px';
                }
            }
        }
    }
}

function MenuLIMouseOver(e){
    if (lastTimeout) {
        clearTimeout(lastTimeout);
        lastTimeout = null;
    }
    if (!e) e = window.event;
    if (e.target) {
        myTarget = e.target;
    } else {
        myTarget = e.srcElement;
    }
    while (myTarget.nodeName != 'LI') {
        myTarget = myTarget.parentNode;
    }
    if (!myTarget.className) {
        myAs = myTarget.getElementsByTagName('A');
        if (myAs.length > 0) {
            myTarget.style.backgroundColor = 'white';
            myAs.item(0).style.color = 'red';
        } else {
            myTarget.style.cursor = 'default';
        }
        myULs = myTarget.getElementsByTagName('UL');
        if (myULs.length > 0) {
            MenuHideUL(myULs.item(0));
        } else {
            MenuHideUL(myTarget.parentNode);
        }
    }
    e.cancelBubble = true;
}

function MenuLIMouseOut(e){
    if (lastTimeout != null) {
        clearTimeout(lastTimeout);
        lastTimeout = null;
    }
    if (!e) e = window.event;
    if (e.target) {
        myTarget = e.target;
    } else {
        myTarget = e.srcElement;
    }
    while (myTarget.nodeName != 'LI') {
        myTarget = myTarget.parentNode;
    }
    if (!myTarget.className) {
        myAs = myTarget.getElementsByTagName('A');
        if (myAs.length > 0) {
            myTarget.style.backgroundColor = 'transparent';
            myAs.item(0).style.color = '#003366';
        }
        lastTimeout = setTimeout("obj=document.getElementById('mainmenu_id');MenuHideUL(obj);", 1000);
    }
    e.cancelBubble = true;
}

function MenuLIClick(e){
    if (!e) e = window.event;
    if (e.target) {
        myTarget = e.target;
    } else {
        myTarget = e.srcElement;
    }
    while (myTarget.nodeName != 'LI') {
        myTarget = myTarget.parentNode;
    }
    if (myTarget.nodeName == 'LI') {
        if (myTarget.parentNode.id == 'mainmenu_id') {
            if ((myTarget.firstChild.nodeName == 'A') && (myTarget.firstChild.href == '')) {
                alert('Hey');
                return false;
            }
        } else if (myTarget.className != 'menu_search') {
            myAs = myTarget.getElementsByTagName('A');
            if (myAs.length > 0) {
                if (myAs.item(0).href) {
                    location.href = myAs.item(0).href;
                } else {
                    location.href = myAs.item(0);
                }
            }
        }
    }
    e.cancelBubble = true;
}

function MenuInputClick(e)
{
    if (!e) e = window.event;
    e.cancelBubble = true;
}

myMenu = document.getElementById('mainmenu_id');
myLIs = myMenu.getElementsByTagName('LI');
for (i = 0; i < myLIs.length; i++) {
    myLI = myLIs.item(i);
    myLI.onmouseover = MenuLIMouseOver;
    myLI.onmouseout = MenuLIMouseOut;
    if (myLI.className != 'menu_search') {
        myLI.onclick = MenuLIClick;
    }
}
myAs = myMenu.getElementsByTagName('A');
for (i = 0; i < myAs.length; i++) {
    myA = myAs.item(i);
    myA.onmouseover = MenuLIMouseOver;
    myA.onmouseout = MenuLIMouseOut;
}
myInputs = myMenu.getElementsByTagName('INPUT');
for (i = 0; i < myInputs.length; i++) {
    myInput = myInputs.item(i);
    myInput.onclick = MenuInputClick;
}
