// ==UserScript==
// @name           collapse threads
// @namespace      http://alcopop.org/code/greasemonkey/
// @description    Allows you to collapse and expand threads in the debian list archives
// @include        http://lists.debian.org/*threads.html*
// @include        http://lists.debian.org/*thrd*.html*
// ==/UserScript==

// Copyright (c) 2007, Jon Dowland <jon@alcopop.org>
// This script is in the public domain.

function set_threads(to) {
	var xpath = '//li/ul';
	var allLinks, thisLink;

	allLinks = document.evaluate(
	    xpath, document, null,
	    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

	for(var i = 0; i < allLinks.snapshotLength; ++i) {
	    thisLink = allLinks.snapshotItem(i);
	    thisLink.style.display = to;
	}
}
function collapse_threads() { set_threads('none');  }
function   expand_threads() { set_threads('block'); }

var div = document.createElement('div');

var a1 = document.createElement('a');
a1.appendChild(document.createTextNode('Collapse'));
a1.addEventListener('click', collapse_threads, true);
a1.href = "#";

var a2 = document.createElement('a');
a2.appendChild(document.createTextNode('Expand'));
a2.addEventListener('click', expand_threads, true);
a2.href = "#";

div.appendChild(document.createTextNode('Threads: '));
div.appendChild(a2);
div.appendChild(document.createTextNode(' | '));
div.appendChild(a1);

var hrs = document.getElementsByTagName('hr');
if(hrs.length > 0) {
	var hr = hrs[0];
	hr.parentNode.insertBefore(div, hr);
}
