User blog:3primetime3/Adding World Clock to Mediawiki:Common.js

Hello everyone!

I see that user:Wildoneshelper from CCSW has implemented the World Clock feature on the wiki about a year ago so users can see what time it is on Wikia Community Central (UTC time).

The following is the code that should be copied and pasted on to Mediawiki:Common.js if it will be implemented. (It is much easier to click on "Edit this Blog post" and take the source that way for Admins). What do you guys think? Is this a good idea?

See the following wiki for an example of the world clock. It is located at the very top of any page.

function updatetimer(i) { var now = new Date; var then = timers[i].eventdate; var diff = count = Math.floor((then.getTime - now.getTime) / 1000); // catch bad date strings if (isNaN(diff)) { timers[i].firstChild.nodeValue = '** ' + timers[i].eventdate + ' **'; return; }   // determine plus/minus if (diff < 0) { diff = -diff; var tpm = ' '; } else { var tpm = ' '; }   // calcuate the diff var left = (diff % 60) + ' seconds'; diff = Math.floor(diff / 60); if (diff > 0) left = (diff % 60) + ' minutes ' + left; diff = Math.floor(diff / 60); if (diff > 0) left = (diff % 24) + ' hours ' + left; diff = Math.floor(diff / 24); if (diff > 0) left = diff + ' days ' + left timers[i].firstChild.nodeValue = tpm + left; // a setInterval is more efficient, but calling setTimeout // makes errors break the script rather than infinitely recurse timeouts[i] = setTimeout('updatetimer(' + i + ')', 1000); } function checktimers { //hide 'nocountdown' and show 'countdown' var nocountdowns = getElementsByClassName(document, 'span', 'nocountdown'); for (var i in nocountdowns) nocountdowns[i].style.display = 'none' var countdowns = getElementsByClassName(document, 'span', 'countdown'); for (var i in countdowns) countdowns[i].style.display = 'inline' //set up global objects timers and timeouts. timers = getElementsByClassName(document, 'span', 'countdowndate'); //global timeouts = new Array; // generic holder for the timeouts, global if (timers.length == 0) return; for (var i in timers) { timers[i].eventdate = new Date(timers[i].firstChild.nodeValue); updatetimer(i); //start it up   } } addOnloadHook(checktimers); function liveClock { var link = wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(wgPageName) + '&action=purge'; if (skin == 'monobook') { $('#p-personal .pBody ul').append(' '); } else if (skin == 'oasis') { $('#WikiaPage #WikiHeader div.buttons').prepend('  '); }   $('#utcdate').css({        fontSize: 'larger',        fontWeight: 'bolder',        textTransform: 'none'    }); //showTime; } addOnloadHook(liveClock); // // ============================================================ // displayTimer // ============================================================ var refreshDate; function addDate { var UTCDate = ((new Date).toUTCString).replace("GMT", "(UTC)"); $('#showdate').empty.append(' ' + UTCDate.substring(5) + ' '); window.clearTimeout(refreshDate); refreshDate = window.setTimeout(addDate, 1000); } $(document).ready(function {    if (skin == 'oasis') $(' ').appendTo('#GlobalNavigation');    else $('#p-personal ul').prepend(' ');    addDate;    refreshDate = window.setTimeout(addDate, 5000);    $('#displayTimer').css({ 'font-size': "12px" }); }); //