MediaWiki:Common.js
From Card Hunter Wiki
Note: After saving, 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)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Clear the cache in Tools → Preferences
/* Any JavaScript here will be loaded for all users on every page load. */ article = ""; var tooltipsOn = true; var $tfb, $ttfb, $htt; var activeHoverLink = null; var tipCache = new Object(); function finalDeck(Inlist){ var tablelength=Math.ceil((Inlist.find('li').length)/3); var onelist = $("<ul/>").attr('id','chdeck').append(Inlist.find('li').slice(0, tablelength)); var twolist = $("<ul/>").attr('id','chdeck').append(Inlist.find('li').slice(0, tablelength)); var threelist = $("<ul/>").attr('id','chdeck').append(Inlist.find('li').slice(0, tablelength)); var deck = $("<table/>").attr('id','decklist').addClass('chtable_r'); deck.each(function(){ $(this).append('<caption></caption><tbody><tr><td></td><td></td><td></td></tr></tbody>'); $(this).find('caption').text("Deck List").css({'text-align':'left','padding-left':'30px'}); $(this).find('td:eq(0)').html(onelist).css('vertical-align','top'); $(this).find('td:eq(1)').html(twolist).css('vertical-align','top'); $(this).find('td:eq(2)').html(threelist).css('vertical-align','top'); }); return deck; } // takes a character build and consolidate all its cards into a deck list function binddeck(){ $(this).each(function () { var list = $("<ul/>").attr('id','chdeck'); var rowCount=$(this).find('tr').length; var colCount=$(this).find('tr:nth-child(1) td').length; $(this).find('tr').each(function() { $(this).find('td').each (function() { if ($(this).children().is('a')) { var valThis = $(this).text(); var valThiscount = parseInt($(this).prev().text()); var myRow = $(this).closest('tr').index(); for (var i = myRow+1; i < rowCount; i++) { for (var j = 0; j < colCount; j++) { var listSel = $(this).closest('table').find('td').get(colCount*i+j); if ($(listSel).children().is('a')){ var listVal = $(listSel).text(); if (listVal === valThis){ var listValCount = parseInt($(listSel).prev().text()); valThiscount+=listValCount; $(listSel).html(""); } } } } var p = $(this).map(function () { if ($(this).html()!=null){ var str=$(this).find('a').text(); $(this).find('a').text(str.slice(6)); var url=$(this).find('a').attr("href")+" .catlinks"; var cardcat.load(url, function() { cardcat.text()=cardcat.find("ul li").text(); }); return "<li>" + valThiscount + " " + $(this).html() + cardcat.text() + "</li>"; } }); $(this).html(""); list.append($.makeArray(p).join("")); } }); }); $(this).parent().replaceWith(finalDeck(list)); //$(this).parent().replaceWith(list); }); } // hides the tooltip function hideTip() { $tfb.html("").removeClass("tooltip-ready").addClass("hidden").css("visibility","hidden"); activeHoverLink = null; } // displays the tooltip function displayTip(e) { $tfb.not(":empty").removeClass("hidden").addClass("tooltip-ready"); moveTip(e); $tfb.not(":empty").css("visibility","visible"); moveTip(e); } // moves the tooltip function moveTip(e) { $ct = $tfb.not(":empty"); var newTop = e.clientY + ((e.clientY > ($(window).height()/2)) ? -($ct.innerHeight()+20):20); var newLeft = e.clientX + ((e.clientX > ($(window).width()/2)) ? -($ct.innerWidth()+20):20); $ct.css({"position":"fixed","top":newTop + "px","left":newLeft + "px"}); } // AJAX tooltips function showTip(e) { var $t=$(this); activeHoverLink = $t; $p=$t.parent(); if ($p.hasClass("selflink")==false) { $t.removeAttr("title"); $p.removeAttr("title"); //var url=$p.attr("href")+" .image"; VERY SLOW LOADING OF IMAGES ! var url="/wiki/Template:Spotlight .image"; //Remember: changing the image in the template will change the 'Coming Soon' image!!! if (tipCache[url] != null) { $tfb.html(tipCache[url]); displayTip(e); return; } } $tfb.load(url,function () { if ($t != activeHoverLink) return; if ($tfb.html() == "") $tfb.html('<div class="tooltip-content"><b>Testing tooltip</b></div>'); $tfb.find(".image").css("display",""); tipCache[url] = $tfb.html(); displayTip(e); }); } function bindTT() { $t=$(this); $p=$t.parent(); if ($p.hasClass("selflink") == false) { $t.data("tt", $p.attr("title")).hover(showTip,hideTip).mousemove(moveTip); } } function addTT() { $(this).wrapInner('<span class="ajaxttlink" />'); } function Inittooltips() { if ($tfb == null) { $(article).append('<div id="tfb" class="htt"></div><div id="templatetfb" class="htt"></div>'); $tfb = $("#tfb"); $ttfb = $("#templatetfb"); $htt = $("#tfb,#templatetfb"); } $(article + " a[href*='wiki/Cards/']:not(:has(span.ajaxttlink))").each(addTT); $(article + " span.ajaxttlink:not(:has(span.disablett))").each(bindTT); } function modifyHeader() { var str=$("#firstHeading").html(); if (str.indexOf("Cards/")==17||str.indexOf("Items/")==17) $("#firstHeading").html(str.slice(23)); } $(function() { article = "#bodyContent"; $(article + " #builddeck" + " table.smwtable").each(binddeck); var headerstr=$("#firstHeading").html(); /*js to remove ugly header in Main page.*/ if (headerstr.indexOf("Cardhuntria:Community portal")>0) $("#firstHeading").remove(); /*js to strip "Cards/" and "Items/" from headers belonging to card and item pages.*/ if ((headerstr.indexOf("Cards/")>0) || (headerstr.indexOf("Items/")>0)) modifyHeader(); else if (headerstr.indexOf("Category:")>0) ; else if (tooltipsOn) Inittooltips(); });