/**
- Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
- loaded for all users on every wiki page. If possible create a gadget that is
- enabled by default instead of adding it here (since gadgets are fully
- optimized ResourceLoader modules with possibility to add dependencies etc.)
-
- Since Common.js isn't a gadget, there is no place to declare its
- dependencies, so we have to lazy load them with mw.loader.using on demand and
- then execute the rest in the callback. In most cases these dependencies will
- be loaded (or loading) already and the callback will not be delayed. In case a
- dependency hasn't arrived yet it'll make sure those are loaded before this.
- /  
/* global mw, $ */
/* jshint strict:false, browser:true */  
mw.loader.using( ['mediawiki.user', 'mediawiki.util', 'jquery.client'] ).done( function {
/* Begin of mw.loader.using callback */  
/**
- Main Page layout fixes
-
- Description: Adds an additional link to the complete list of languages available.
- Maintainers: User:AzaToth, User:R. Koot, User:Alex Smotrov
- /
if ( mw.config.get( 'wgIsMainPage' ) || mw.config.get( 'wgPageName' ) === 'பேச்சு:முதற்_பக்கம்' ) {
$( function {
mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
'முழு பட்டியல்', 'interwiki-completelist', 'பிற விக்கிப்பீடியாக்களின் முழு பட்டியல்' );
} );
}  
/**
- Redirect User:Name/skin.js and skin.css to the current skin's pages
- (unless the 'skin' page really exists)
- @source: http://www.mediawiki.org/wiki/Snippets/Redirect_skin.js
- @rev: 2
- /
if ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
var titleParts = mw.config.get( 'wgPageName' ).split( '/' );
/* Make sure there was a part before and after the slash
and that the latter is 'skin.js' or 'skin.css' */
if ( titleParts.length == 2 ) {
var userSkinPage = titleParts.shift + '/' + mw.config.get( 'skin' );
if ( titleParts.slice( -1 ) == 'skin.js' ) {
window.location.href = mw.util.getUrl( userSkinPage + '.js' );
} else if ( titleParts.slice( -1 ) == 'skin.css' ) {
window.location.href = mw.util.getUrl( userSkinPage + '.css' );
}
}
}  
/**
- Map addPortletLink to mw.util
- @deprecated: Use mw.util.addPortletLink instead.
- /
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );  
/**
- Extract a URL parameter from the current URL
- @deprecated: Use mw.util.getParamValue with proper escaping
- /
mw.log.deprecate( window, 'getURLParamValue', mw.util.getParamValue, 'Use mw.util.getParamValue instead' );  
/**
- Test if an element has a certain class
- @deprecated: Use $(element).hasClass instead.
- /
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Use jQuery.hasClass instead' );  
/**
- @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
- @rev 6
- /
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );  
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}  
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}  
/**
- WikiMiniAtlas
-
- Description: WikiMiniAtlas is a popup click and drag world map.
- This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
- The script itself is located on meta because it is used by many projects.
- See Meta:WikiMiniAtlas for more information.
- Maintainers: User:Dschwen
- /
( function {
var require_wikiminiatlas = false;
var coord_filter = /geohack/;
$( function {
$( 'a.external.text' ).each( function( key, link ) {
if ( link.href && coord_filter.exec( link.href ) ) {
require_wikiminiatlas = true;
// break from loop
return false;
}
} );
if ( $( 'div.kmldata' ).length ) {
require_wikiminiatlas = true;
}
if ( require_wikiminiatlas ) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
}
} );
} );  
/**
- Collapsible tables
-
- Allows tables to be collapsed, showing only the header. See .
-
- @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 instead which
- is supported in MediaWiki core.
- /  
var autoCollapse = 2;
var collapseCaption = 'மறை';
var expandCaption = 'காட்டு';
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 = '';
}
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,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function (index, element) {
$element = $( element );
if ( index > 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;
}
}
} );
}  
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );  
/**