// 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 += '{{fullurl:Special:Log' + getKvPairsString(args, url) + '}}';
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 += '{{diff2|' + prevId + '|<i>label</i>}}';
prev.appendChild(span);
}
// Right : diff2
if ((currentId != null) && ('prev' != currentId)
&& ('next' != currentId)) {
var span = getSpan();
var br = getBr();
current.appendChild(br);
span.innerHTML += '{{diff2|' + currentId + '|<i>label</i>}}';
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 += '{{diff|1=' + getTitle(document.URL) + '|2='
+ currentId + '|3=' + prevId + '|4=<i>label</i>}}';
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);
}
}