// ==UserScript==
// @name        Digg.com Mirrors
// @namespace   http://www.praytothemachine.com/evil/code/gm
// @description Adds mirror links from DuggMirror, Coral, Google and the Wayback Machine to every article on Digg.com.
// @version     1.04
// @date        2007-04-16
// @creator     Ben Pesso
// @include     http://digg.com/*
// @include     http://*.digg.com/*
// ==/UserScript==

(function(){

var iconDM = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB%2FHNKOAAAAFXRFWHRDcmVhdGlvbiBUaW1lAAfWBRMAKCQ2oIuYAAAAB3RJTUUH1gUTACoSHi2f8wAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAAADBQTFRFAAAAmZmZqKio1tbW2NjY29vb3d3d3t7e4uLi5eXl6enp7e3t9fX19vb2%2Bvr6%2F%2F%2F%2FWS1fFAAAAAF0Uk5TAEDm2GYAAABESURBVHjaY2BQUlJkYGDQ%2F%2F8xAUienpjAIKS%2Fs1CJQU5%2FuqEjg5ygoKAhg2x5iYsjg9Lvle2CDEy%2FZpSKMTD9bA8RAwC9gRArqhXXPwAAAABJRU5ErkJggg%3D%3D";
var iconCC = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs%2B9AAAAgUlEQVQY042O0QnCQBQEZy0sFiEkVVxa8GxAuLOLgD3cVRKwAytYf05JkGgGFt7H8nZkG10UgBNwZE0F7j77JiIJGPlNFhGzgwOQd%2FQytrEJdjtbrs%2FORAqRZBvZBrQxby2nv5iHniqokquUgM%2FH8Hadh57HNG05rlMgFXDL0vE%2FL%2BEXVN83HSenAAAAAElFTkSuQmCC";
var iconGC = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAiklEQVQY02MUjfmmFxPFgAuIxnz7jwNcU9BngSjae%2FbDxJUPj1z%2BxMDAYKPLlx8u72wswMDAwASRnrjyIQMDw%2BoW3XfbbfPD5SFchOGCHof2nHmPaTgTpmuEPA8LeR6GsKHSNrp8E1c%2B3Hv2A8QKG10%2BiDjUaRD7Qmsuw51GlMcYnXcE4AqSyRn3Abz4culPbiCuAAAAAElFTkSuQmCC";
var iconWM = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAvSURBVHjaYlipZfAfCBiQaQYGBgzMxIADADUxItM4FaKDEaxwlbbhf2QaGwAIMACO7RsUdiuurwAAAABJRU5ErkJggg==";

var headTag = document.getElementsByTagName('head')[0];

var articles = [];
var dropdowns = [];

function addMirrors(node, id) {
	var title;
	if (id == null) {
		title = document.getElementById("title").firstChild;
	} else {
		title = document.getElementById("title" + id).firstChild;
	}
	var dropdown = dropdowns[id];

	//
	// Create the DIV container to hold the links.
	var container = document.createElement("div");
	container.className = "sbp_container";
	dropdown.parentNode.appendChild(container);
	
	//
	// Create the DIV element for the Links.
	var links = document.createElement("div");
	container.appendChild(links);
	
	//
	// Create the DuggMirror link.
	var link = document.createElement("a");
	link.href = (id == null) ? location.href : document.getElementById("diggs" + id).href;
	link.href = link.href.replace(/digg\.com/, "duggmirror.com");
	link.target = title.target;
	link.title = "DuggMirror";
	link.className = "sbp_iconDM";
	img = document.createElement("img");
	img.src = iconDM;
	link.appendChild(img);
	links.appendChild(link);
	
	//
	// Create the Coral Cache link.
	link = document.createElement("a");
	link.href = title.href;
	link.host += ".nyud.net:8090";
	link.target = title.target;
	link.title = "Coral - The NYU Distribution Network";
	link.className = "sbp_iconCC";
	img = document.createElement("img");
	img.src = iconCC;
	link.appendChild(img);
	links.appendChild(link);
	
	//
	// Create the Google Cache link.
	link = document.createElement("a");
	link.href = "http://www.google.com/search?q=cache:" + title.href;
	link.target = title.target;
	link.title = "Google Cache";
	link.className = "sbp_iconGC";
	img = document.createElement("img");
	img.src = iconGC;
	link.appendChild(img);
	links.appendChild(link);
	
	//
	// Create the Wayback Machine link.
	link = document.createElement("a");
	link.href = "http://web.archive.org/web/*/" + title.href;
	link.target = title.target;
	link.title = "Wayback Machine";
	link.className= "sbp_iconWM";
	img = document.createElement("img");
	img.src = iconWM;
	link.appendChild(img);
	links.appendChild(link);
}

/** Set the styles **/

PRO_addStyle("div.sbp_container {float: left; margin-left: 5px; margin-top: -2px;}");
//PRO_addStyle("a.sbp_iconCC, a.sbp_iconDM, a.sbp_iconGC, a.sbp_iconWM {opacity: 0.5; padding-left: 15px; background: center no-repeat;}");
PRO_addStyle("a.sbp_iconCC, a.sbp_iconDM, a.sbp_iconGC, a.sbp_iconWM {opacity: 0.5; margin: 2px; padding: 2px;}");
//PRO_addStyle("a.sbp_iconCC {background-image: url(" + iconCC + ");}");
//PRO_addStyle("a.sbp_iconDM {background-image: url(" + iconDM + ");}");
//PRO_addStyle("a.sbp_iconGC {background-image: url(" + iconGC + ");}");
//PRO_addStyle("a.sbp_iconWM {background-image: url(" + iconWM + ");}");
PRO_addStyle("a.sbp_iconCC:hover, a.sbp_iconDM:hover, a.sbp_iconGC:hover, a.sbp_iconWM:hover {opacity: 0.95;}");


/** Find articles and drop-downs **/

/*
var articlesPath  = "//div[@class='news-body']";
var dropdownsPath  = "//ul[@class='probdrop']";
var articles = document.evaluate(articlesPath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var dropdowns = document.evaluate(dropdownsPath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
*/
var elms = document.getElementsByTagName('div');
for(var i=0; i< elms.length; i++){
	if(elms[i].className == 'news-body'){
		articles.push(elms[i]);
	}
}


elms = document.getElementsByTagName('ul');
for(var i=0; i< elms.length; i++){
	if(elms[i].className == 'probdrop'){
		dropdowns.push(elms[i]);
	}
}


if (articles.length == 1) {
	addMirrors(articles[0], null);
} else {
	for(var i = 0; i < articles.length; i++)	{
		addMirrors(articles[i], i);
	}
}

})();

