
var ss = {
    fixAllLinks: function() { 
    // Get a list of all links in the page 
    var allLinks = document.getElementsByTagName('a'); 
    // Walk through the list 
    for (var i=0;i<allLinks.length;i++) { 
        var lnk = allLinks[i];
        if ((lnk.href && lnk.href.indexOf('#') != -1) && ( (lnk.pathname == location.pathname) ||
            ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) {
            // If the link is internal to the page (begins in #) then attach the ScrolltoIt function
            // as an onclick event handler
            ss.addEvent(lnk,'click',ss.ScrolltoIt);
            }
        }
    },

    ScrolltoIt: function(e) {
    // This is an event handler; get the clicked on element, in a cross-browser fashion 
    if (window.event) {
        target = window.event.srcElement;
        }
    else if (e) {
        target = e.target;
        }
    else {
        return;
        }

    // Make sure that the target is an element, not a text node within an element 
    if (target.nodeName.toLowerCase() != 'a') {
        target = target.parentNode;
        }

    // Paranoia; check this is an A tag
    if (target.nodeName.toLowerCase() != 'a') { return; }

    // Find the <a name> tag corresponding to this href 
    // First strip off the hash (first character) 
    anchor = target.hash.substr(1);
    // Now loop all A tags until we find one with that name 
    var allLinks = document.getElementsByTagName('a');
    var destinationLink = null;
    for (var i=0;i<allLinks.length;i++) {
        var lnk = allLinks[i];
        if (lnk.name && (lnk.name == anchor)) {
            destinationLink = lnk;
            break;
            }
        }
    if (!destinationLink) {
        destinationLink = document.getElementById(anchor);
        }

    // If we didn't find a destination, give up and let the browser do its thing 
    if (!destinationLink)  { return true; }

    clearInterval(ss.INTERVAL); 

    ss.INTERVAL = setInterval('ss.gotoAnchor("'+anchor+'")');

    // And stop the actual click happening
    if (window.event) {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
        }
    if (e && e.preventDefault && e.stopPropagation) {
        e.preventDefault();
        e.stopPropagation();
        }
    },

    gotoAnchor: function(anchor) {
        clearInterval(ss.INTERVAL);
        // and jump to the link directly so the URL's right
        location.hash = anchor; 
    },

    addEvent: function(elm, evType, fn, useCapture) {
    // addEvent and removeEvent cross-browser event handling for IE5+, NS6 and Mozilla by Scott Andrew
    if (elm.addEventListener){
        elm.addEventListener(evType, fn, useCapture);
        return true;
        }
    else if (elm.attachEvent){
        var r = elm.attachEvent("on"+evType, fn);
        return r;
        }
    else {
        alert("Handler could not be removed");
        }
    } 
};

function hide() {    
    var toggleable = document.getElementById('toggleable').getElementsByTagName('li'); 
    for (var i = 0; i < toggleable.length; i++) { 
        toggleable[i].style.display = 'none'; 
    }
}

function show(s) { 
    hide();
    var id = s.href.match(/#(\w.+)/)[1]; 
    document.getElementById(id).style.display = 'block';    
}

function initShowHide() {
    ss.fixAllLinks(); 
    hide();    
    var horolist = document.getElementById('horolist'); 
    var as = horolist.getElementsByTagName('a'); 
    for (var i = 0; i < as.length; i++) { 
        as[i].onclick = function() { show(this); return false; };
    }
}
