function find_publication(element) {
    while(element.className != "publication")
        element = element.parentNode;
    return element;
}

function show_abstract(element) {
    modify_abstract(find_publication(element), true);
}

function hide_abstract(element) {
    modify_abstract(find_publication(element), false);
}

function modify_abstract(publication, do_show) {
    set_child_display(publication, "div", "abstract", do_show);
    set_child_display(publication, "a", "show-abstract", !do_show);
    set_child_display(publication, "a", "hide-abstract", do_show);
}

function set_child_display(parent, tag_name, class_name, do_show) {
    var elements = parent.getElementsByTagName(tag_name);
    for(var i = 0; i < elements.length; i++)
        if(elements[i].className == class_name)
            elements[i].style.display = do_show ? "": "none";
}

function show_all_abstracts() {
    forall_publications(show_abstract);
}

function hide_all_abstracts() {
    forall_publications(hide_abstract);
}

function forall_publications(callback) {
    var elements = document.getElementsByTagName("li");
    for(var i = 0; i < elements.length; i++)
        if(elements[i].className == "publication")
            callback(elements[i]);
}
