Halo Esports Wiki
Donut (talk | contribs)
No edit summary
Donut (talk | contribs)
No edit summary
Line 32: Line 32:
 
$(document).ready( wikiLogoText() );
 
$(document).ready( wikiLogoText() );
   
  +
/* Convert the scheduled next game time into local timezone */
 
 
/* Converter the scheduled next game time into local timezone */
 
 
$(function () {
 
$(function () {
 
var point = document.getElementsByClassName("getLocalTimeZoneOfThis");
 
var point = document.getElementsByClassName("getLocalTimeZoneOfThis");
Line 121: Line 119:
 
);
 
);
   
  +
function tocafter() {
  +
if( document.getElementById("infoboxPlayer") ){
  +
if( document.getElementById("twitchStream") ){
  +
if($(window).width() < 1400) {
  +
$("#tocdiv").insertAfter("#sbsAndStream");
  +
var streamWidth = $("#bodyContent").width() - ($("#infoboxPlayer").width() + (16*2) + 10)
  +
var streamHeight = (streamWidth * 9)/16
  +
var stream = document.getElementById("twitchStream")
  +
stream.setAttribute("width", streamWidth)
  +
stream.setAttribute("height", streamHeight)
  +
}
  +
else {
  +
$("#tocdiv").insertBefore("#sbsAndStream");
  +
  +
var streamWidth = $("#bodyContent").width() - ($("#infoboxPlayer").width() + (16*2) + $("#tocdiv").width() + 30 + (($(window).width() * 0.25) - 350))
  +
if (streamWidth > 1280){
  +
streamWidth = 1280
  +
}
  +
var streamHeight = (streamWidth * 9)/16
  +
var stream = document.getElementById("twitchStream")
  +
stream.setAttribute("width", streamWidth)
  +
stream.setAttribute("height", streamHeight)
  +
}
  +
}
  +
}
  +
}
  +
  +
$(document).ready( tocafter() );
  +
window.addEventListener("resize", tocafter, false);
  +
  +
  +
// __NOWYSIWYG__
 
/**
 
/**
 
* Countdown
 
* Countdown
Line 126: Line 156:
 
* @version 2.1
 
* @version 2.1
 
*
 
*
* @author Pecoes <http://c.gamepedia.com/User:Pecoes>
+
* @author Pecoes <https://c.wikia.com/wiki/User:Pecoes>
* @author Asaba <http://dev.gamepedia.com/User:Asaba>
+
* @author Asaba <https://dev.wikia.com/wiki/User:Asaba>
 
*
 
*
 
* Version 1 authors:
 
* Version 1 authors:
* - Splarka <http://c.gamepedia.com/User:Splarka>
+
* - Splarka <https://c.wikia.com/wiki/User:Splarka>
* - Eladkse <http://c.gamepedia.com/User:Eladkse>
+
* - Eladkse <https://c.wikia.com/wiki/User:Eladkse>
 
*
 
*
 
* documentation and examples at:
 
* documentation and examples at:
* <http://dev.gamepedia.com/Countdown>
+
* <https://dev.wikia.com/wiki/Countdown>
 
*/
 
*/
 
 
Line 141: Line 171:
 
 
 
;(function (module, mw, $, undefined) {
 
;(function (module, mw, $, undefined) {
  +
 
 
'use strict';
 
'use strict';
 
 
Line 315: Line 345:
 
 
 
}(window.countdownTimer = window.countdownTimer || {}, mediaWiki, jQuery));
 
}(window.countdownTimer = window.countdownTimer || {}, mediaWiki, jQuery));
 
   
 
var toggleMapListSetup = function() {
 
var toggleMapListSetup = function() {
Line 361: Line 390:
 
});
 
});
 
};
 
};
 
 
/**
 
Toggles the display of elements on a page
 
Author/contact: Austin Che http://openwetware.org/wiki/User:Austin_J._Che
 
See http://openwetware.org/wiki/OpenWetWare:Toggle for examples and documentation
 
*/
 
 
// indexed array of toggler ids to array of associated toggle operations
 
// each operation is a two element array, the first being the type, the second a class name or array of elements
 
// operation types are strings like "_reset" or "" for the default toggle operation
 
var togglers = new Array();
 
var allClasses = new Object(); // associative map of class names to page elements
 
 
function toggler(id)
 
{
 
var toBeToggled = togglers[id];
 
if (!toBeToggled)
 
return;
 
 
// if some element is in list more than once, it will be toggled multiple times
 
for (var i = 0; i < toBeToggled.length; i++)
 
{
 
// get array of elements to operate on
 
var toggles = toBeToggled[i][1];
 
if (typeof(toggles) == "string")
 
{
 
if (toggles.charAt(0) == '-')
 
{
 
// treat as an element ID, not as class
 
toggles = document.getElementById(toggles.substring(1));
 
if (toggles)
 
toggles = new Array(toggles);
 
}
 
else
 
toggles = allClasses[toggles];
 
}
 
if (!toggles || !toggles.length)
 
continue;
 
 
var op = toBeToggled[i][0]; // what the operation will be
 
 
switch (op)
 
{
 
case "_reset":
 
for (var j = 0; j < toggles.length; j++)
 
toggles[j].style.display = toggles[j]._toggle_original_display;
 
break;
 
case "_show":
 
for (var j = 0; j < toggles.length; j++)
 
toggles[j].style.display = '';
 
break;
 
case "_hide":
 
for (var j = 0; j < toggles.length; j++)
 
toggles[j].style.display = 'none';
 
break;
 
case "_slidehide":
 
for (var j = 0; j < toggles.length; j++){
 
if (toggles[j].style.display != 'none'){
 
$(toggles[j]).animate({width: 'toggle'});
 
}
 
}
 
break;
 
case "_slideshow":
 
for (var j = 0; j < toggles.length; j++){
 
if (toggles[j].style.display == 'none'){
 
$(toggles[j]).animate({width: 'toggle'});
 
}
 
}
 
break;
 
case "_expand":
 
for (var j = 0; j < toggles.length; j++){
 
var bracketCr2 = $(toggles[j]).find('*.oldr2');
 
var bracketCr3 = $(toggles[j]).find('*.oldr3');
 
var bracketCr4 = $(toggles[j]).find('*.oldr4');
 
var bracketCr5 = $(toggles[j]).find('*.oldr5');
 
var bracketCr6 = $(toggles[j]).find('*.oldr6');
 
function distinguishCell(cell, oRound){
 
var strNClass = "test";
 
if($(cell).is('*[class*="bracket-cell"]')){
 
strNClass = "bracket-cell-r" + oRound.toString();
 
}
 
else if($(cell).is('*[class*="bracket-line-left-top"]')){
 
strNClass = "bracket-line-left-top-r" + oRound.toString();
 
}
 
else if($(cell).is('*[class*="bracket-line-left-mid"]')){
 
strNClass = "bracket-line-left-mid-r" + oRound.toString();
 
}
 
else if($(cell).is('*[class*="bracket-line-left-bot"]')){
 
strNClass = "bracket-line-left-bot-r" + oRound.toString();
 
}
 
else if($(cell).is('*[class*="bracket-line-right-top"]')){
 
strNClass = "bracket-line-right-top-r" + oRound.toString();
 
}
 
else if($(cell).is('*[class*="bracket-line-right-bot"]')){
 
strNClass = "bracket-line-right-bot-r" + oRound.toString();
 
}
 
cell.className = strNClass;
 
}
 
for (var k = 0; k < bracketCr2.length; k++){
 
distinguishCell(bracketCr2[k],2);
 
}
 
for (var k = 0; k < bracketCr3.length; k++){
 
distinguishCell(bracketCr3[k],3);
 
}
 
for (var k = 0; k < bracketCr4.length; k++){
 
distinguishCell(bracketCr4[k],4);
 
}
 
for (var k = 0; k < bracketCr5.length; k++){
 
distinguishCell(bracketCr5[k],5);
 
}
 
for (var k = 0; k < bracketCr6.length; k++){
 
distinguishCell(bracketCr6[k],6);
 
}
 
}
 
break;
 
case "_shrink":
 
setTimeout(function(){togglerShrink(toggler)},200);
 
function togglerShrink(toggler) {
 
var smallest = 7;
 
var smallestL = 7;
 
for (var j = 0; j < toggles.length; j++){
 
var bracketCr2 = $(toggles[j]).find('*.bracket-cell-r2');
 
var bracketCr3 = $(toggles[j]).find('*.bracket-cell-r3');
 
var bracketCr4 = $(toggles[j]).find('*.bracket-cell-r4');
 
var bracketCr5 = $(toggles[j]).find('*.bracket-cell-r5');
 
var bracketCr6 = $(toggles[j]).find('*.bracket-cell-r6');
 
if(bracketCr2.length > 0 && smallest > 2){
 
smallest = 2;
 
}
 
else if(bracketCr3.length > 0 && smallest > 3){
 
smallest = 3;
 
}
 
else if(bracketCr4.length > 0 && smallest > 4){
 
smallest = 4;
 
}
 
else if(bracketCr5.length > 0 && smallest > 5){
 
smallest = 5;
 
}
 
else if(bracketCr6.length > 0 && smallest > 6){
 
smallest = 6;
 
}
 
 
var bllt2 = $(toggles[j]).find('*.bracket-line-left-top-r2');
 
var bllt3 = $(toggles[j]).find('*.bracket-line-left-top-r3');
 
var bllt4 = $(toggles[j]).find('*.bracket-line-left-top-r4');
 
var bllt5 = $(toggles[j]).find('*.bracket-line-left-top-r5');
 
var bllt6 = $(toggles[j]).find('*.bracket-line-left-top-r6');
 
 
if(bllt2.length > 0 && smallestL > 2){
 
smallestL = 2;
 
}
 
else if(bllt3.length > 0 && smallestL > 3){
 
smallestL = 3;
 
}
 
else if(bllt4.length > 0 && smallestL > 4){
 
smallestL = 4;
 
}
 
else if(bllt5.length > 0 && smallestL > 5){
 
smallestL = 5;
 
}
 
else if(bllt6.length > 0 && smallestL > 6){
 
smallestL = 6;
 
}
 
}
 
for (var j = 0; j < toggles.length; j++){
 
var bracketCr2 = $(toggles[j]).find('*.bracket-cell-r2');
 
var bracketCr3 = $(toggles[j]).find('*.bracket-cell-r3');
 
var bracketCr4 = $(toggles[j]).find('*.bracket-cell-r4');
 
var bracketCr5 = $(toggles[j]).find('*.bracket-cell-r5');
 
var bracketCr6 = $(toggles[j]).find('*.bracket-cell-r6');
 
 
var bllt2 = $(toggles[j]).find('*.bracket-line-left-top-r2');
 
var bllm2 = $(toggles[j]).find('*.bracket-line-left-mid-r2');
 
var bllb2 = $(toggles[j]).find('*.bracket-line-left-bot-r2');
 
var blrt2 = $(toggles[j]).find('*.bracket-line-right-top-r2');
 
var blrb2 = $(toggles[j]).find('*.bracket-line-right-bot-r2');
 
 
var bllt3 = $(toggles[j]).find('*.bracket-line-left-top-r3');
 
var bllm3 = $(toggles[j]).find('*.bracket-line-left-mid-r3');
 
var bllb3 = $(toggles[j]).find('*.bracket-line-left-bot-r3');
 
var blrt3 = $(toggles[j]).find('*.bracket-line-right-top-r3');
 
var blrb3 = $(toggles[j]).find('*.bracket-line-right-bot-r3');
 
 
var bllt4 = $(toggles[j]).find('*.bracket-line-left-top-r4');
 
var bllm4 = $(toggles[j]).find('*.bracket-line-left-mid-r4');
 
var bllb4 = $(toggles[j]).find('*.bracket-line-left-bot-r4');
 
var blrt4 = $(toggles[j]).find('*.bracket-line-right-top-r4');
 
var blrb4 = $(toggles[j]).find('*.bracket-line-right-bot-r4');
 
 
var bllt5 = $(toggles[j]).find('*.bracket-line-left-top-r5');
 
var bllm5 = $(toggles[j]).find('*.bracket-line-left-mid-r5');
 
var bllb5 = $(toggles[j]).find('*.bracket-line-left-bot-r5');
 
var blrt5 = $(toggles[j]).find('*.bracket-line-right-top-r5');
 
var blrb5 = $(toggles[j]).find('*.bracket-line-right-bot-r5');
 
 
for (var k = 0; k < bracketCr2.length; k++){
 
var n = 3-smallest;
 
var nClass = " bracket-cell-r" + n.toString();
 
bracketCr2[k].className += nClass;
 
$(bracketCr2[k]).removeClass("bracket-cell-r2");
 
if($(bracketCr2[k]).is('*[class*="old"]')){
 
}
 
else{
 
bracketCr2[k].className += " oldr2";
 
}
 
}
 
for (var k = 0; k < bracketCr3.length; k++){
 
var n = 4-smallest;
 
var nClass = " bracket-cell-r" + n.toString();
 
bracketCr3[k].className += nClass;
 
$(bracketCr3[k]).removeClass("bracket-cell-r3");
 
if($(bracketCr3[k]).is('*[class*="old"]')){
 
}
 
else{
 
bracketCr3[k].className += " oldr3";
 
}
 
}
 
for (var k = 0; k < bracketCr4.length; k++){
 
var n = 5-smallest;
 
var nClass = " bracket-cell-r" + n.toString();
 
bracketCr4[k].className += nClass;
 
$(bracketCr4[k]).removeClass("bracket-cell-r4");
 
if($(bracketCr4[k]).is('*[class*="old"]')){
 
}
 
else{
 
bracketCr4[k].className += " oldr4";
 
}
 
}
 
for (var k = 0; k < bracketCr5.length; k++){
 
var n = 6-smallest;
 
var nClass = " bracket-cell-r" + n.toString();
 
bracketCr5[k].className += nClass;
 
$(bracketCr5[k]).removeClass("bracket-cell-r5");
 
if($(bracketCr5[k]).is('*[class*="old"]')){
 
}
 
else{
 
bracketCr5[k].className += " oldr5";
 
}
 
}
 
for (var k = 0; k < bracketCr6.length; k++){
 
var n = 7-smallest;
 
var nClass = " bracket-cell-r" + n.toString();
 
bracketCr6[k].className += nClass;
 
$(bracketCr6[k]).removeClass("bracket-cell-r6");
 
if($(bracketCr6[k]).is('*[class*="old"]')){
 
}
 
else{
 
bracketCr6[k].className += " oldr6";
 
}
 
}
 
for (var k = 0; k < bllt2.length; k++){
 
var n = 3 - smallestL;
 
var m1 = 2 * k;
 
var m2 = 2 * k + 1;
 
var nSt = " bracket-line-left-top-r" + n.toString();
 
var nSm = " bracket-line-left-mid-r" + n.toString();
 
var nSb = " bracket-line-left-bot-r" + n.toString();
 
var nStr = " bracket-line-right-top-r" + n.toString();
 
var nSbr = " bracket-line-right-bot-r" + n.toString();
 
bllt2[k].className += nSt;
 
bllm2[m1].className += nSm;
 
bllm2[m2].className += nSm;
 
bllb2[k].className += nSb;
 
blrt2[k].className += nStr;
 
blrb2[k].className += nSbr;
 
$(bllt2[k]).removeClass("bracket-line-left-top-r2");
 
$(bllm2[m1]).removeClass("bracket-line-left-mid-r2");
 
$(bllm2[m2]).removeClass("bracket-line-left-mid-r2");
 
$(bllb2[k]).removeClass("bracket-line-left-bot-r2");
 
$(blrt2[k]).removeClass("bracket-line-right-top-r2");
 
$(blrb2[k]).removeClass("bracket-line-right-bot-r2");
 
if($(bllt2[k]).is('*[class*="old"]')){
 
}
 
else{
 
bllt2[k].className += " oldr2";
 
bllb2[k].className += " oldr2";
 
bllm2[m1].className += " oldr2";
 
bllm2[m2].className += " oldr2";
 
blrt2[k].className += " oldr2";
 
blrb2[k].className += " oldr2";
 
}
 
}
 
for (var k = 0; k < bllt3.length; k++){
 
var n = 4 - smallestL;
 
var m1 = 2 * k;
 
var m2 = 2 * k + 1;
 
var nSt = " bracket-line-left-top-r" + n.toString();
 
var nSm = " bracket-line-left-mid-r" + n.toString();
 
var nSb = " bracket-line-left-bot-r" + n.toString();
 
var nStr = " bracket-line-right-top-r" + n.toString();
 
var nSbr = " bracket-line-right-bot-r" + n.toString();
 
bllt3[k].className += nSt;
 
bllm3[m1].className += nSm;
 
bllm3[m2].className += nSm;
 
bllb3[k].className += nSb;
 
blrt3[k].className += nStr;
 
blrb3[k].className += nSbr;
 
$(bllt3[k]).removeClass("bracket-line-left-top-r3");
 
$(bllm3[m1]).removeClass("bracket-line-left-mid-r3");
 
$(bllm3[m2]).removeClass("bracket-line-left-mid-r3");
 
$(bllb3[k]).removeClass("bracket-line-left-bot-r3");
 
$(blrt3[k]).removeClass("bracket-line-right-top-r3");
 
$(blrb3[k]).removeClass("bracket-line-right-bot-r3");
 
if($(bllt3[k]).is('*[class*="old"]')){
 
}
 
else{
 
bllt3[k].className += " oldr3";
 
bllb3[k].className += " oldr3";
 
bllm3[m1].className += " oldr3";
 
bllm3[m2].className += " oldr3";
 
blrt3[k].className += " oldr3";
 
blrb3[k].className += " oldr3";
 
}
 
}
 
for (var k = 0; k < bllt4.length; k++){
 
var n = 5 - smallestL;
 
var m1 = 2 * k;
 
var m2 = 2 * k + 1;
 
var nSt = " bracket-line-left-top-r" + n.toString();
 
var nSm = " bracket-line-left-mid-r" + n.toString();
 
var nSb = " bracket-line-left-bot-r" + n.toString();
 
var nStr = " bracket-line-right-top-r" + n.toString();
 
var nSbr = " bracket-line-right-bot-r" + n.toString();
 
bllt4[k].className += nSt;
 
bllm4[m1].className += nSm;
 
bllm4[m2].className += nSm;
 
bllb4[k].className += nSb;
 
blrt4[k].className += nStr;
 
blrb4[k].className += nSbr;
 
$(bllt4[k]).removeClass("bracket-line-left-top-r4");
 
$(bllm4[m1]).removeClass("bracket-line-left-mid-r4");
 
$(bllm4[m2]).removeClass("bracket-line-left-mid-r4");
 
$(bllb4[k]).removeClass("bracket-line-left-bot-r4");
 
$(blrt4[k]).removeClass("bracket-line-right-top-r4");
 
$(blrb4[k]).removeClass("bracket-line-right-bot-r4");
 
if($(bllt4[k]).is('*[class*="old"]')){
 
}
 
else{
 
bllt4[k].className += " oldr4";
 
bllb4[k].className += " oldr4";
 
bllm4[m1].className += " oldr4";
 
bllm4[m2].className += " oldr4";
 
blrt4[k].className += " oldr4";
 
blrb4[k].className += " oldr4";
 
}
 
}
 
for (var k = 0; k < bllt5.length; k++){
 
var n = 6 - smallestL;
 
var m1 = 2 * k;
 
var m2 = 2 * k + 1;
 
var nSt = " bracket-line-left-top-r" + n.toString();
 
var nSm = " bracket-line-left-mid-r" + n.toString();
 
var nSb = " bracket-line-left-bot-r" + n.toString();
 
var nStr = " bracket-line-right-top-r" + n.toString();
 
var nSbr = " bracket-line-right-bot-r" + n.toString();
 
bllt5[k].className += nSt;
 
bllm5[m1].className += nSm;
 
bllm5[m2].className += nSm;
 
bllb5[k].className += nSb;
 
blrt5[k].className += nStr;
 
blrb5[k].className += nSbr;
 
$(bllt5[k]).removeClass("bracket-line-left-top-r5");
 
$(bllm5[m1]).removeClass("bracket-line-left-mid-r5");
 
$(bllm5[m2]).removeClass("bracket-line-left-mid-r5");
 
$(bllb5[k]).removeClass("bracket-line-left-bot-r5");
 
$(blrt5[k]).removeClass("bracket-line-right-top-r5");
 
$(blrb5[k]).removeClass("bracket-line-right-bot-r5");
 
if($(bllt5[k]).is('*[class*="old"]')){
 
}
 
else{
 
bllt5[k].className += " oldr5";
 
bllb5[k].className += " oldr5";
 
bllm5[m1].className += " oldr5";
 
bllm5[m2].className += " oldr5";
 
blrt5[k].className += " oldr5";
 
blrb5[k].className += " oldr5";
 
}
 
}
 
}
 
}
 
break;
 
case "":
 
default:
 
// Toggle
 
for (var j = 0; j < toggles.length; j++)
 
toggles[j].style.display = ((toggles[j].style.display == 'none') ? '' : 'none');
 
break;
 
}
 
}
 
}
 
 
function createTogglerLink(toggler, id)
 
{
 
var toggle = document.createElement("a");
 
toggle.className = 'toggler-link';
 
toggle.setAttribute('id', 'toggler' + id);
 
toggle.setAttribute('href', 'javascript:toggler("' + id + '");');
 
var child = toggler.firstChild;
 
toggler.removeChild(child);
 
toggle.appendChild(child);
 
toggler.insertBefore(toggle, toggler.firstChild);
 
}
 
 
function toggleInit()
 
{
 
var togglerElems = new Array();
 
var toggleGroup = new Array();
 
 
// initialize/clear any old information
 
togglers = new Array();
 
allClasses = new Object();
 
 
// make list of all document classes
 
var elems = document.getElementsByTagName("*");
 
var numelems = elems.length;
 
for (var i = 0; i < elems.length; i++)
 
{
 
var elem = elems[i];
 
if (!elem.className)
 
continue;
 
 
elem._toggle_original_display = elem.style.display;
 
var togglerID = -1;
 
var elemClasses = elem.className.split(' '); // get list of classes
 
for (var j = 0; j < elemClasses.length; j++)
 
{
 
var elemClass = elemClasses[j];
 
if (! allClasses[elemClass])
 
allClasses[elemClass] = new Array();
 
allClasses[elemClass].push(elem);
 
 
// all the special classes begin with _toggle
 
if (elemClass.substring(0, 7) != "_toggle")
 
continue;
 
 
if (elemClass == "_togglegroup")
 
toggleGroup = new Array();
 
else if (elemClass == "_toggle")
 
toggleGroup.push(elem);
 
else if (elemClass.substring(0, 12) == "_toggle_init")
 
{
 
// set initial value for display (ignore the original CSS set value)
 
// understands _toggle_initshow and _toggle_inithide
 
var disp = elemClass.substring(12);
 
if (disp == "show")
 
elem.style.display = '';
 
else if (disp == "hide")
 
elem.style.display = 'none';
 
elem._toggle_original_display = disp;
 
}
 
else if (elemClass.substring(0, 8) == "_toggler")
 
{
 
if (togglerID == -1)
 
{
 
togglerID = togglers.length;
 
togglers[togglerID] = new Array();
 
togglerElems[togglerID] = elem;
 
}
 
 
// all classes are of form _toggler_op-CLASS
 
// figure out what class we're toggling
 
// if none is specified, then we use the current toggle group
 
var toBeToggled;
 
var hyphen = elemClass.indexOf('-');
 
if (hyphen != -1)
 
toBeToggled = elemClass.substring(hyphen+1);
 
else
 
{
 
toBeToggled = toggleGroup;
 
hyphen = elemClass.length;
 
}
 
 
var op = elemClass.substring(8, hyphen);
 
togglers[togglerID].push(new Array(op, toBeToggled));
 
}
 
}
 
}
 
 
// add javascript links to all toggler elements
 
for (var i = 0; i < togglerElems.length; i++)
 
createTogglerLink(togglerElems[i], i);
 
}
 
 
 
function owwsitesearch(f){
 
f.q.value='site:http://openwetware.org/wiki/'+
 
f.base.value+'++'+f.qfront.value
 
}
 
 
 
$(toggleInit);
 
   
 
function includePage( name )
 
function includePage( name )
Line 862: Line 399:
 
}
 
}
 
/* End of includePage */
 
/* End of includePage */
 
/* ========================================================================
 
* Bootstrap: dropdown.js v3.1.1
 
* http://getbootstrap.com/javascript/#dropdowns
 
* ========================================================================
 
* Copyright 2011-2014 Twitter, Inc.
 
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
* ======================================================================== */
 
 
 
+function ($) {
 
'use strict';
 
 
// DROPDOWN CLASS DEFINITION
 
// =========================
 
 
var backdrop = '.dropdown-backdrop'
 
var toggle = '[data-toggle=dropdown]'
 
var Dropdown = function (element) {
 
$(element).on('click.bs.dropdown', this.toggle)
 
}
 
 
Dropdown.prototype.toggle = function (e) {
 
var $this = $(this)
 
 
if ($this.is('.disabled, :disabled')) return
 
 
var $parent = getParent($this)
 
var isActive = $parent.hasClass('open')
 
 
clearMenus()
 
 
if (!isActive) {
 
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
 
// if mobile we use a backdrop because click events don't delegate
 
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
 
}
 
 
var relatedTarget = { relatedTarget: this }
 
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
 
 
if (e.isDefaultPrevented()) return
 
 
$parent
 
.toggleClass('open')
 
.trigger('shown.bs.dropdown', relatedTarget)
 
 
$this.focus()
 
}
 
 
return false
 
}
 
 
Dropdown.prototype.keydown = function (e) {
 
if (!/(38|40|27)/.test(e.keyCode)) return
 
 
var $this = $(this)
 
 
e.preventDefault()
 
e.stopPropagation()
 
 
if ($this.is('.disabled, :disabled')) return
 
 
var $parent = getParent($this)
 
var isActive = $parent.hasClass('open')
 
 
if (!isActive || (isActive && e.keyCode == 27)) {
 
if (e.which == 27) $parent.find(toggle).focus()
 
return $this.click()
 
}
 
 
var desc = ' li:not(.divider):visible a'
 
var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)
 
 
if (!$items.length) return
 
 
var index = $items.index($items.filter(':focus'))
 
 
if (e.keyCode == 38 && index > 0) index-- // up
 
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
 
if (!~index) index = 0
 
 
$items.eq(index).focus()
 
}
 
 
function clearMenus(e) {
 
$(backdrop).remove()
 
$(toggle).each(function () {
 
var $parent = getParent($(this))
 
var relatedTarget = { relatedTarget: this }
 
if (!$parent.hasClass('open')) return
 
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
 
if (e.isDefaultPrevented()) return
 
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
 
})
 
}
 
 
function getParent($this) {
 
var selector = $this.attr('data-target')
 
 
if (!selector) {
 
selector = $this.attr('href')
 
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
 
}
 
 
var $parent = selector && $(selector)
 
 
return $parent && $parent.length ? $parent : $this.parent()
 
}
 
 
 
// DROPDOWN PLUGIN DEFINITION
 
// ==========================
 
 
var old = $.fn.dropdown
 
 
$.fn.dropdown = function (option) {
 
return this.each(function () {
 
var $this = $(this)
 
var data = $this.data('bs.dropdown')
 
 
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
 
if (typeof option == 'string') data[option].call($this)
 
})
 
}
 
 
$.fn.dropdown.Constructor = Dropdown
 
 
 
// DROPDOWN NO CONFLICT
 
// ====================
 
 
$.fn.dropdown.noConflict = function () {
 
$.fn.dropdown = old
 
return this
 
}
 
 
 
// APPLY TO STANDARD DROPDOWN ELEMENTS
 
// ===================================
 
 
$(document)
 
.on('click.bs.dropdown.data-api', clearMenus)
 
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
 
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
 
.on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)
 
 
}(jQuery);
 
 
jQuery(function($) {
 
$('.dropdown').hover(function() {
 
$(this).find('.dropdown-menu').first().stop(true, true).delay(100).slideDown();
 
 
}, function() {
 
if ($(this).find('.dropdown-menu').parents('.open').length) {
 
 
} else {
 
$(this).find('.dropdown-menu').first().stop(true, true).delay(100).slideUp();
 
}
 
});
 
 
$('.dropdown > a').click(function(){
 
location.href = this.href;
 
});
 
 
});
 
   
 
 
Line 1,075: Line 446:
 
});
 
});
 
$('.match-row').each( function() {
 
$('.match-row').each( function() {
if ($(this).find('.bracket-game-details').length > 0) {
+
if ($(this).find('.bracket-game-details').length > 0 && $(this).find('.legend-table').length == 0) {
 
$(this).find('td:eq(2)').prepend('<div style="position:relative"><div class="match-row-icon"></div></div>');
 
$(this).find('td:eq(2)').prepend('<div style="position:relative"><div class="match-row-icon"></div></div>');
 
}
 
}
Line 1,159: Line 530:
 
/* End Bracket Highlighting */
 
/* End Bracket Highlighting */
   
/* PentakillTV Embed Stuff */
 
$(function () {
 
$('.embedframe').find('a:not(.toggler-link)').each(function() {
 
 
$(this).attr("target","_blank");
 
 
});
 
 
});
 
   
 
/* Sideways text for blockbox needs the height of the parent div altered */
 
/* Sideways text for blockbox needs the height of the parent div altered */
Line 1,177: Line 539:
 
});
 
});
   
  +
/* User page warning */
 
  +
( function() {
 
  +
mw.loader.using( 'mediawiki.util' ).then( function() {
/* Including extra .js pages */
 
  +
if (mw.config.get("wgCanonicalNamespace") == "User") {
 
  +
$("#firstHeading").after('<div style="color:red;">This is a user page. It is not maintained actively by wiki staff and may contain inaccuracies.</div>');
 
$(function () {
 
var allowedKeys = {
 
37: 'left',
 
38: 'up',
 
39: 'right',
 
40: 'down',
 
65: 'a',
 
66: 'b'
 
};
 
 
var secret = ['up', 'up', 'down', 'down', 'left', 'right', 'left', 'right', 'b', 'a'];
 
 
// a variable to remember the 'position' the user has reached so far.
 
var secretCodePosition = 0;
 
 
// add keydown event listener
 
document.addEventListener('keydown', function(e) {
 
// get the value of the key code from the key map
 
var key = allowedKeys[e.keyCode];
 
var requiredKey = secret[secretCodePosition];
 
 
// compare the key with the required key
 
if (key == requiredKey) {
 
 
// move to the next key in the konami code sequence
 
secretCodePosition++;
 
 
// if the last key is reached, activate cheats
 
if (secretCodePosition == secret.length)
 
activateCheats();
 
} else
 
secretCodePosition = 0;
 
});
 
 
function activateCheats() {
 
document.body.style.backgroundImage = "url('/w/images/Zileanbg.png')";
 
var audio = new Audio('/w/images/Chronokeeper.joke.ogx');
 
audio.play();
 
 
}
 
});
 
 
 
/**
 
* Collapsible tables
 
*
 
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
 
*
 
* @version 2.0.3 (2014-03-14)
 
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
 
* @author [[User:R. Koot]]
 
* @author [[User:Krinkle]]
 
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
 
* is supported in MediaWiki core.
 
*/
 
 
var autoCollapse = 2;
 
var collapseCaption = 'hide';
 
var expandCaption = 'show';
 
var tableIndex = 0;
 
 
function collapseTable( tableIndex ) {
 
var Button = document.getElementById( 'collapseButton' + tableIndex );
 
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
 
if ( !Table || !Button ) {
 
return false;
 
}
 
 
var Rows = Table.rows;
 
var i;
 
var $row0 = $(Rows[0]);
 
 
if ( Button.firstChild.data === collapseCaption ) {
 
for ( i = 1; i < Rows.length; i++ ) {
 
Rows[i].style.display = 'none';
 
}
 
Button.firstChild.data = expandCaption;
 
} else {
 
for ( i = 1; i < Rows.length; i++ ) {
 
Rows[i].style.display = $row0.css( 'display' );
 
}
 
Button.firstChild.data = collapseCaption;
 
}
 
}
 
 
function createClickHandler( tableIndex ) {
 
return function ( e ) {
 
e.preventDefault();
 
collapseTable( tableIndex );
 
};
 
}
 
 
function createCollapseButtons( $content ) {
 
var NavigationBoxes = {};
 
var $Tables = $content.find( 'table' );
 
var i;
 
 
$Tables.each( function( i, table ) {
 
if ( $(table).hasClass( 'collapsible' ) ) {
 
 
/* only add button and increment count if there is a header row to work with */
 
var HeaderRow = table.getElementsByTagName( 'tr' )[0];
 
if ( !HeaderRow ) {
 
return;
 
}
 
var Header = table.getElementsByTagName( 'th' )[0];
 
if ( !Header ) {
 
return;
 
}
 
 
NavigationBoxes[ tableIndex ] = table;
 
table.setAttribute( 'id', 'collapsibleTable' + tableIndex );
 
 
var Button = document.createElement( 'span' );
 
var ButtonLink = document.createElement( 'a' );
 
var ButtonText = document.createTextNode( collapseCaption );
 
// Styles are declared in [[MediaWiki:Common.css]]
 
Button.className = 'collapseButton';
 
 
ButtonLink.style.color = Header.style.color;
 
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
 
ButtonLink.setAttribute( 'href', '#' );
 
$( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
 
ButtonLink.appendChild( ButtonText );
 
 
Button.appendChild( document.createTextNode( '[' ) );
 
Button.appendChild( ButtonLink );
 
Button.appendChild( document.createTextNode( ']' ) );
 
 
Header.insertBefore( Button, Header.firstChild );
 
tableIndex++;
 
}
 
} );
 
 
for ( i = 0; i < tableIndex; i++ ) {
 
if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
 
( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
 
) {
 
collapseTable( i );
 
}
 
else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
 
var element = NavigationBoxes[i];
 
while ((element = element.parentNode)) {
 
if ( $( element ).hasClass( 'outercollapse' ) ) {
 
collapseTable ( i );
 
break;
 
}
 
}
 
}
 
}
 
}
 
 
mw.hook( 'wikipage.content' ).add( createCollapseButtons );
 
 
/**
 
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
 
*
 
* Maintainers: TheDJ
 
*/
 
function mwCollapsibleSetup( $collapsibleContent ) {
 
var $element,
 
$toggle,
 
autoCollapseThreshold = 2;
 
$.each( $collapsibleContent, function (index, element) {
 
$element = $( element );
 
if ( $collapsibleContent.length > autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
 
$element.data( 'mw-collapsible' ).collapse();
 
} else if ( $element.hasClass( 'innercollapse' ) ) {
 
if ( $element.parents( '.outercollapse' ).length > 0 ) {
 
$element.data( 'mw-collapsible' ).collapse();
 
}
 
 
}
 
}
  +
});
$toggle = $element.find( '.mw-collapsible-toggle' );
 
  +
}()
if ( $toggle.length ) {
 
// Make the toggle inherit text color
 
if( $toggle.parent()[0].style.color ) {
 
$toggle.find( 'a' ).css( 'color', 'inherit' );
 
}
 
}
 
} );
 
}
 
   
  +
);
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
 
   
  +
/* Remove edit & ve button if there's edit with form */
/**
 
  +
var formEdit = document.getElementById("ca-formedit");
* Dynamic Navigation Bars (experimental)
 
  +
var usergroups = mw.config.get('wgUserGroups');
*
 
  +
if (formEdit && !(usergroups.includes("editor"))) {
* Description: See [[Wikipedia:NavFrame]].
 
  +
var ve = document.getElementById("ca-ve-edit");
* Maintainers: UNMAINTAINED
 
  +
var edit = document.getElementById("ca-edit");
*/
 
  +
if (ve) {
 
  +
ve.style.display = "none";
/* set up the words in your language */
 
  +
}
var NavigationBarHide = '[' + collapseCaption + ']';
 
  +
if (edit) {
var NavigationBarShow = '[' + expandCaption + ']';
 
  +
edit.style.display = "none";
var indexNavigationBar = 0;
 
  +
}
 
/**
 
* Shows and hides content and picture (if available) of navigation bars
 
* Parameters:
 
* indexNavigationBar: the index of navigation bar to be toggled
 
**/
 
window.toggleNavigationBar = function ( indexNavigationBar, event ) {
 
var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
 
var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
 
var NavChild;
 
 
if ( !NavFrame || !NavToggle ) {
 
return false;
 
}
 
 
/* if shown now */
 
if ( NavToggle.firstChild.data === NavigationBarHide ) {
 
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 
if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
 
NavChild.style.display = 'none';
 
}
 
}
 
NavToggle.firstChild.data = NavigationBarShow;
 
 
/* if hidden now */
 
} else if ( NavToggle.firstChild.data === NavigationBarShow ) {
 
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 
if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
 
NavChild.style.display = 'block';
 
}
 
}
 
NavToggle.firstChild.data = NavigationBarHide;
 
}
 
 
event.preventDefault();
 
};
 
 
/* adds show/hide-button to navigation bars */
 
function createNavigationBarToggleButton( $content ) {
 
var NavChild;
 
/* iterate over all < div >-elements */
 
var $divs = $content.find( 'div' );
 
$divs.each( function ( i, NavFrame ) {
 
/* if found a navigation bar */
 
if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
 
 
indexNavigationBar++;
 
var NavToggle = document.createElement( 'a' );
 
NavToggle.className = 'NavToggle';
 
NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
 
NavToggle.setAttribute( 'href', '#' );
 
$( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
 
 
var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
 
/**
 
* Check if any children are already hidden. This loop is here for backwards compatibility:
 
* the old way of making NavFrames start out collapsed was to manually add style="display:none"
 
* to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
 
* the content visible without JavaScript support), the new recommended way is to add the class
 
* "collapsed" to the NavFrame itself, just like with collapsible tables.
 
*/
 
for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
 
if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
 
if ( NavChild.style.display === 'none' ) {
 
isCollapsed = true;
 
}
 
}
 
}
 
if ( isCollapsed ) {
 
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 
if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
 
NavChild.style.display = 'none';
 
}
 
}
 
}
 
var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
 
NavToggle.appendChild( NavToggleText );
 
 
/* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
 
for( var j = 0; j < NavFrame.childNodes.length; j++ ) {
 
if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
 
NavToggle.style.color = NavFrame.childNodes[j].style.color;
 
NavFrame.childNodes[j].appendChild( NavToggle );
 
}
 
}
 
NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
 
}
 
} );
 
 
}
 
}
 
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
 
   
 
/* functions for gadgets */
 
/* functions for gadgets */
Line 1,481: Line 575:
 
/* end functions for gadgets */
 
/* end functions for gadgets */
   
  +
$(function() {
 
  +
/* expiration of matches starting in schedule navboxes (and anything else) */
var title = mw.config.get('wgTitle');
 
  +
$('[data-to-target-title="' + title + '"]').each(function () {
 
  +
$.when(mw.loader.using('mediawiki.util'), $.ready).then( function () {
$(this).removeClass('to_hasTooltip');
 
  +
var $expirationList = $('.upcoming-matches');
$(this).attr('data-to-id','');
 
  +
if (!$expirationList.length) {
  +
return;
 
}
 
}
  +
$expirationList.each( function() {
);
 
  +
var nowTime = Date.now();
});
 
  +
var expTime = parseInt($(this).attr('data-expiration')) * 1000;
  +
if (nowTime >= expTime) {
  +
$(this).css('display', 'none');
  +
}
  +
})
  +
} );
  +
  +
/* end expiration of matches starting in schedule navboxes (and anything else) */

Revision as of 20:15, 3 March 2019

/* Any JavaScript here will be loaded for all users on every page load. */

/* Changes the width of margin on right/left on the frontpage when the window is smaller than 1500px */
$(function () {
    var windowWidth = window.innerWidth;
    if (windowWidth < 1500){
        var point = document.getElementsByClassName("FrontpageOuterDiv");
        var i;
        for (i = 0; i < point.length; i++){
           point[i].style.maxWidth="100%";
           }
    }
});

$(document).ready(function () {
	if ($("#noTitle").length > 0){
		$("#firstHeading").detach()
	}
});

/* Adding the Wiki Logo Text next to the actual Logo */
function wikiLogoText () {
	if ($("#mw-head").length > 0){
		var logoText = document.createElement("a");
		logoText.href = "/Halo_Esports_Wiki"
		logoText.title = "Visit the main page - Halo Esports Wiki"
		logoText.className = "mw-wiki-logo-text"
		document.getElementById("mw-head").appendChild(logoText);	
	}	
}

$(document).ready( wikiLogoText() );

/* Convert the scheduled next game time into local timezone */
$(function () {
    var point = document.getElementsByClassName("getLocalTimeZoneOfThis");
    var i;
    for (i = 0; i < point.length; i++){
       var date = new Date(point[i].innerHTML);
    var month = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    var timeMonth = month[date.getMonth()];
    var weekday = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
    var timeWeekday = weekday[date.getDay()];
    var minutes = date.getMinutes();
    var timeMinutes = "00";
    if (minutes < 10) timeMinutes = "0" + minutes.toString();
    else timeMinutes = minutes.toString();
    var hours = date.getHours();
    var timeHours = "00";
    if (hours < 10) timeHours = "0" + hours.toString();
    else timeHours = hours.toString();
    point[i].textContent = timeWeekday+" "+timeMonth+" "+date.getDate()+" "+timeHours+":"+timeMinutes;
    }
});

$(function () {
    var point = document.getElementsByClassName("TimeInLocal");
    var i;
    for (i = 0; i < point.length; i++){
      var original = point[i].innerHTML;
      var splitStr = original.split(',');
      var date = new Date(Date.UTC(splitStr[0],splitStr[1]-1,splitStr[2],splitStr[3],splitStr[4],0,0));
    var minutes = date.getMinutes();
    var timeMinutes = "00";
    if (minutes < 10) timeMinutes = "0" + minutes.toString();
    else timeMinutes = minutes.toString();
    var hours = date.getHours();
    var timeHours = "00";
    if (hours < 10) timeHours = "0" + hours.toString();
    else timeHours = hours.toString();
    point[i].textContent =timeHours+":"+timeMinutes;
    }
});

$(function() {
    var point = document.getElementsByClassName("DateInLocal");
    var i;
    for (i = 0; i < point.length; i++) {
      var original = point[i].innerHTML;
      var splitStr = original.split(',');
      var date = new Date(Date.UTC(splitStr[0],splitStr[1]-1,splitStr[2],splitStr[3],splitStr[4],0,0));
      var year = date.getFullYear();
      var month = date.getMonth();
      month = month + 1;
      var timeMonth = "00";
      if (month < 10) timeMonth = "0" + month.toString();
      else timeMonth = month.toString();
      var weekday = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
      var timeWeekday = weekday[date.getDay()];
      var day = date.getDate();
      var timeDay = "00";
      if (day < 10) timeDay = "0" + day.toString();
      else timeDay = day.toString();
      point[i].textContent = timeWeekday + " " + year + "-" + timeMonth + "-" + timeDay;
    }
  }
);

$(function() {
    var point = document.getElementsByClassName("DateInLocalSB");
    var i;
    for (i = 0; i < point.length; i++) {
      var original = point[i].innerHTML;
      var splitStr = original.split(',');
      var date = new Date(Date.UTC(splitStr[0],splitStr[1]-1,splitStr[2],splitStr[3],splitStr[4],0,0));
      var year = date.getFullYear();
      var month = date.getMonth();
      month = month + 1;
      var timeMonth = "00";
      if (month < 10) timeMonth = "0" + month.toString();
      else timeMonth = month.toString();
      var day = date.getDate();
      var timeDay = "00";
      if (day < 10) timeDay = "0" + day.toString();
      else timeDay = day.toString();
      point[i].textContent = year + "-" + timeMonth + "-" + timeDay;
    }
  }
);

function tocafter() {
	if( document.getElementById("infoboxPlayer") ){
		if( document.getElementById("twitchStream") ){
			if($(window).width() < 1400) {
				$("#tocdiv").insertAfter("#sbsAndStream");
				var streamWidth = $("#bodyContent").width() - ($("#infoboxPlayer").width() + (16*2) + 10)
				var streamHeight = (streamWidth * 9)/16
				var stream = document.getElementById("twitchStream")
				stream.setAttribute("width", streamWidth)
				stream.setAttribute("height", streamHeight)
			}
			else {
				$("#tocdiv").insertBefore("#sbsAndStream");
				
				var streamWidth = $("#bodyContent").width() - ($("#infoboxPlayer").width() + (16*2) + $("#tocdiv").width() + 30 + (($(window).width() * 0.25) - 350))
				if (streamWidth > 1280){
					streamWidth = 1280
				}
				var streamHeight = (streamWidth * 9)/16
				var stream = document.getElementById("twitchStream")
				stream.setAttribute("width", streamWidth)
				stream.setAttribute("height", streamHeight)		
			}
		}
	}
}

$(document).ready( tocafter() );
window.addEventListener("resize", tocafter, false);


// __NOWYSIWYG__
/**
 * Countdown
 *
 * @version 2.1
 *
 * @author Pecoes <https://c.wikia.com/wiki/User:Pecoes>
 * @author Asaba <https://dev.wikia.com/wiki/User:Asaba>
 *
 * Version 1 authors:
 * - Splarka <https://c.wikia.com/wiki/User:Splarka>
 * - Eladkse <https://c.wikia.com/wiki/User:Eladkse>
 *
 * documentation and examples at:
 * <https://dev.wikia.com/wiki/Countdown>
 */
 
/*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*/
 
;(function (module, mw, $, undefined) {
 
	'use strict';
 
	var translations = $.extend(true, {
		// English (English)
		en: {
			and: 'and',
			second: 'second',
			seconds: 'seconds',
			minute: 'minute',
			minutes: 'minutes',
			hour: 'hour',
			hours: 'hours',
			day: 'day',
			days: 'days'
		},
	}, module.translations || {}),
	i18n = translations[
		mw.config.get('wgContentLanguage')
	] || translations.en;
 
	var countdowns = [];
 
	var NO_LEADING_ZEROS = 1,
	SHORT_FORMAT = 1,
	NO_ZEROS = 4;
 
	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) 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) 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) 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) result = result.charAt(1);
		parts.unshift(diff  + result);
		result = parts.pop();
		if (countdowns[i].opts & NO_LEADING_ZEROS) {
			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 (parts.length) {
			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 now = Date.now();
		var countdownsToRemove = [];
		$.each(countdowns.slice(0), function (i, countdown) {
			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;
			}
		}
		return opts;
	}
 
	function toggleInit() {
		var countdown = $('.countdown:not(.handled)');
		if (!countdown.length) return;
		$('.nocountdown').css('display', 'none');
		countdown
		.css('display', 'inline')
		.find('.countdowndate')
		.each(function () {
			var $this = $(this),
				date = (new Date($this.text())).valueOf();
			if (isNaN(date)) {
				$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(toggleInit);
 
}(window.countdownTimer = window.countdownTimer || {}, mediaWiki, jQuery));

var toggleMapListSetup = function() {
	var btn = $('a[id^="collapseButton"]');

	btn.each(function() {
		var table = $(this).closest('table');
		var m = $('.maprow', table);

		if (m.length) {
			m.hide(); // Collapse maps by default

			var span = $('<span>', {
				class: 'mapsCollapseButton',
				css: {
					'font-weight': 'normal',
					'float': 'right',
					'margin-right': '7px',
					'cursor': 'pointer'
				}
			});

			table.data('maps-collapsed', true);

			var toggleMaps = function() {
				table.find('.maprow').toggle();
				table.data('maps-collapsed', !table.data('maps-collapsed'));

				$(this).text(function(i, txt) {
					return txt.replace(/\+|−/, function(a) {
						return a === '+' ? '−' : '+';
					});
				});
			}

			var a = $('<a>+maps</a>').click(toggleMaps);

			span.append('[', a, ']');
			$(this).parent().after(span);

			if (table.hasClass('uncollapsed-maps')) {
				a.trigger('click');
			}
		}
	});
};

function includePage( name )
{
 document.write('<script type="text/javascript" src="' + wgScript + '?title='
  + name 
  + '&action=raw&ctype=text/javascript"><\/script>' 
 );
}
/* End of includePage */

 
/* Dynamic Tabs - Adapted from Liquipedia - http://wiki.teamliquid.net/dota2/MediaWiki:Common.js */
/* Tabs by FO-nTTaX */
$(document).ready (function() {
	$('div.tabs-dynamic ul.tabs li').click(
		function () {
			var i = $(this).index() + 1;
			$(this).parent().children('li').removeClass('active');
			$(this).addClass('active');
			$(this).parent().parent().children('div.tabs-content').children('div').removeClass('active');
			$(this).parent().parent().children('div.tabs-content').children('div.content' + i).addClass('active');
		}
	);
	$('div.tabs-dynamic').each(function(index) {
		var h = $(this).children('ul.tabs').children('li.active').index() + 1;
		$(this).children('div.tabs-content').children('div.content' + h).addClass('active');
	});
	var hash = location.hash.slice(1);
	if (hash.substring(0, 4) == 'tab-') {
		var hasharr = hash.split('-scrollto-');
		var tabno = hasharr[0].replace('tab-', '');
    		$('div.tabs-dynamic ul.tabs li').removeClass('active');
		$('div.tabs-dynamic ul.tabs li.tab' + tabno).addClass('active');
		$('div.tabs-dynamic div.tabs-content div').removeClass('active');
		$('div.tabs-dynamic div.tabs-content div.content' + tabno).addClass('active');
		if (hasharr.length == 2) {
			var scrollto = '#' + hasharr[1];
			setTimeout(function(){$(window).scrollTop($(scrollto).offset().top)}, 500);
		}
	}
});
/* Dynamic Tabs - END */
/* Bracket Highlighting - Adapted from Liquipedia - http://wiki.teamliquid.net/dota2/MediaWiki:Common.js */
var highlighted;
$.fn.justtext = function() {
	return $(this).clone().children().remove('div').end().text().trim();
};
var bracketGame;
$(document).ready(function() {
	$('.bracket-game').each( function() {
		if ($(this).find('.bracket-game-details').length > 0) {
			var margin = $(this).find(':first-child').height() - 6;
			$(this).prepend('<div class="icon" style="margin-top:' + margin + 'px;"></div>');
		}
	});
	$('.match-row').each( function() {
		if ($(this).find('.bracket-game-details').length > 0 && $(this).find('.legend-table').length == 0) {
			$(this).find('td:eq(2)').prepend('<div style="position:relative"><div class="match-row-icon"></div></div>');
		}
	});
	$('.match-row').hover(function () {
		$(this).addClass('bracket-hover');
		if ($(this).closest('.match-row').find('.bracket-game-details').length) {
			$(this).css('cursor', 'pointer');
		}
	},
	function () {
		$(this).removeClass('bracket-hover');
	});
	$('.bracket-team-top, .bracket-team-top-oldschool, .bracket-team-bottom, .bracket-team-bottom-oldschool, .bracket-game .icon').hover(function () {
		var t = $(this),
		    text = t.justtext();
		if ((text) && (text.toUpperCase() != 'BYE')) {
			highlighted = $('.bracket').find('.bracket-team-top, .bracket-team-bottom, .bracket-team-top-oldschool, .bracket-team-bottom-oldschool').filter(function () {
				return $(this).justtext() == text;
			});
			highlighted.css('background', '#cecece');
		}
		if (t.closest('.bracket-game').children('.bracket-game-details').length) {
			t.css('cursor', 'pointer');
		}
	},
	function() {
		if (highlighted != null)
			highlighted.css('background', '');
	});

	$('html').click(function () {
		if (bracketGame != null) {
			bracketGame.find('.bracket-game-details').toggle();
			bracketGame = null;
		}
	});

	$('.bracket-team-top, .bracket-team-bottom, .bracket-team-top-oldschool, .bracket-team-bottom-oldschool, .bracket-game .icon').click(
	function (event) {
		var bracket = $(this).closest('.bracket'),
			detailsHeight, detailsWidth, spaceOnTheRight;
		if (bracketGame != null) {
			bracketGame.children('.bracket-game-details').toggle();
			if (bracketGame[0] === $(this).closest('.bracket-game')[0]) {
				bracketGame = null;
				return;
			}
		}
		bracketGame = $(this).closest('.bracket-game');
		detailsHeight= bracketGame.children('.bracket-game-details').height();
 		detailsWidth = bracketGame.children('.bracket-game-details').width();
		
		bracketGame.children('.bracket-game-details').css('margin-top', -detailsHeight / 2);
		spaceOnTheRight = Math.max($(window).width(), bracket.offset().left + bracket.outerWidth()) - (bracketGame.offset().left + bracketGame.outerWidth());
		if (spaceOnTheRight < detailsWidth && bracketGame.offset().left > detailsWidth) {
			bracketGame.children('.bracket-game-details').css('margin-left', -detailsWidth - 1);
		} else {
			bracketGame.children('.bracket-game-details').css('margin-left', bracketGame.width());
		}
		bracketGame.children('.bracket-game-details').toggle();
		event.stopPropagation();
	});
	$('.match-row').click(function (event) {
		if (bracketGame != null) {
			bracketGame.find('.bracket-game-details').toggle();
			if (bracketGame[0] === $(this)[0]) {
				bracketGame = null;
				return;
			}
		}
		bracketGame = $(this);
		var height = bracketGame.find('.bracket-game-details').height();
		bracketGame.find('.bracket-game-details').css('margin-top', 3);
		bracketGame.find('.bracket-game-details').toggle();
		event.stopPropagation();
	});

	$('.bracket-game-details').click(function (event) {
		event.stopPropagation();
	});
});
/* End Bracket Highlighting */


/* Sideways text for blockbox needs the height of the parent div altered */
$(document).ready(function() { 
   $('.vert-text').each(function(){
      var parentHeight = $(this).parent().height();
      $(this).height(parentHeight);    
   });
});

 /* User page warning */
( function() {
	mw.loader.using( 'mediawiki.util' ).then( function() {
		if (mw.config.get("wgCanonicalNamespace") == "User") {
			$("#firstHeading").after('<div style="color:red;">This is a user page. It is not maintained actively by wiki staff and may contain inaccuracies.</div>');
		}
	});
}() 

);

/* Remove edit & ve button if there's edit with form */
var formEdit = document.getElementById("ca-formedit");
var usergroups = mw.config.get('wgUserGroups');
if (formEdit && !(usergroups.includes("editor"))) {
	var ve = document.getElementById("ca-ve-edit");
	var edit = document.getElementById("ca-edit");
	if (ve) {
		ve.style.display = "none";
	}
	if (edit) {
		edit.style.display = "none";
	}
}

/* functions for gadgets */
window.displayColor = function(colorclass) {
    $("#p-cactions").addClass(colorclass);
    return;
}

window.clearDisplayColor = function() {
	$("#p-cactions").removeClass("gadget-action-fail gadget-action-incomplete gadget-action-success");
}
/* end functions for gadgets */


/* expiration of matches starting in schedule navboxes (and anything else) */

$.when(mw.loader.using('mediawiki.util'), $.ready).then( function () {
	var $expirationList = $('.upcoming-matches');
	if (!$expirationList.length) {
		return;
	}
	$expirationList.each( function() {
		var nowTime = Date.now();
		var expTime = parseInt($(this).attr('data-expiration')) * 1000;
		if (nowTime >= expTime) {
			$(this).css('display', 'none');
		}
	})
} );

/* end expiration of matches starting in schedule navboxes (and anything else) */