User:Paranomia/localize comments.js

addOnloadHook(function {   var disabled_urls = new Array('action=history', 'title=Special:Log');    for (var i = 0; i < disabled_urls.length; i++)    {        if (document.location.href.indexOf(disabled_urls[i]) != -1)            return;    }

var unique_url = false;

var wikiPreview = new Array('action=edit', 'action=submit'); for (var i = 0; i < wikiPreview.length; i++) {       if (document.location.href.indexOf(wikiPreview[i]) != -1) unique_url = 'wikiPreview'; }

var element_id = unique_url ? unique_url : 'bodyContent'; if(document.getElementById(element_id)) { document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime); } });

function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s) { var time = new Date; time.setUTCHours(old_hour); time.setUTCMinutes(old_minute); time.setUTCDate(old_day); time.setUTCMonth(monthToNum(old_month)); time.setUTCFullYear(old_year); var utc_offset = -1 * time.getTimezoneOffset / 60; if (utc_offset >= 0) utc_offset = '+' + utc_offset; var year = time.getFullYear; // The following is for fringe cases if (old_day == '31' && old_hour < Math.abs(utc_offset)) {       time.setMonth(monthToNum(old_month)); var month = leading_zero(monthToNum(old_month) + 1); time.setDate('30'); var day = '30'; }   // The above is for fringe cases else {       var month = leading_zero(time.getMonth + 1); var day = time.getDate; }   var hour = leading_zero(parseInt(time.getHours)); var minute = leading_zero(time.getMinutes); var ampm = 'am'; if (hour > 11) ampm = 'pm'; if (hour > 12) hour -= 12; if (hour == '00') hour = 12; // Return 'today' or 'yesterday' if that is the case var today = new Date; // yesterday var yesterday = new Date; yesterday.setDate(yesterday.getDate - 1); if (year == today.getFullYear && month == leading_zero(today.getMonth + 1) && day == today.getDate) var date = 'Today'; else if (year == yesterday.getFullYear && month == leading_zero(yesterday.getMonth + 1) && day == yesterday.getDate) var date = 'Yesterday'; else {       // Calculate day of week var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); var day_of_the_week = day_names[time.getDay];

// The distance in days from today and last Monday? today = new Date(today.getYear, today.getMonth, today.getDate); time = new Date(time.getYear, time.getMonth, time.getDate); // Calculate time difference var milliseconds_ago = today.getTime - time.getTime; var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24; days_ago = Math.round(days_ago); if (days_ago <= 7) var last = 'last '; else var last = '';

// Calculate as accurately as possible, difference in days and weeks var difference = new Date(today.valueOf - time.valueOf); var descriptive_difference = [];

if (difference.getYear - 70 > 0) {           var years_ago = (difference.getYear - 70) + ' ' + 'year'.pluralize(difference.getYear - 70, 'years') + ' ago'; descriptive_difference.push(years_ago); }       if (difference.getMonth > 0) {           var months_ago = difference.getMonth + ' ' + 'month'.pluralize(difference.getMonth, 'months') + ' ago'; descriptive_difference.push(months_ago); }       if (difference.getDate > 0) {           var days_ago = difference.getDate + ' ' + 'day'.pluralize(difference.getDate, 'days') + ' ago'; descriptive_difference.push(days_ago); }       var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')'; }   var time = hour + ':' + minute + ' ' + ampm; var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')'; return "" + return_date.replace(/ /g, ' ') + ' '; // + ' (debug )' }

function leading_zero(number) {   if (number < 10) number = "0" + number return number }

function monthToNum(month) {  var tmp = new Date(month + " 1, 2006"); return tmp.getMonth; }

function numToMonth(num) {   if (num == 0) return 'January'; else if (num == 1) return 'February'; else if (num == 2) return 'March'; else if (num == 3) return 'April'; else if (num == 4) return 'May'; else if (num == 5) return 'June'; else if (num == 6) return 'July'; else if (num == 7) return 'August'; else if (num == 8) return 'September'; else if (num == 9) return 'October'; else if (num == 10) return 'November'; else if (num == 11) return 'December'; }

String.prototype.pluralize = function(count, plural) { if (plural == null) plural = this + 's';

return (count == 1 ? this : plural) }