User:Dudemanfellabra/diffs.js

function DateSub(Date1,Date2) { var timeDifference = Date2 - Date1; var minutesAgo = Math.round(timeDifference / 1000 / 60); var hoursAgo = 0 var daysAgo = 0 var hoursText = 'hour' var daysText = 'day'

while (minutesAgo >= 60) { minutesAgo = minutesAgo-60; hoursAgo++; }

while (hoursAgo >= 24) { hoursAgo = hoursAgo-24; daysAgo++; }

if (hoursAgo!=1) hoursText = hoursText + 's';

if (daysAgo!=1) daysText = daysText + 's';

if (daysAgo > 0) { if (hoursAgo > 0) { if (minutesAgo <=1 ) { minutesAgo = daysAgo + ' ' + daysText + ', ' + hoursAgo + ' ' + hoursText; }           else { minutesAgo = daysAgo + ' ' + daysText + ', ' + hoursAgo + ' ' + hoursText + ', ' + minutesAgo + ' minutes'; }       }        else { if (minutesAgo <=1 ) { minutesAgo = daysAgo + ' ' + daysText; }           else { minutesAgo = daysAgo + ' ' + daysText + ', ' + minutesAgo + ' minutes'; }       }    }    else { if (hoursAgo > 0) { if (minutesAgo <=1 ) { minutesAgo = hoursAgo + ' ' + hoursText; }           else { minutesAgo = hoursAgo + ' ' + hoursText + ', ' + minutesAgo + ' minutes'; }       }        else { if (minutesAgo <=1 ) { minutesAgo = 'Less than a minute'; }           else { minutesAgo = minutesAgo + ' minutes'; }       }    }    return minutesAgo; }

if (document.getElementById('mw-diff-otitle1') || document.getElementById('mw-diff-ntitle1')) {

function convertTimestampStringToDate(id) { var timestamp = document.getElementById(id).firstChild.firstChild.firstChild.nodeValue; var str = /evision as of /g str.lastIndex = 0; str.test(timestamp) var date = timestamp.substring(str.lastIndex) /*

All this following bogus crap is because Safari doesn't recognize Wikipedia's date format. Every other browser can just use the date string object above, but Safari is retarded

var str1 = /[A-z]+/ var str2 = /\d+/g var monthtext = date.match(str1); var testdate = date.match(str2); var hours = testdate[0]; var minutes = testdate[1]; var day = testdate[2]; var year = testdate[3]; var months = ['January','February','March','April','May','June','July','August','September','October','November','December']; for (i in months) { if (monthtext==months[i]) { var month = i;           break; }       i++ } /*

End Safari madness

date = new Date(year,month,day,hours,minutes); return date; }

var leftNode = document.getElementById('mw-diff-otitle1'); var rightNode = document.getElementById('mw-diff-ntitle1'); var firstDate = convertTimestampStringToDate('mw-diff-otitle1'); var secondDate = convertTimestampStringToDate('mw-diff-ntitle1');

function TimeBetweenDiffs {

var minutesAgo = DateSub(firstDate,secondDate);

var newNode = document.createElement('span'); newNode.setAttribute('style', 'font-weight:bold; color:red;') newNode.appendChild(document.createTextNode('(' + minutesAgo + ' later)')); newNode.appendChild(document.createElement('br'));

rightNode.insertBefore(newNode, rightNode.firstChild); }

function TimeSinceDiff { var DateNow = new Date;

var minutesAgo1 = DateSub(firstDate,DateNow); var minutesAgo2 = DateSub(secondDate,DateNow);

document.getElementById('mw-diff-otitle1').title=minutesAgo1 + ' ago'; document.getElementById('mw-diff-ntitle1').title=minutesAgo2 + ' ago';

var t = setTimeout("TimeSinceDiff",60000); }

$(window).load(TimeSinceDiff);                                 // Adds time since displayed diffs as tooltip $(window).load(TimeBetweenDiffs);                              // Adds time between diffs

}