<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://anarch.games/noisz/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://anarch.games/noisz/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://anarch.games/noisz/wiki/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-04-11T07:33:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.12</generator>
	<entry>
		<id>https://anarch.games/noisz/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9687&amp;oldid=prev</id>
		<title>RiceEmpress: Replaced content with &quot;/* Any JavaScript here will be loaded for all users on every page load. */&quot;</title>
		<link rel="alternate" type="text/html" href="https://anarch.games/noisz/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9687&amp;oldid=prev"/>
		<updated>2025-11-23T22:10:32Z</updated>

		<summary type="html">&lt;p&gt;Replaced content with &amp;quot;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Any JavaScript here will be loaded for all users on every page load.: &lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://anarch.games/noisz/wiki/index.php?title=MediaWiki:Common.js&amp;amp;diff=9687&amp;amp;oldid=9671&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>RiceEmpress</name></author>
	</entry>
	<entry>
		<id>https://anarch.games/noisz/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9671&amp;oldid=prev</id>
		<title>RiceEmpress: Created page with &quot;/* Any JavaScript here will be loaded for all users on every page load. */   /* This is for the countdown timers */  (function () {   'use strict';    var verifyTime = function (value) {     var time = parseInt(value, 10);     if (isNaN(time)) time = 0;     return time * 1000;   };    var verifyText = function (text, defaultText, hasTime) {     if (text === undefined) return defaultText;     if (hasTime &amp;&amp; !text.includes('%s')) text = text + ' %s.';     return text;   };...&quot;</title>
		<link rel="alternate" type="text/html" href="https://anarch.games/noisz/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9671&amp;oldid=prev"/>
		<updated>2025-11-23T21:06:40Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Any JavaScript here will be loaded for all users on every page load.: &lt;/span&gt;   &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;This is for the countdown timers: &lt;/span&gt;  (function () {   &amp;#039;use strict&amp;#039;;    var verifyTime = function (value) {     var time = parseInt(value, 10);     if (isNaN(time)) time = 0;     return time * 1000;   };    var verifyText = function (text, defaultText, hasTime) {     if (text === undefined) return defaultText;     if (hasTime &amp;amp;&amp;amp; !text.includes(&amp;#039;%s&amp;#039;)) text = text + &amp;#039; %s.&amp;#039;;     return text;   };...&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* This is for the countdown timers */&lt;br /&gt;
&lt;br /&gt;
(function () {&lt;br /&gt;
  'use strict';&lt;br /&gt;
&lt;br /&gt;
  var verifyTime = function (value) {&lt;br /&gt;
    var time = parseInt(value, 10);&lt;br /&gt;
    if (isNaN(time)) time = 0;&lt;br /&gt;
    return time * 1000;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  var verifyText = function (text, defaultText, hasTime) {&lt;br /&gt;
    if (text === undefined) return defaultText;&lt;br /&gt;
    if (hasTime &amp;amp;&amp;amp; !text.includes('%s')) text = text + ' %s.';&lt;br /&gt;
    return text;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  var formatTime = function (days, hours, minutes, seconds) {&lt;br /&gt;
    var result = '';&lt;br /&gt;
    result += days ? ' ' + days.toString() + 'd' : '';&lt;br /&gt;
    result += hours ? ' ' + hours.toString() + 'h' : '';&lt;br /&gt;
    result += minutes ? ' ' + minutes.toString() + 'm' : '';&lt;br /&gt;
    result += seconds ? ' ' + Math.max(seconds - 1, 0).toString() + 's' : '';&lt;br /&gt;
    return result;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  var updateCountdownText = function (el) {&lt;br /&gt;
    var now = new Date();&lt;br /&gt;
    var startDate = new Date(parseInt(el.dataset.startTime, 10));&lt;br /&gt;
    var endDate = new Date(parseInt(el.dataset.endTime, 10));&lt;br /&gt;
&lt;br /&gt;
    var startDiff = startDate.getTime() - now.getTime();&lt;br /&gt;
    var endDiff = endDate.getTime() - now.getTime();&lt;br /&gt;
&lt;br /&gt;
    var text = el.dataset.textEnd;&lt;br /&gt;
    var diff = startDiff;&lt;br /&gt;
    if (startDiff &amp;gt; 1000) {&lt;br /&gt;
      if (startDate &amp;lt; endDate) text = el.dataset.textStart;&lt;br /&gt;
    } else if (endDiff &amp;gt; 1000) {&lt;br /&gt;
      diff = endDiff;&lt;br /&gt;
    } else {&lt;br /&gt;
      text = el.dataset.textAfter;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (diff &amp;lt; 1000) {&lt;br /&gt;
      el.innerHTML = text; // + ' (start: ' + startDate.toUTCString() + ', end: ' + endDate.toUTCString() + ')';&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    diff = diff / 1000;&lt;br /&gt;
    var days = Math.floor(diff / 86400);&lt;br /&gt;
    var hours = Math.floor((diff % 86400) / 3600);&lt;br /&gt;
    var minutes = Math.floor((diff % 3600) / 60);&lt;br /&gt;
    var seconds = ((diff % 3600) % 60).toFixed(0);&lt;br /&gt;
&lt;br /&gt;
    if (days === 1) {&lt;br /&gt;
      hours += 24;&lt;br /&gt;
      days = 0;&lt;br /&gt;
    }&lt;br /&gt;
    if (hours &amp;gt; 1 || days &amp;gt; 0) seconds = 0;&lt;br /&gt;
    if (days &amp;gt; 0) minutes = 0;&lt;br /&gt;
&lt;br /&gt;
    var result = formatTime(days, hours, minutes, seconds);&lt;br /&gt;
&lt;br /&gt;
    var interval = 1000;&lt;br /&gt;
    if (days &amp;gt; 0) {&lt;br /&gt;
      interval = 60 * 60 * 1000;&lt;br /&gt;
    } else if (hours &amp;gt; 1) {&lt;br /&gt;
      interval = 60 * 1000;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    el.innerHTML = text.replace('%s', result); // + ' (start: ' + startDate.toUTCString() + ', end: ' + endDate.toUTCString() + ', diff: ' + diff +', interval: ' + interval + ')';&lt;br /&gt;
&lt;br /&gt;
    window.setTimeout(function () {&lt;br /&gt;
      updateCountdownText(el);&lt;br /&gt;
    }, interval);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  const nth = function (d) {&lt;br /&gt;
    if (d &amp;gt; 3 &amp;amp;&amp;amp; d &amp;lt; 21) return 'th';&lt;br /&gt;
    switch (d % 10) {&lt;br /&gt;
      case 1:&lt;br /&gt;
        return 'st';&lt;br /&gt;
      case 2:&lt;br /&gt;
        return 'nd';&lt;br /&gt;
      case 3:&lt;br /&gt;
        return 'rd';&lt;br /&gt;
      default:&lt;br /&gt;
        return 'th';&lt;br /&gt;
    }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  var updateTimeText = function (el, time) {&lt;br /&gt;
    var months = [&lt;br /&gt;
      'January',&lt;br /&gt;
      'February',&lt;br /&gt;
      'March',&lt;br /&gt;
      'April',&lt;br /&gt;
      'May',&lt;br /&gt;
      'June',&lt;br /&gt;
      'July',&lt;br /&gt;
      'August',&lt;br /&gt;
      'September',&lt;br /&gt;
      'October',&lt;br /&gt;
      'November',&lt;br /&gt;
      'December',&lt;br /&gt;
    ];&lt;br /&gt;
    var date = new Date(time);&lt;br /&gt;
    var output = '';&lt;br /&gt;
    if (el.dataset.format == 'hm' || el.dataset.format == 'H:i') {&lt;br /&gt;
      output =&lt;br /&gt;
        ('000' + date.getHours()).slice(-2) +&lt;br /&gt;
        ':' +&lt;br /&gt;
        ('000' + date.getMinutes()).slice(-2);&lt;br /&gt;
    } else if (el.dataset.format == 'md') {&lt;br /&gt;
      output =&lt;br /&gt;
        months[date.getMonth()] + ' ' + date.getDate() + nth(date.getDate());&lt;br /&gt;
    } else if (el.dataset.format == 'mdy') {&lt;br /&gt;
      output =&lt;br /&gt;
        months[date.getMonth()] +&lt;br /&gt;
        ' ' +&lt;br /&gt;
        date.getDate() +&lt;br /&gt;
        nth(date.getDate()) +&lt;br /&gt;
        ', ' +&lt;br /&gt;
        date.getFullYear();&lt;br /&gt;
    } else {&lt;br /&gt;
      output =&lt;br /&gt;
        ('000' + date.getHours()).slice(-2) +&lt;br /&gt;
        ':' +&lt;br /&gt;
        ('000' + date.getMinutes()).slice(-2) +&lt;br /&gt;
        ', ' +&lt;br /&gt;
        months[date.getMonth()] +&lt;br /&gt;
        ' ' +&lt;br /&gt;
        date.getDate() +&lt;br /&gt;
        nth(date.getDate()) +&lt;br /&gt;
        ', ' +&lt;br /&gt;
        date.getFullYear();&lt;br /&gt;
    }&lt;br /&gt;
    el.innerHTML = output;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  var ready = function () {&lt;br /&gt;
    var elements = document.querySelectorAll('.localtime');&lt;br /&gt;
    Array.from(elements).forEach(function (el) {&lt;br /&gt;
      var startTime = verifyTime(el.dataset.start);&lt;br /&gt;
      var endTime = verifyTime(el.dataset.end);&lt;br /&gt;
      var time = verifyTime(el.dataset.time);&lt;br /&gt;
      el.dataset.textStart = verifyText(&lt;br /&gt;
        el.dataset.textStart,&lt;br /&gt;
        'Starts in %s.',&lt;br /&gt;
        true&lt;br /&gt;
      );&lt;br /&gt;
      el.dataset.textEnd = verifyText(el.dataset.textEnd, 'Ends in %s.', true);&lt;br /&gt;
      el.dataset.textAfter = verifyText(&lt;br /&gt;
        el.dataset.textAfter,&lt;br /&gt;
        'Event has ended.',&lt;br /&gt;
        false&lt;br /&gt;
      );&lt;br /&gt;
      if (startTime + endTime &amp;gt; 0) {&lt;br /&gt;
        el.dataset.startTime = startTime;&lt;br /&gt;
        el.dataset.endTime = endTime;&lt;br /&gt;
        updateCountdownText(el);&lt;br /&gt;
      } else if (time &amp;gt; 0) {&lt;br /&gt;
        updateTimeText(el, time);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  if (document.readyState == 'loading') {&lt;br /&gt;
    document.addEventListener('DOMContentLoaded', ready);&lt;br /&gt;
  } else {&lt;br /&gt;
    ready();&lt;br /&gt;
  }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>RiceEmpress</name></author>
	</entry>
</feed>