function decorateToggleLists() {

    var lists = document.getElementsByTagName('dl');

    for (var i = 0; i < lists.length; i++) {

        if (hasClassName(lists[i], 'toggle')) {

            var links = lists[i].getElementsByTagName('dt');
            var areas = lists[i].getElementsByTagName('dd');

            if (areas.length == links.length) {

                for (var j = 0; j < links.length; j++) {
                    links[j].onclick = createToggle(links[j], areas[j]);
                }

            }

        }

    }

}


function createToggle(link, area) {

    return function() {
        if (hasClassName(link, 'active')) {
            removeClassName(link, 'active');
            area.style.display = 'none';
        } else {
            addClassName(link, 'active');
            area.style.display = 'block';
        }
    }

}


function hasClassName(el, name) {

    var i, list;

    list = el.className.split(' ');
    for (i = 0; i < list.length; i++)
        if (list[i] == name)
            return true;

    return false;
}


function removeClassName(el, name) {

    var i, curList, newList;

    if (el.className == null)
        return;

    newList = new Array();
    curList = el.className.split(' ');
    for (i = 0; i < curList.length; i++)
        if (curList[i] != name)
            newList.push(curList[i]);
    el.className = newList.join(' ');
}


function addClassName(el, name) {
    el.className += " " + name;
}


window.onload = function() {
    decorateToggleLists();
};
