/* AFD age detector, version [0.0.2a]
Originally from: http://en.wikipedia.org/wiki/User:Splarka/oldafd.js
Notes:
* Stuff
*/
if(mw.config.get('wgCurRevisionId') != 0 && mw.config.get('wgNamespaceNumber') == 4 && (mw.config.get('wgPageName').indexOf('_for_deletion/') != -1 || mw.config.get('wgPageName').indexOf('_for_discussion/') != -1)) addOnloadHook(function() {
var url = mw.config.get('wgScriptPath') + '/api.php?maxage=3600&smaxage=3600&action=query&indexpageids&prop=revisions&rvdir=newer&rvlimit=1&rvprop=timestamp|comment|user&format=json&callback=ageCheckAFDCB&pageids=' + mw.config.get('wgArticleId');
mw.loader.load(url);
});
function ageCheckAFDCB(obj) {
var sub = document.getElementById('contentSub') || document.getElementById('topbar');
var div = document.createElement('div');
sub.appendChild(div);
if(!obj['query'] || !obj['query']['pages'] || obj['query']['pages'].length == 0 || !obj['query']['pageids'] || obj['query']['pageids'].length == 0 || obj['error']) {
div.appendChild(document.createTextNode('Api error in AFD Age Detector.'));
return;
}
var id = obj['query']['pageids'][0];
var page = obj['query']['pages'][id];
var rev = page['revisions'][0];
if(!rev || !rev['timestamp'] || !rev['user']) return
var now = new Date();
var tsd = new Date();
tsd.setISO8601(rev['timestamp']);
var timesince = Math.floor((now - tsd)/1000);
if(timesince == '') timesince = -1
var revinfo = 'Page created: ' + duration(timesince) + ' ago by ' + rev['user'];
if(rev['comment']) div.setAttribute('title',rev['comment'])
if(!rev['comment'] || rev['comment'].indexOf('Created') == -1) div.style.color = '#ff0000'
div.appendChild(document.createTextNode(revinfo + '.'));
if(timesince > 604800) appendCSS('body {background:#ffaaff !important;}')
}
function duration(input,depth) {
var num = input;
var out = '';
var s = num % 60; num = Math.floor(num / 60);
var m = num % 60; num = Math.floor(num / 60);
var h = num % 24; num = Math.floor(num / 24);
var d = num % 7; num = Math.floor(num / 7);
var w = num % 52; num = Math.floor(num / 52);
var y = num
if(y > 0) out += y + 'yrs '
if(y + w > 0) out += w + 'wks '
if(y + w + d > 0) out += d + 'days '
if(y + w + d + h > 0) out += h + 'hrs '
if(y + w + d + h + m > 0) out += m + 'mins '
out += s + 'secs';
if(depth && depth < out.split(' ').length) {
out = out.split(' ').slice(0,depth).join(' ');
}
return out;
}
//ISO 8601 date module by Paul Sowden, licensed under AFL.
Date.prototype.setISO8601 = function(string) {
if(!string) return
var regexp = '([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?';
var d = string.match(new RegExp(regexp));
if(d.length < 1) return
var offset = 0;
var date = new Date(d[1], 0, 1);
if(d[3]) date.setMonth(d[3] - 1)
if(d[5]) date.setDate(d[5])
if(d[7]) date.setHours(d[7])
if(d[8]) date.setMinutes(d[8])
if(d[10]) date.setSeconds(d[10])
if(d[12]) date.setMilliseconds(Number('0.' + d[12]) * 1000)
if(d[14]) {
offset = (Number(d[16]) * 60) + Number(d[17]);
offset *= ((d[15] == '-') ? 1 : -1);
}
offset -= date.getTimezoneOffset();
time = (Number(date) + (offset * 60 * 1000));
this.setTime(Number(time));
}