<?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-10-20T06:15:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</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 class=&quot;autocomment&quot;&gt;Any JavaScript here will be loaded for all users on every page load.: &lt;/span&gt;&amp;quot;&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 () {   &#039;use strict&#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; !text.includes(&#039;%s&#039;)) text = text + &#039; %s.&#039;;     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 class=&quot;autocomment&quot;&gt;Any JavaScript here will be loaded for all users on every page load.: &lt;/span&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;/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;
  &amp;#039;use strict&amp;#039;;&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(&amp;#039;%s&amp;#039;)) text = text + &amp;#039; %s.&amp;#039;;&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 = &amp;#039;&amp;#039;;&lt;br /&gt;
    result += days ? &amp;#039; &amp;#039; + days.toString() + &amp;#039;d&amp;#039; : &amp;#039;&amp;#039;;&lt;br /&gt;
    result += hours ? &amp;#039; &amp;#039; + hours.toString() + &amp;#039;h&amp;#039; : &amp;#039;&amp;#039;;&lt;br /&gt;
    result += minutes ? &amp;#039; &amp;#039; + minutes.toString() + &amp;#039;m&amp;#039; : &amp;#039;&amp;#039;;&lt;br /&gt;
    result += seconds ? &amp;#039; &amp;#039; + Math.max(seconds - 1, 0).toString() + &amp;#039;s&amp;#039; : &amp;#039;&amp;#039;;&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; // + &amp;#039; (start: &amp;#039; + startDate.toUTCString() + &amp;#039;, end: &amp;#039; + endDate.toUTCString() + &amp;#039;)&amp;#039;;&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(&amp;#039;%s&amp;#039;, result); // + &amp;#039; (start: &amp;#039; + startDate.toUTCString() + &amp;#039;, end: &amp;#039; + endDate.toUTCString() + &amp;#039;, diff: &amp;#039; + diff +&amp;#039;, interval: &amp;#039; + interval + &amp;#039;)&amp;#039;;&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 &amp;#039;th&amp;#039;;&lt;br /&gt;
    switch (d % 10) {&lt;br /&gt;
      case 1:&lt;br /&gt;
        return &amp;#039;st&amp;#039;;&lt;br /&gt;
      case 2:&lt;br /&gt;
        return &amp;#039;nd&amp;#039;;&lt;br /&gt;
      case 3:&lt;br /&gt;
        return &amp;#039;rd&amp;#039;;&lt;br /&gt;
      default:&lt;br /&gt;
        return &amp;#039;th&amp;#039;;&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;
      &amp;#039;January&amp;#039;,&lt;br /&gt;
      &amp;#039;February&amp;#039;,&lt;br /&gt;
      &amp;#039;March&amp;#039;,&lt;br /&gt;
      &amp;#039;April&amp;#039;,&lt;br /&gt;
      &amp;#039;May&amp;#039;,&lt;br /&gt;
      &amp;#039;June&amp;#039;,&lt;br /&gt;
      &amp;#039;July&amp;#039;,&lt;br /&gt;
      &amp;#039;August&amp;#039;,&lt;br /&gt;
      &amp;#039;September&amp;#039;,&lt;br /&gt;
      &amp;#039;October&amp;#039;,&lt;br /&gt;
      &amp;#039;November&amp;#039;,&lt;br /&gt;
      &amp;#039;December&amp;#039;,&lt;br /&gt;
    ];&lt;br /&gt;
    var date = new Date(time);&lt;br /&gt;
    var output = &amp;#039;&amp;#039;;&lt;br /&gt;
    if (el.dataset.format == &amp;#039;hm&amp;#039; || el.dataset.format == &amp;#039;H:i&amp;#039;) {&lt;br /&gt;
      output =&lt;br /&gt;
        (&amp;#039;000&amp;#039; + date.getHours()).slice(-2) +&lt;br /&gt;
        &amp;#039;:&amp;#039; +&lt;br /&gt;
        (&amp;#039;000&amp;#039; + date.getMinutes()).slice(-2);&lt;br /&gt;
    } else if (el.dataset.format == &amp;#039;md&amp;#039;) {&lt;br /&gt;
      output =&lt;br /&gt;
        months[date.getMonth()] + &amp;#039; &amp;#039; + date.getDate() + nth(date.getDate());&lt;br /&gt;
    } else if (el.dataset.format == &amp;#039;mdy&amp;#039;) {&lt;br /&gt;
      output =&lt;br /&gt;
        months[date.getMonth()] +&lt;br /&gt;
        &amp;#039; &amp;#039; +&lt;br /&gt;
        date.getDate() +&lt;br /&gt;
        nth(date.getDate()) +&lt;br /&gt;
        &amp;#039;, &amp;#039; +&lt;br /&gt;
        date.getFullYear();&lt;br /&gt;
    } else {&lt;br /&gt;
      output =&lt;br /&gt;
        (&amp;#039;000&amp;#039; + date.getHours()).slice(-2) +&lt;br /&gt;
        &amp;#039;:&amp;#039; +&lt;br /&gt;
        (&amp;#039;000&amp;#039; + date.getMinutes()).slice(-2) +&lt;br /&gt;
        &amp;#039;, &amp;#039; +&lt;br /&gt;
        months[date.getMonth()] +&lt;br /&gt;
        &amp;#039; &amp;#039; +&lt;br /&gt;
        date.getDate() +&lt;br /&gt;
        nth(date.getDate()) +&lt;br /&gt;
        &amp;#039;, &amp;#039; +&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(&amp;#039;.localtime&amp;#039;);&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;
        &amp;#039;Starts in %s.&amp;#039;,&lt;br /&gt;
        true&lt;br /&gt;
      );&lt;br /&gt;
      el.dataset.textEnd = verifyText(el.dataset.textEnd, &amp;#039;Ends in %s.&amp;#039;, true);&lt;br /&gt;
      el.dataset.textAfter = verifyText(&lt;br /&gt;
        el.dataset.textAfter,&lt;br /&gt;
        &amp;#039;Event has ended.&amp;#039;,&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 == &amp;#039;loading&amp;#039;) {&lt;br /&gt;
    document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, 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>