MediaWiki:Common.js

From Heroes 3 wiki
Revision as of 15:03, 22 March 2025 by Phasma (talk | contribs) (H3CSS Update (image thumbnails have transparent backgrounds))
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */

(function () {

var heroesStyleSheet = new CSSStyleSheet();
heroesStyleSheet.replaceSync('#content,.maps,.wikitable,div.toc,table{border-image-repeat:repeat repeat}.maps,.tabs-plain .tabs-label{background-image:url(https://heroes.thelazy.net/images/2/25/Leather-blue-light.png)}.maps,.tabs-plain .tabs-content,.tabs-plain .tabs-label,.wikitable,div.toc,table{border-image-source:url(https://heroes.thelazy.net/images/9/9b/Border-small.png);border-image-slice:4 4 4 4;border-image-width:4px 4px 4px 4px;border-image-outset:4px 4px 4px 4px}.tabs-plain .tabs-label,.vector-menu-content,div.toc,span.mw-page-title-main{font-weight:700}#content,#footer-info-lastmod,.mw-headline,.mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-savedQueryTitle,.mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-title,.mw-redirectedfrom,.oo-ui-buttonElement-frameless.oo-ui-widget-enabled>.oo-ui-buttonElement-button,.suggestions-special .special-query,.vector-menu-heading-label,div.editOptions,h1,h2,h3,h4,pre,span.tocnumber,tbody tr th,th a span{color:#fff;text-shadow:1px 1px 1px #000}.diff-addedline .diffchange,.diff-deletedline .diffchange,.mw-editfont-monospace,.mw-rcfilters-ui-row,.oo-ui-buttonElement-framed.oo-ui-widget-enabled>.oo-ui-buttonElement-button,.wikiEditor-ui .wikiEditor-ui-view,.wikiEditor-ui-toolbar,.wikiEditor-ui-toolbar .page-characters div span,.wikiEditor-ui-toolbar .tabs span.tab a,code{color:#000;text-shadow:0 0 0}a.mw-collapsible-text,a:link,a:visited,div.mw-collapsible.mw-customtoggle-user_commentary.mw-customtoggle-,label.toctogglelabel,span.mw-customtoggle-BuildingTree,span.mw-customtoggle-HCStable{color:#f7de7b!important;text-shadow:1px 1px 1px #000}.diff-context,.vector-menu-tabs-legacy .new a,a.new,span.mw-broken-media{color:#ff3030!important}.mw-highlight .linenos{color:#000!important;text-shadow:0 0 0 #000!important}#mw-head,#mw-head-base,#mw-page-base,.maps tbody,.maps tr,li.mw-list-item,pre,table#mw-customcollapsible-ab tbody,table#mw-customcollapsible-dor tbody,table#mw-customcollapsible-hc tbody,table#mw-customcollapsible-hota tbody,table#mw-customcollapsible-roe tbody,table#mw-customcollapsible-sod tbody,table.mw-enhanced-rc tbody,tbody tr,tbody tr td,tbody tr th{background:0 0!important}body{background:url(https://heroes.thelazy.net/images/9/9f/Shroud.png) fixed}#mw-content-text,.maps,.tabs-plain .tabs-label,.wikitable,table,tbody{background-color:transparent!important}div.mw-body-content.mw-content-ltr{color:#fff;text-shadow:1px 1px 1px #000;background:url(https://heroes.thelazy.net/images/b/b4/Leather-extra-dark.png)}#mw-content-text{padding:8px;background-image:url(https://heroes.thelazy.net/images/b/b4/Leather-extra-dark.png)}#mw-content-text,div.mw-body-content.mw-content-ltr{border-image-source:url(https://heroes.thelazy.net/images/c/c7/Border-gold.png);border-image-slice:8 9 8 9;border-image-width:9px 9px 9px 9px;border-image-outset:9px 9px 9px 9px;border-image-repeat:repeat repeat}#content{border-image-source:url(https://heroes.thelazy.net/images/4/43/Border-blue.png);border-image-slice:48 48 48 48;border-image-width:48px 48px 48px 48px;border-image-outset:0 0 0 0;background:url(https://heroes.thelazy.net/images/3/3d/Leather.png);margin-top:14px;padding:32px 44px}div.toc{background-image:url(https://heroes.thelazy.net/images/0/0f/Marble-dark.png);color:#fff;margin:4px 0 8px 8px;padding-left:16px;padding-right:16px;display:inline-block}.wikitable,table{margin:4px 4px 8px;color:#fff!important}tbody{background-image:url(https://heroes.thelazy.net/images/2/2a/Leather-dark.png)}table.mw-enhanced-rc{border:0;border-image-outset:0;border-image-repeat:stretch;border-image-slice:100%;border-image-source:none;border-image-width:1;border-spacing:0;background:0 0!important;margin:0 8px!important}.tabs-plain .tabs-content,.tabs-plain .tabs-label,div.catlinks{border-image-repeat:repeat repeat}div.catlinks,input.vector-search-box-input{border-image-source:url(https://heroes.thelazy.net/images/c/c7/Border-gold.png);border-image-slice:8 9 8 9;border-image-width:8px 9px 8px 9px;border-image-outset:9px 9px 9px 9px}div.catlinks,div.mw-normal-catlinks{background-image:url(https://heroes.thelazy.net/images/0/0f/Marble-dark.png)}div.catlinks{margin-top:20px}.tabs-plain .tabs-content{margin-bottom:8px}.tabs-plain .tabs-label{font-size:1.302em;font-family:Serif;line-height:1.4;margin-left:4px;margin-right:4px;margin-bottom:8px;padding:0 8px;border-radius:0}.tabs-tabbox .tabs-input:checked+.tabs-label{background-image:url(https://heroes.thelazy.net/images/6/61/Leather-blue-dark.png)}div.wikiEditor-ui-bottom{background-color:#fff}div.wikiEditor-ui-text textarea{color:#000!important}.wikiEditor-ui-toolbar .booklet>.index>.current{background-color:rgba(0,0,0,.5);color:#000;text-shadow:0 0 0}.wikiEditor-ui-toolbar .booklet>.index>:hover{background-color:rgba(0,0,0,.25)}.mw-message-box-warning{background:0 0!important;color:#fff}#p-views,.editOptions,.vector-menu-tabs-legacy,.vector-menu-tabs-legacy li a{background:0 0;height:initial}.mw-rcfilters-ui-changesListWrapperWidget .mw-changeslist-legend,.mw-rcfilters-ui-filterTagMultiselectWidget,.vector-menu-dropdown .vector-menu-content,div.suggestions-results,div.suggestions-special,input.vector-search-box-input{background-image:url(https://heroes.thelazy.net/images/0/0f/Marble-dark.png)}input.vector-search-box-input{border-image-repeat:repeat repeat;color:#fff;font-weight:700;text-shadow:1px 1px 1px #000}.mw-rcfilters-ui-changesListWrapperWidget .mw-changeslist-legend,.mw-rcfilters-ui-filterTagMultiselectWidget,.vector-menu-dropdown .vector-menu-content,div.suggestions,span.mw-tmh-player video{border-image-source:url(https://heroes.thelazy.net/images/9/9b/Border-small.png);border-image-slice:4 4 4 4;border-image-width:4px 4px 4px 4px;border-image-outset:4px 4px 4px 4px;border-image-repeat:repeat repeat}.mw-rcfilters-ui-filterTagMultiselectWidget.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle{background-color:transparent!important;border:0}div.suggestions-results,div.suggestions-special{background-color:transparent!important}div.special-query,div.suggestions-result,div.suggestions-special{background-attachment:fixed;color:#fff;text-shadow:0 0 0}span.mw-tmh-player video{margin-top:8px;margin-bottom:8px;margin-right:8px}#content ul{list-style-type:disc;list-style-image:url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%225%22%20height%3D%2213%22%3E%0A%3Ccircle%20cx%3D%222.5%22%20cy%3D%229.5%22%20r%3D%222.5%22%20fill%3D%22%23FFFFFF%22%2F%3E%0A%3C%2Fsvg%3E%0A)}.mw-parser-output a.external{background-image:url(https://upload.wikimedia.org/wikipedia/commons/9/99/OOjs_UI_icon_external-link-ltr-invert.svg);background-position:center right;background-repeat:no-repeat;background-size:.8em;padding-right:1em}figure[typeof~="mw:File/Frame"],figure[typeof~="mw:File/Frame"]>figcaption,figure[typeof~="mw:File/Frame"]>span:first-child>:first-child:not(.mw-broken-media),figure[typeof~="mw:File/Thumb"],figure[typeof~="mw:File/Thumb"]>figcaption{background:0 0!important;border:0}');

function getCookie(cname) {
  var name = cname + '=';
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return '';
}

function showElements(desc, linkSelector) {
  var elems = document.querySelectorAll(desc);
  for (var i = 0; i < elems.length; i++) {
    elems[i].style.display = 'revert';
  }
  elems = document.querySelectorAll('.' + linkSelector + desc);
  for (i = 0; i < elems.length; i++) {
    elems[i].style = 'white-space: nowrap; user-select:none; cursor: pointer; color: rgb(102, 177, 250);';
  }
}

function hideElements(desc) {
  var elems = document.querySelectorAll(desc);
  for (var i = 0; i < elems.length; i++) {
    elems[i].style.display = 'none';
  }
  elems = document.querySelectorAll('.initialOnly');
  for (i = 0; i < elems.length; i++) {
    elems[i].style.display = 'none';
  }
}

function togglePreference(linkSelector, cookieName, cookie1, cookie2, link1, link2) {
  var preference = getCookie(cookieName);
  var switchView = document.querySelector('#' + linkSelector);
  var switchView2 = document.querySelector('#' + linkSelector + '2');
  if (preference == cookie2) {
    preference = cookie1;
    switchView.textContent = link2;
    switchView2.textContent = link2;
    hideElements('.only' + cookie2);
    showElements('.only' + cookie1, linkSelector);
  } else {
    preference = cookie2;
    switchView.textContent = link1;
    switchView2.textContent = link1;
    hideElements('.only' + cookie1);
    showElements('.only' + cookie2, linkSelector);
  }
  var CookieDate = new Date();
  CookieDate.setFullYear(CookieDate.getFullYear() + 1);
  document.cookie = cookieName + '=' + preference + '; expires=' + CookieDate.toUTCString() + ';';
}

function togglePreferredExpansion() {
  togglePreference('switchExpansion', 'preferredExpansion', 'hota', 'sod', 'Enable HotA', 'Disable HotA', 'Horn of the Abyss');
}

function togglePreferredView() {
  togglePreference('switchView', 'preferredView', 'modern', 'legacy', 'Enable Modern', 'Enable Legacy', 'Legacy/Modern');
}

function toggleDoR() {
  togglePreference('switchDoR', 'preferredDoR', 'dor', 'nodor', 'Enable DoR', 'Disable DoR', 'Day of Reckoning');
}

function setHeroesStyle() {
  var preference = getCookie('heroesStyle');
  if (preference == 'heroesStyleEnabled') {
    document.adoptedStyleSheets.push(heroesStyleSheet);
  } else {
    while (document.adoptedStyleSheets.pop());
  }
}

function toggleHeroesStyle() {
  togglePreference('switchHeroesStyle', 'heroesStyle', 'heroesStyleDisabled', 'heroesStyleEnabled', 'Disable H3CSS', 'Enable H3CSS', 'Heroes Style');
  setHeroesStyle();
}

function initPreference(linkSelector, cookieName, cookie1, cookie2, link1, link2, prefName, toggleFunc) {
  var userlink = document.querySelector('#pt-anonuserpage');
  if (!userlink) {
    userlink = document.querySelector('#pt-userpage');
  }
  if (userlink) {
    var switchView = document.querySelector('#' + linkSelector);
    if (!switchView) {
      switchView = document.createElement('li');
      switchView.style = 'white-space: nowrap; user-select:none; cursor: pointer; color: rgb(102, 177, 250);';
      switchView.id = linkSelector;
      switchView.title = prefName + ' (toggle)';
      switchView.addEventListener('click', toggleFunc);
      userlink.parentElement.insertBefore(switchView, null);
      var elems = document.querySelectorAll('.' + linkSelector);
      for (var i = 0; i < elems.length; i++) {
        elems[i].addEventListener('click', toggleFunc);
        elems[i].style = 'white-space: nowrap; user-select:none; cursor: pointer; color: rgb(102, 177, 250);';
      }
    }
    if (getCookie(cookieName) == cookie2) {
      switchView.textContent = link1;
      hideElements('.only' + cookie1);
      showElements('.only' + cookie2);
    } else {
      switchView.textContent = link2;
      hideElements('.only' + cookie2);
      showElements('.only' + cookie1);
    }
  }
  var mwpanelul = document.querySelector('#mw-panel ul');
  if (mwpanelul) {
    var switchView2 = document.querySelector('#' + linkSelector + '2');
    if (!switchView2) {
      switchView2 = document.createElement('li');
      switchView2.style = 'white-space: nowrap; user-select:none; cursor: pointer; color: rgb(102, 177, 250);';
      switchView2.id = linkSelector + '2';
      switchView2.title = prefName + ' (toggle)';
      switchView2.addEventListener('click', toggleFunc);
      if (linkSelector=='switchDoR' || linkSelector=='switchExpansion') {
        switchView2.style.display = 'none';	
      }
      mwpanelul.insertBefore(switchView2, null);
      if (linkSelector=='switchDoR' || linkSelector=='switchExpansion') {
        var switchView3=document.createElement('li');
        var switchView3img=document.createElement('img');
        switchView3img.classList='only' + cookie1;
        var switchView3img2=document.createElement('img');
        switchView3img2.classList='only' + cookie2;
        switchView3.insertBefore(switchView3img, null);
        switchView3.insertBefore(switchView3img2, null);
        switchView3.id=linkSelector + '3';
        switchView3.classList=linkSelector;
        switchView3.title=prefName + ' (toggle)';
        switchView3.addEventListener('click', toggleFunc);
        mwpanelul.prepend(switchView3);
      }
    }
    if (getCookie(cookieName) == cookie2) {
      switchView2.textContent = link1;
      hideElements('.only' + cookie1);
      showElements('.only' + cookie2);
    } else {
      switchView2.textContent = link2;
      hideElements('.only' + cookie2);
      showElements('.only' + cookie1);
    }
  }
}

function removeTooltips() {
  var elems = document.querySelectorAll('.mainpage .tabs-content div div a');
  for (var i = 0; i < elems.length; i++) {
    elems[i].title = '';
  }
}

function removeUnwantedTitles() {
  var elems = document.querySelectorAll('#p-logo a');
  for (var i = 0; i < elems.length; i++) {
    elems[i].title = '';
  }
}

function initCommon() {
  initPreference('switchDoR', 'preferredDoR', 'dor', 'nodor', 'Enable DoR', 'Disable DoR', 'Day of Reckoning', toggleDoR);
  initPreference('switchExpansion', 'preferredExpansion', 'hota', 'sod', 'Enable HotA', 'Disable HotA', 'Horn of the Abyss', togglePreferredExpansion);
  var mainpage = document.querySelector('.mainpage.onlysod.onlyhota');
  if (mainpage) {
    initPreference('switchView', 'preferredView', 'modern', 'legacy', 'Enable Modern', 'Enable Legacy', 'Legacy/Modern', togglePreferredView);
    removeTooltips();
  }
  removeUnwantedTitles();
  initPreference('switchHeroesStyle', 'heroesStyle', 'heroesStyleDisabled', 'heroesStyleEnabled', 'Disable H3CSS', 'Enable H3CSS', 'Heroes Style', toggleHeroesStyle);
  setHeroesStyle();
}

try {
  initCommon();
} catch (error) {
  window.setTimeout(initCommon, 2000);
}

})();