/**
 * write a style in the document to hide all submenus for CSS capable browsers
 */
if (document.getElementById || document.all || document.layers) {
    document.write('<style type="text/css">ul.ex {display:none}</style>');
}
/**
 * menus
 */
var menus = ['background', 'what', 'events'];
/**
 * expands a submenu
 */
function expand(which) {
    if (menuObj = xGetElementById(which)) {
        if (menuObj.style && xDef(menuObj.style.display)) {
            var d = (menuObj.style.display == 'none' || menuObj.style.display == '')? 'block': 'none';
            if (which.indexOf('.') == -1) {
                hideAll();
            }
            menuObj.style.display = d;
        }
    }
}
/**
 * hides all submenus
 */
function hideAll() {
    var menuObjs = new Array();
    if (arguments.length != 1) {
        for (var i = 0; i < menus.length; i++) {
            if (menuObjs[i] = xGetElementById(menus[i])) {
                if (menuObjs[i].style && xDef(menuObjs[i].style.display)) {
                    menuObjs[i].style.display = 'none';
                    hideRecursive(i, '', true);
                }
            }
        }
    }
}
/**
 * recursive funtion to hide all submenus and sub-submenus etc.
 */
function hideRecursive(idx, lvl, hide) {
    var d = hide? 'none': 'block';
		var subMenuObjs = new Array();
    for (var l = 97; l < 123; l++) {
        if (subMenuObjs[l] = xGetElementById(menus[idx] + '.' + lvl + String.fromCharCode(l))) {
            if (subMenuObjs[l].style && xDef(subMenuObjs[l].style.display)) {
                subMenuObjs[l].style.display = d;
                hideRecursive(idx, lvl + String.fromCharCode(l), hide);
            }
        }
    }
}
/**
 * expand all menus
 */
function expandAll() {
    for (var i = 0; i < menus.length; i++) {
        if (menuObj = xGetElementById(menus[i])) {
            if (menuObj.style && xDef(menuObj.style.display)) {
                menuObj.style.display = 'block';
                hideRecursive(i, '', false);
            }
        }
    }
}
/**
 * utility functions taken from the x library (http://www.cross-browser.com)
 * Copyright (c) 2004 Michael Foster, Licensed LGPL (gnu.org)
 */
function xGetElementById(e) {
    if (typeof(e) != 'string') {
        return e;
    }
    if (document.getElementById) {
        e = document.getElementById(e);
    } else if (document.all) {
        e = document.all[e];
    } else if (document.layers) {
        e = xLayer(e);
    } else {
        e = null;
    }
    return e;
}
function xLayer(id,root) {
    var i, layer, found = null;
    if (!root) {
        root = window;
    }
    for (i = 0; i < root.document.layers.length; i++) {
        layer = root.document.layers[i];
        if (layer.id == id) {
            return layer;
        }
        if (layer.document.layers.length) {
            found = xLayer(id, layer);
        }
        if (found) {
            return found;
        }
    }
    return null;
}
function xDef() {
    for (var i=0; i < arguments.length; ++i) {
        if (typeof(arguments[i]) == 'undefined') {
            return false;
        }
    }
    return true;
}

