addEvent(window, 'load', collapseAllBibtexes, false);

function collapseAllBibtexes() {
    var bibs = document.getElementsByTagName('pre');
    for (var i = 0; i < bibs.length; i++) {
	if (bibs[i].className.match(/\bbibtex\b/)) {
	    collapseBibtex(bibs[i]);
        }
    }
}

function collapseBibtex(preElement) {
    var toggleButton = document.createElement('button');
    toggleButton.className = 'bibtexToggle';
    toggleButton.appendChild(document.createTextNode('Bibtex'));
    preElement.parentNode.insertBefore(toggleButton, preElement);
    addEvent(toggleButton, 'click', toggleBibtex, false);
    preElement.style.display = 'none';
}

function toggleBibtex(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;

    var tex = target.parentNode.getElementsByTagName('pre')[0];
    if (getElementStyle(tex.id, 'display') == 'none')
	tex.style.display = 'block';
    else
	tex.style.display = 'none';
}