User:Guy Bukzi Montag/common.js

// __NOWYSIWYG__ /** * Countdown * * @version 2.1 * * @author Pecoes  * @author Asaba  * * Version 1 authors: * - Splarka  * - Eladkse  * * documentation and examples at: *  */ /*jshint jquery:true, browser:true, devel:true, camelcase:true, curly:false, undef:true, bitwise:true, eqeqeq:true, forin:true, immed:true, latedef:true, newcap:true, noarg:true, unused:true, regexp:true, strict:true, trailing:false */ /*global mediaWiki:true*/ 'use strict'; var translations = $.extend(true, {		// Language list - start		// English (English)		en: {			and: 'and',			second: 'second',			seconds: 'seconds',			minute: 'minute',			minutes: 'minutes',			hour: 'hour',			hours: 'hours',			day: 'day',			days: 'days'		}		// Language list - stop	}, module.translations || {}), i18n = translations[ mw.config.get('wgContentLanguage') ] || translations.en; var countdowns = []; var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var NO_LEADING_ZEROS = 1, SHORT_FORMAT = 2, NO_ZEROS = 4, ASPHALT = 8; function leadingZero (number) { number = (number < 10 ? '0' : '' ) + number; return number; }
 * (function (module, mw, $, undefined) {

function dayGlobalBonus (now) { var start = new Date("2018-10-01").getTime; var diff = Math.floor((now - start) / 1000 / 60 / 60 / 24); return diff % 7; }   function globalBonus (day) { switch (day) { case 0: case 1: return 50; case 2: case 3: case 6: return 25; default: return 0; }   }

function output (i, diff) { /*jshint bitwise:false*/ var delta, result, parts = []; delta = diff % 60; result = ' ' + i18n[delta === 1 ? 'second' : 'seconds']; if (countdowns[i].opts & (SHORT_FORMAT | ASPHALT)) result = result.charAt(1); parts.unshift(delta + result); diff = Math.floor(diff / 60); delta = diff % 60; result = ' ' + i18n[delta === 1 ? 'minute' : 'minutes']; if (countdowns[i].opts & (SHORT_FORMAT | ASPHALT)) result = result.charAt(1); parts.unshift(delta + result); diff = Math.floor(diff / 60); delta = diff % 24; result = ' ' + i18n[delta === 1 ? 'hour'  : 'hours'  ]; if (countdowns[i].opts & (SHORT_FORMAT | ASPHALT)) result = result.charAt(1); parts.unshift(delta + result); diff = Math.floor(diff / 24); result = ' ' + i18n[diff === 1 ? 'day'   : 'days'   ]; if (countdowns[i].opts & (SHORT_FORMAT | ASPHALT)) result = result.charAt(1); parts.unshift(diff + result); if (!ASPHALT) result = parts.pop; if (countdowns[i].opts & (NO_LEADING_ZEROS | ASPHALT)) { while (parts.length && parts[0][0] === '0') { parts.shift; }		}		if (countdowns[i].opts & NO_ZEROS) { parts = parts.filter(function(part) {				return part[0] !== '0';			}); }		if (countdowns[i].opts & ASPHALT) { // only show at most two elements while (parts.length > 2) { parts.pop; }		}		if (parts.length) { if (countdowns[i].opts & ASPHALT) { result = parts.join(' '); } else if (countdowns[i].opts & SHORT_FORMAT) { result = parts.join(' ') + ' ' + result; } else { result = parts.join(', ') + ' ' + i18n.and + ' ' + result; }		}		countdowns[i].node.text(result); }	function end(i) { var c = countdowns[i].node.parent; switch (c.attr('data-end')) { case 'remove': c.remove; return true; case 'stop': output(i, 0); return true; case 'toggle': var toggle = c.attr('data-toggle'); if (toggle && toggle == 'next') { c.next.css('display', 'inline'); c.css('display', 'none'); return true; }			if (toggle && $(toggle).length) { $(toggle).css('display', 'inline'); c.css('display', 'none'); return true; }			break; case 'callback': var callback = c.attr('data-callback'); if (callback && $.isFunction(module[callback])) { output(i, 0); module[callback].call(c); return true; }			break; }		countdowns[i].countup = true; output(i, 0); return false; }	function update { var date = new Date; var now = Date.now; var countdownsToRemove = []; $.each(countdowns.slice(0), function (i, countdown) {           switch(countdown.date) {            case 'month':                countdowns[i].node.text(months[date.getUTCMonth]);                break;            case 'day':                countdowns[i].node.text(date.getUTCDate);                break;            case 'time':                var h = date.getUTCHours;                var m = date.getUTCMinutes;                countdowns[i].node.text(leadingZero(h) + ":" + leadingZero(m));                break;            case 'multiplayer global bonus':                countdowns[i].node.text(globalBonus(dayGlobalBonus(now)));                countdowns[i].node.parent.addClass('globalbonus-season-' + globalBonus(dayGlobalBonus(now)));                break;            case 'next global bonus':                if (globalBonus(dayGlobalBonus(now)) !=== 50) {                    countdowns[i].node.html(' Time to race! '); } else { countdowns[i].node.html(' Next 50 % bonus: '); }               break; default: var diff = Math.floor((countdown.date - now) / 1000); if (diff <= 0 && !countdown.countup) { if (end(i)) countdownsToRemove.push(i); } else { output(i, Math.abs(diff)); }           }		});		var x;		while((x = countdownsToRemove.pop) !== undefined) {			countdowns.splice(x, 1);		}		if (countdowns.length) {			window.setTimeout(function  { update; }, 1000);		}	}	function getOptions (node) {		/*jshint bitwise:false*/		var text = node.parent.attr('data-options'),			opts = 0;		if (text) {			if (/no-leading-zeros/.test(text)) {				opts |= NO_LEADING_ZEROS;			}			if (/short-format/.test(text)) {				opts |= SHORT_FORMAT;			}			if (/no-zeros/.test(text)) {				opts |= NO_ZEROS;			}			if (/asphalt/.test(text)) {				opts |= ASPHALT;			}		}		return opts;	}	function init {		var countdown = $('.awtimer:not(.handled)');		if (!countdown.length) return;		$('.awnotimer').css('display', 'none');		countdown		.css('display', 'inline')		.find('.awtimertype')		.each(function { var $this = $(this), date = (new Date($this.text)).valueOf; if (isNaN(date)) { switch ($this.text) { case 'seconds': case 'month' : case 'day': case 'time': case 'multiplayer global bonus': case 'next global bonus': date = $this.text; break; default: $this.text('BAD DATE'); return; }			}			countdowns.push({				node: $this,				opts: getOptions($this),				date: date,			}); });		countdown.addClass('handled');		if (countdowns.length) {			update;		}	}	mw.hook('wikipage.content').add(init); }(window.countdownTimer = window.countdownTimer || {}, mediaWiki, jQuery));

// // Attempts to get a CSS variable into page code // Sanitizer doesn't allow simple // Example text

$("div").click(function {   var color = $(this).css("background-color");    $( "#result" ).html("That div is " + color + " ."); });

$(".testclass").css("color", returnVar("--test"));

$(function {   $("#bingo").html("The value of --test is: " + returnVar("--test") + "."); });

function returnVar(varName) { return window.getComputedStyle(document.documentElement).getPropertyValue(varName); // jQuery doesn't work: // return $(":root").css("--test") + " (jQuery)"; }