User:TFOWR/easyDiff2.js

// Schedule it to run after the HTML page is rendered $(fullUrlLinks);

// Define main function function fullUrlLinks { importStylesheet("User:TFOWR/easyDiff2.css");

doDiffs; if (mw.config.get('wgNamespaceNumber') === -1) { doSpecialLog; } }

function doSpecialLog { var url = document.URL; if ('Special:Log' == getTitle(url)) { var span = getSpan; span.setAttribute('style', 'float: right;'); var args = new Array('type', 'user', 'page'); span.innerHTML += ''; document.getElementById('siteSub').appendChild(span); } }

function doDiffs {

if (document.URL.indexOf('diff=') != -1) { var prev = document.getElementById('mw-diff-otitle4'); var current = document.getElementById('mw-diff-ntitle4'); var prevId = getRevId(document.getElementById('mw-diff-otitle1').firstChild.firstChild.href); var currentId = getRevId(document.getElementById('mw-diff-ntitle1').firstChild.firstChild.href);

// Left : diff2 if ((prevId != null) && ('prev' != prevId) && ('next' != prevId)) { var span = getSpan; var br = getBr; prev.appendChild(br); span.innerHTML += ''; prev.appendChild(span); }

// Right : diff2 if ((currentId != null) && ('prev' != currentId)				&& ('next' != currentId)) { var span = getSpan; var br = getBr; current.appendChild(br); span.innerHTML += ''; current.appendChild(span); }		// Left-right : diff if ((prevId != null) && (prevId != 'prev') && (prevId != 'current')				&& ((currentId != null) && currentId != 'prev')				&& (currentId != 'current')) { var span = getSpan; var br = getBr; current.appendChild(br); span.innerHTML += ''; current.appendChild(span); }	} }

function getSpan { var rv = document.createElement('span'); rv.setAttribute('class', 'tfowr-diff'); return rv; }

function getBr { return document.createElement('br'); }

function getRevId(href) { var rv = getSubstring(href, "oldid=", "&"); if (rv != null) return rv;

return getSubstring(document.URL, "diff=", "&"); }

function getTitle(url) { return unescape(getSubstring(url, "title=", "&")); }

function getKvPairsString(args, url) { var rv = ''; for ( var i = 0; i < args.length; i++) { var key = args[i]; var value = getSubstring(url, key + "=", "&"); if (value != null && value != '') { if (rv == '') { rv += '|'; } else { rv += '&'; }			rv += key + '=' + unescape(value); }	}	return rv; }

function getSubstring(stringIn, start, end) { if (stringIn == null) return null;

if (stringIn.indexOf(start) == -1) { return null; }

var startIdx = stringIn.indexOf(start) + start.length; var endIdx = stringIn.indexOf(end, startIdx); if (endIdx != -1) { return stringIn.substring(startIdx, endIdx); } else { return stringIn.substring(startIdx); } }