Trash That Script

By pw Last update Dec 8, 2007 — Installed 639 times. Daily Installs: 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
// ==UserScript==
// @name           Trash That Script
// @namespace      localhost
// @description    Provides a trashcan icon for each script, clicking on which will trash any script which has escaped your other filters.  (Version 20071207)
// @include        http://userscripts.org/scripts
// @include        http://userscripts.org/scripts?page=*
// ==/UserScript==

/*
The trashcan icon comes from
http://www.famfamfam.com/lab/icons/silk/
which is a very nice collection of free icons.
*/

var links = document.evaluate("//tr/td[@class='script-meat']/a[1]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var trashArray = GM_getValue('trashArray', null);
if (trashArray !== null) {
	var trashed = trashArray.split(":");
	if (!trashed.length) { return; }
	for (i=0; i<links.snapshotLength; i++) {
		link = links.snapshotItem(i);
		if (link.href.match(/\/show\//)) {
			script_no = link.href.match(/\/(\d+)/)[1];
			for (j=0; j<trashed.length; j++) {
				if (script_no == trashed[j]) {
					reject = link.parentNode.parentNode;
					reject.parentNode.removeChild(reject);
					GM_log("Rejected script #" + script_no);
					break;
				}
			}
		}
	}
}

var alinks = document.evaluate("//tr/td[@class='script-install']/a[1]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (k=0; k<alinks.snapshotLength; k++) {
	var link = alinks.snapshotItem(k);
	if (link.href.match(/\/source\//)) {
		var script_no = link.href.match(/\/(\d+)/)[1];
		trashcan = document.createElement('img');
		trashcan.title = "Trash script";
		trashcan.src =
		'data:image/png;base64,'+
		'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0'+
		'U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFtSURBVBgZBcE9b01hAADg55x72mrdnqrE'+
		'1SCkCUEivu7SxGKppGMHNhKj2KRisYkY2MTcRFQMGh8/QGLxMRikJklJkN5B0N72cu95z3uO50lq'+
		'AAAAQAYACxP16KF8vhotvxSPNgfF/QFJDWBhOF7Yfyk9EXemRn73P359GJce1BkA1Y1918+MtxSi'+
		'Rmtrtjfzc9qtpAYvkmhl4/L4pNKGnglDfng6uLMt42WjOhD3xOGTzQ/acpVa0PDe5AgZ1eF4szxb'+
		'NvvJlHeCTKEhOOUVsmfNeO/Y3G5D1q3giERUWreuQFqea81N+acvN2Pcqu0SYzpqAWm4Mu2XTV1b'+
		'Em2raqmGQi0gDbsy3/X19fzV1PUHFKKAtPjWc1THJ109DAxUKkGlRFo8+azpuNNyBNEOlVrDmID0'+
		'6uOV5ddyuVFj3jioZa/crI5yjYzi/Nvl7nxbJXheN5O7SqUY4lpsk9Tg2sVwu+yUm+XS4iIA8B+6'+
		'i5xffIyBpQAAAABJRU5ErkJggg==';
		trashcan.setAttribute('id', script_no);
		trashcan.addEventListener("click", trash, false);
		link.parentNode.appendChild(trashcan);
	}
}

function trash() {
	script_no = this.getAttribute('id');
	if (confirm("Really trash script #" + script_no + "?")) {
		script_row = this.parentNode.parentNode;
		script_row.parentNode.removeChild(script_row);
		trashArray = GM_getValue('trashArray', null);
		GM_setValue('trashArray', trashArray + script_no + ":");
	}
}