var darkBlue = "#143d8d";
var rolloverColor = "#6db33f";

var wrapperOriginalVisibility = null;

/* lazy get */
function prepWrapperOriginalVisibility() {
    wrapperOriginalVisibility = document.getElementById('navmenuSubWrapper').style.visibility
    if (wrapperOriginalVisibility == null || wrapperOriginalVisibility.length==0)
        wrapperOriginalVisibility = 'visible';
}

function onRolloverToggle(control, isSecondLevelNav, docId) {
    if (wrapperOriginalVisibility == null) prepWrapperOriginalVisibility();
    if (document.body.style.cursor=='default' || document.body.style.cursor == "")
        isRollOn = true;
    else
        isRollOn = false;

    if (isRollOn) {
        document.body.style.cursor='pointer';
        if (!isSecondLevelNav) {
            popupSubmenu(control, docId);
        }
    } else {
        document.body.style.cursor='default';
        if (!isSecondLevelNav) {
            hideSubmenu();
        }
    }


    if (control.className == 'active' || control.className == 'last active')
        return;

      
    if (control.currentStyle)  // ie
        isWhite = (control.currentStyle.backgroundColor == "white");
    else
        isWhite = (document.defaultView.getComputedStyle(control, '').getPropertyValue("background-color")==
            "rgb(255, 255, 255)");
		

    if (!isWhite)
        isWhite = (control.style.backgroundColor=='white');
    if (isWhite) {
        if (isSecondLevelNav)
            control.style.backgroundColor=darkBlue;
        else
            control.style.backgroundColor=rolloverColor;
        control.childNodes[0].style.color = "white";
    } else {
        control.style.backgroundColor="white";
        control.childNodes[0].style.color = darkBlue;
    }
	
}
	
function onClick(control) {
    if (control.className == 'active')
        return;
    location.href = control.childNodes[0].href;
}


function popupSubmenu(control, docId) {
    if (control.className == 'active') {
        stopHideSubMenu();
        hideSubmenuInner();
    }
    newSubId = 'subMenu' + docId;
    hiddenSubNav = document.getElementById(newSubId); // hiddenSubNav gets visibile
    visibileSubNav = document.getElementById('navmenuSub'); // visibileSubNav gets hidden
    visibleParentDiv = visibileSubNav.parentNode;

    if (hiddenSubNav != null) {
        if (hiddenSubNav.className.indexOf("nevershow")>0) {
            visibleParentDiv.style.visibility = 'hidden';
            stopHideSubMenu();
            return; // onHide, this state will get restored...
        }
    }

    visibleParentDiv.style.visibility = 'visible';
    stopHideSubMenu();

    if (hiddenSubNav == null) // we are already showing, we're now visible, that's enough'
        return;

    hiddenParentDiv = hiddenSubNav.parentNode;

    switchThese(hiddenSubNav, hiddenParentDiv, visibileSubNav, visibleParentDiv);

}

function switchThese(hiddenSubNav, hiddenParentDiv, visibileSubNav, visibleParentDiv) {
    /*
     1. Store the visible subnav in this hidden DIV at the bottom of the body
     2. Take the newSubnav from there and show it above under the menu
    */
    hiddenSubNav.oldId = hiddenSubNav.id; // store the id in oldId, we'll need it on hide to restore everything
    hiddenSubNav.id = visibileSubNav.id;
    if (visibileSubNav.oldId != null)
        visibileSubNav.id = visibileSubNav.oldId; // recover the old id
    else {
        visibileSubNav.id = "placeholder";
    }

    hiddenParentDiv.replaceChild(visibileSubNav, hiddenSubNav);
    visibleParentDiv.appendChild(hiddenSubNav);


}


var submenuHideTimer = null;

function hideSubmenu() {
     submenuHideTimer = setTimeout ( "hideSubmenuInner()", 200 );
}

function hideSubmenuInner() {
    visibileParentDiv = document.getElementById('navmenuSubWrapper');
    // first, the restoring of the subnav to original state, if necessary
    visibileParentDiv.style.visibility = wrapperOriginalVisibility;
    newSubId = 'placeholder';
    hiddenSubNav = document.getElementById(newSubId); // hiddenSubNav gets visibile
    if (hiddenSubNav == null)
        return; // it's not in the hidden set, is showing'
    visibileSubNav = document.getElementById('navmenuSub'); // visibileSubNav gets hidden
    visibleParentDiv = visibileSubNav.parentNode;
    hiddenParentDiv = hiddenSubNav.parentNode;

    switchThese(hiddenSubNav, hiddenParentDiv, visibileSubNav, visibleParentDiv);
}

function stopHideSubMenu() {
    if (submenuHideTimer==null)
        return;
    clearTimeout (submenuHideTimer);
    submenuHideTimer = null;
}

