MediaWiki:Common.js

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

/*************************************** * Name: hasClass * Description: Checks if a element has a specified class name. Uses regular expressions and caching for better performance. * Maintainers (Wikipedia): User:Mike Dillon, User:R. Koot, User:SG * Source: Wikipedia Common.js, imported 2/1/10 * Additional Notes: This is a utility method used in other methods. */ var hasClass = (function {    var reCache = {};    return function (element, className) {        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);   }; });

/*********************************************************** * Name: createJQueryTabs * Description: Runs at page load, inserts jQuery tabs into a page wherever a with class "tabs" is found. * Maintainers: User:FlyingRagnar (Dragon Quest Wiki - www.dragon-quest.org; taken May 18, 2020) * Additional Notes: This function effectively replaces the Tabber extension which was * previously used to insert tabs into a page. The template Template:VersionTabs is * the primary method to use when inserting jQuery tabs into a page. It is tightly * coupled to this function. */ mw.loader.load( 'jquery.ui.tabs' ); function createJQueryTabs {   var tabGroup = 0; var Tabs = document.getElementsByTagName( "div" ); for ( var i = 0; i < Tabs.length; i++ ) { if ( hasClass( Tabs[i], "tabs" ) ) { Tabs[i].setAttribute("id", "tabs" + tabGroup);

var children = Tabs[i].childNodes; var h = 0; for( var j = 0; j < children.length; j++ ) { if ( children[j].nodeName == "UL" ) { var Tlinks = children[j].getElementsByTagName( "li" ); for( var k = h; k < Tlinks.length; k++ ) { Tlinks[k].innerHTML = '' + Tlinks[k].innerHTML + ''; }              } else if ( children[j].nodeName == "DIV" ) { children[j].setAttribute("id", "tabs" + tabGroup + "-" + (h+1)); h++; }           }            // apply the jQuery code to take effect jQuery( "#tabs" + tabGroup ).tabs({ /*event: "mouseover"*/ }); tabGroup++; }   } }