User:Splarka/oldafd.js

/* AFD age detector, version [0.0.2a]Originally from: http://en.wikipedia.org/wiki/User:Splarka/oldafd.jsNotes:* 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));}