function show(id) {
	var i, backgroundImage, parentId="null", visibleState, elem, menuitem = document.getElementById(id);
	
	if (menuitem)
		visibleState = menuitem.style.display;
	
	//loop through and hide all the expending menus - they're all in dd tags
	var dd = document.getElementsByTagName('dd');
	var menuname = new RegExp('^menu','i');
	for (var i = 0; i < dd.length; i++) {
		
		if(dd[i].id && menuname.test(dd[i].id)) 
			document.getElementById(dd[i].id).style.display='none';
		}
	
	//reset all the expanding menus' backgrounds to a + sign now that we've closed them
	menus = getElementsByClassName('expand');
	for (i = 0; i < menus.length; i++) {
		elem = document.getElementById(menus[i].id);
		if(elem)
			elem.style.backgroundImage="url(images/expand.gif)";
		}
	menus = getElementsByClassName('submenuexpand');
	for (i = 0; i < menus.length; i++) {
		elem = document.getElementById(menus[i].id);
		if(elem)
			elem.style.backgroundImage="url(images/expand.gif)";
		}
	
	
	//if we're showing/hiding a submenu (menu1a, menu1b etc) then ensure that the parent is visible
	if(isExpandingSubmenu(id)) {
		showMenu(id.substring(0, id.length - 1), "block");
		}
	
	//show or hide the menu item
	if(visibleState != "block")
		showMenu(id, "block");
	else
		showMenu(id, "none");
	}


function showMenu(id, display) {
	var elem = document.getElementById(id), backgroundImage;
	
	elem.style.display=display;
	
	if(display == "block")
		backgroundImage="images/shrink.gif";
	else
		backgroundImage="images/expand.gif";
	
	//get the menu's parent menu and change its + - sign depending on its visible state
	var rootmenuId = id.replace("menu", "root");
	elem = document.getElementById(rootmenuId);
	if(elem)
		elem.style.backgroundImage="url(" + backgroundImage + ")";
	
	//if we're showing/hiding a submenu (menu1a, menu1b etc) then ensure that the parent's + - sign is correct
	if(isExpandingSubmenu(id)) {
		parentId = id.substring(0, id.length - 1);
		rootmenuId = parentId.replace("menu", "root");
		elem = document.getElementById(rootmenuId);
		if(elem)
			elem.style.backgroundImage="url(" + backgroundImage + ")";
		}
	
	}

function isExpandingSubmenu(id) {
	
	return isNaN(id.charAt(id.length - 1)) ? true : false;
	}

function getElementsByClassName(clsName) {
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}
