function fade (elem, colours) {
    function fader () {
        elem.style.color = colours.shift();
        if (colours.length) window.setTimeout(fader, 100);
    }
    fader();
}

function expand () {
    var submenu = this.parentNode.getElementsByTagName('ul')[0];
    if (submenu.style.display != 'block') {
        submenu.style.color = '#89a';
        submenu.style.display = 'block';
        fade(submenu, ['#89a', '#bcc', '#fff']);
    } else {
        fade(submenu, ['#fff', '#bcc', '#89a']);
        window.setTimeout(function () {submenu.style.display = 'none';}, 300);
    }
}

function add_nav_actions () {
    var menu = document.getElementById('menu');
    var spans = menu.getElementsByTagName('span');
    for (var i=0; i<spans.length; i++) {
        if (spans[i].className.match('expander')) {
            spans[i].onclick = expand;
            spans[i].className = 'expander-active';
        }
    }
}

var _old_onload = window.onload;
window.onload = function () {
    if (_old_onload) _old_onload();
    
    add_nav_actions();
}