function path(url) {
	if (url.indexOf('?') > 0) {
		return url.substring(0, url.indexOf('?'));
	} else {
		return url;
	}
}

function expandmenu() {

    var menu = document.getElementById('menulist');
    // var currentfolder = window.location + ''; // hack, since window.location is treated as some kind of object
    var currentfolder = path(window.location + '');

    // highlight links
    var links = menu.getElementsByTagName('a');
    
    for (var i=0; i<links.length; i++) {
        if (currentfolder.indexOf(path(links[i].href)) >= 0) {
            links[i].className = 'selected';
        }
    }
    
    // expand folders
    var folders = menu.getElementsByTagName('li');
    
    for (var j=0; j<folders.length; j++) {
        // alert(url+"\n"+folders[j].getElementsByTagName('a')[0].href);
        if (currentfolder.indexOf(path(folders[j].getElementsByTagName('a')[0].href)) >= 0) {
            if (subfolder = folders[j].getElementsByTagName('ul')[0]) {
                subfolder.style.display = 'block';
            }
        }

        // let folder link have same href as first child
        if (subfolder = folders[j].getElementsByTagName('ul')[0]) {
            if (sublink = subfolder.getElementsByTagName('a')[0]) {
                folders[j].getElementsByTagName('a')[0].href = sublink.href;
            }
        }
    }
    
    // start with first level expanded
    if (currentfolder == 'http://'+location.hostname+'/') {
        menu.getElementsByTagName('li')[0].getElementsByTagName('ul')[0].style.display = 'block';
    }
}