Wikipedia reference @ scopus

By ms609 Last update Sep 21, 2008 — Installed 115 times.
// ==UserScript==
// @name           Wikipedia reference @ scopus
// @namespace      toolserver.org/~verisimilus/Bot/DOI_bot/
// @description    Adds a link to Scopus to allow exporting of Wikipedia-formatted references
// @include        http://www.scopus.com*
// ==/UserScript==

function stopit(){
	document.getElementById(this.getAttribute("linkedBox")).checked=true; 
	GM_setValue("autoAdd", true);
	document.getElementsByName("SearchResultsForm")[0].target="_blank";
	document.getElementsByName("outputButton")[0].click(1,1);
}

if (window.location.href.match(/results\.url\?/)){
	oI = document.getElementsByTagName("td");

	newSpan = Array();
	newA = Array();
	title=Array();
	year=Array();
	journal=Array();
	issue=Array();
	volume=Array();
	pages=Array();
	yearCell = Array();
	authors=Array();
	source=Array();
	var thisLink;
	for (i=0; i<oI.length; i++){
		if (oI[i].width=="49%") {
			title[i] = oI[i].childNodes[0].innerHTML;
			var auth = oI[i].nextSibling.nextSibling.childNodes;
			authors[i]="";
			for (j=0; j<auth.length; j++){
				if (auth[j].nodeType==1) authors[i] += auth[j].innerHTML + "; ";
			}
			yearCell[i] = oI[i].nextSibling.nextSibling.nextSibling.nextSibling;
			year[i]=yearCell[i].innerHTML;
			
			source[i] = yearCell[i].nextSibling.nextSibling.childNodes;
			journal[i]= source[i][1].innerHTML;
			volume[i]=/^[\d]+/.exec(source[i][2].nodeValue);
			issue[i]=/\((.+)\)/.exec(source[i][2].nodeValue);
			pages[i]=/pp\.\s(.*)/.exec(source[i][2].nodeValue);
			if (volume[i]) volume[i] = volume[i][0]; else volume[i]=false;
			if (issue[i]) issue[i] = issue[i][1]; else issue[i]=false;
			if (pages[i]) pages[i] = pages[i][1]; else pages[i]=false;
			
			newA[i] = document.createElement("a");
			newSpan[i] = document.createElement("span");
			newA[i].innerHTML = "[W]";
			newA[i].href="http://toolserver.org/~verisimilus/Scholar/Cite.php?"
						+ "year=" + escape(year[i])
						+ (issue[i]?"&issue=" + escape(issue[i]):"")
						+ (volume[i]?"&volume=" + escape(volume[i]):"")
						+ (pages[i]?"&pages=" + escape(pages[i]):"")
						+ "&author=" + escape(authors[i])
						+ "&journal=" + escape(journal[i])
						+ "&title=" + escape(title[i]);
			newSpan[i].appendChild(newA[i]);
			oI[i].insertBefore(newSpan[i], oI[i].childNodes[2]);
		}
		
	}
}