Difference between revisions of "MediaWiki:Common.js"

From www.PSALTIKI.info
Jump to: navigation, search
m
m
Line 4: Line 4:
 
importScript( 'MediaWiki:' + name + '.js' );
 
importScript( 'MediaWiki:' + name + '.js' );
 
};
 
};
 
+
*/
 
importScript_ = importScript;
 
importScript_ = importScript;
 
importScript = function ( page, proj ) {
 
importScript = function ( page, proj ) {
Line 11: Line 11:
 
} else {
 
} else {
 
if ( proj.indexOf( '.' ) === -1 ) {
 
if ( proj.indexOf( '.' ) === -1 ) {
proj += '.wikipedia.org';
+
proj += 'localhost:8001';
 
}
 
}
 
mw.loader.using( 'mediawiki.util' ).done( function () {
 
mw.loader.using( 'mediawiki.util' ).done( function () {
Line 19: Line 19:
 
};
 
};
  
 
+
/*
  
 
// Extra scripts
 
// Extra scripts

Revision as of 03:31, 22 June 2017

/* Any JavaScript here will be loaded for all users on every page load. */
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице   */
/*importMW = function ( name ) {
	importScript( 'MediaWiki:' + name + '.js' );
};
*/
importScript_ = importScript;
importScript = function ( page, proj ) {
	if ( !proj ) {
		importScript_( page );
	} else {
		if ( proj.indexOf( '.' ) === -1 ) {
			proj += 'localhost:8001';
		}
		mw.loader.using( 'mediawiki.util' ).done( function () {
			mw.loader.load( '//' + proj + '/index.php?title=' + mw.util.wikiUrlencode( page ) + '&action=raw&ctype=text/javascript' );
		} );
	}
};

/*

// Extra scripts

var withJS = location.href.match( /[&?]withjs=((mediawiki:)?([^&#]+))/i );
if ( withJS ) {
	importScript_( 'MediaWiki:' + withJS[3] );
}

var execJS = document.getElementById( 'executeJS' );
if ( execJS ) {
	$.each( execJS.className.split( ' ' ), function ( i, sc ) {
		sc = $.trim( sc.replace( /[^\w ]/g, '' ) );
		if ( sc ) {
			importMW( 'Script/' + sc );
		}
	} );
}
*/
//mw.loader.load( '//wiki/User:Root/hotkeys.js&action=raw&ctype=text/javascript' ); 

//http://localhost:8001/wiki/User:Root/hotkeys.js
//mw.loader.load( '//localhost:8001/index.php?title=MediaWiki:Hotkeys.js&action=raw&ctype=text/javascript' ); 
/*importScript("MediaWiki:Hotkeys.js");
hotkeys = {
    'b' : 'Brooks was here',
    'l' : '',
    's' : '§',
    't' : '{| class="wikitable"\n! header\n! header\n|-\n| data\n| data\n|}\n'
};
*/


/*WikiEditor/Викификатор*/
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
mw.loader.load( '//localhost:8001/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript' ); 
}

var customizeToolbar = function() {

$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
        'section': 'main',
        'group': 'format',
        'tools': {
                'wikify': {
                        label: 'Викификатор',
                        type: 'button',
                        icon: '/images/0/06/Wikify-toolbutton.png',
                             action: {
                                  type: 'callback',
                                       execute: function(context){
                                              Wikify();
                                       } 
                             }
                }
        }
} );
};
 
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
        mw.loader.using( 'user.options', function () {
                if ( mw.user.options.get('usebetatoolbar') ) {
                        mw.loader.using( 'ext.wikiEditor.toolbar', function () {
                                $(document).ready( customizeToolbar );
                        } );
                }
        } );
}



window.wfPlugins = window.wfPlugins || [];
window.wfPlugins.push(function (txt, r) {
// здесь ваши замены
// Например: r(/<br\s?\/>/g, '<br>');
		// BYZANTINE NOTATION
		r( /𝂞/g, '<span style=\'color:red;\'>𝂞<\/span>' ); // 
		r( /𝃩/g, '<span style=\'color:red;\'>𝃩<\/span>' ); // 
		r( /𝃪/g, '<span style=\'color:red;\'>𝃪<\/span>' ); // 
		r( /𝃫/g, '<span style=\'color:red;\'>𝃫<\/span>' ); // 
		r( /𝃬/g, '<span style=\'color:red;\'>𝃬<\/span>' ); // 
		r( /𝃭/g, '<span style=\'color:red;\'>𝃭<\/span>' ); // 
		r( /𝃮/g, '<span style=\'color:red;\'>𝃮<\/span>' ); // 
		r( /𝃯/g, '<span style=\'color:red;\'>𝃯<\/span>' ); // 
		r( /𝂣/g, '<span style=\'color:red;\'>𝂣<\/span>' ); // 
		r( /𝂩/g, '<span style=\'color:red;\'>𝂩<\/span>' ); // 
		r( /𝂧/g, '<span style=\'color:red;\'>𝂧<\/span>' ); // 
		r( /𝂨/g, '<span style=\'color:red;\'>𝂨<\/span>' ); // 
		r( /𝂥/g, '<span style=\'color:red;\'>𝂥<\/span>' ); // 
		r( /𝂤/g, '<span style=\'color:red;\'>𝂤<\/span>' ); // 
		r( /𝂱/g, '<span style=\'color:red;\'>𝂱<\/span>' ); // 
		r( /𝂾/g, '<span style=\'color:red;\'>𝂾<\/span>' ); // 
		r( /𝃄/g, '<span style=\'color:red;\'>𝃄<\/span>' ); // 
		r( /𝂺/g, '<span style=\'color:red;\'>𝂺<\/span>' ); // 
		r( /𝂶/g, '<span style=\'color:red;\'>𝂶<\/span>' ); // 
		r( /𝂻/g, '<span style=\'color:red;\'>𝂻<\/span>' ); // 
		r( /𝂽/g, '<span style=\'color:red;\'>𝂽<\/span>' ); // 
		r( /𝂿/g, '<span style=\'color:red;\'>𝂿<\/span>' ); // 
		r( /𝃅/g, '<span style=\'color:red;\'>𝃅<\/span>' ); // 
		r( /𝃀/g, '<span style=\'color:red;\'>𝃀<\/span>' ); // 
		r( /𝃁/g, '<span style=\'color:red;\'>𝃁<\/span>' ); // 
		r( /𝃂/g, '<span style=\'color:red;\'>𝃂<\/span>' ); // 
		r( /𝃉/g, '<span style=\'color:red;\'>𝃉<\/span>' ); // 
		r( /𝂼/g, '<span style=\'color:red;\'>𝂼<\/span>' ); // 
		r( /𝂲/g, '<span style=\'color:red;\'>𝂲<\/span>' ); // 
		r( /𝃃/g, '<span style=\'color:red;\'>𝃃<\/span>' ); // 
		r( /𝂯/g, '<span style=\'color:red;\'>𝂯<\/span>' ); // 
		r( /𝃋/g, '<span style=\'color:red;\'>𝃋<\/span>' ); // 
		r( /𝃘/g, '<span style=\'color:red;\'>𝃘<\/span>' ); // 
		r( /𝃙/g, '<span style=\'color:red;\'>𝃙<\/span>' ); // 
		r( /𝂮/g, '<span style=\'color:red;\'>𝂮<\/span>' ); // 
		r( /𝂫/g, '<span style=\'color:red;\'>𝂫<\/span>' ); // 
		r( /𝃇/g, '<span style=\'color:red;\'>𝃇<\/span>' ); // 
		r( /𝂳/g, '<span style=\'color:red;\'>𝂳<\/span>' ); // 
		r( /𝂰/g, '<span style=\'color:red;\'>𝂰<\/span>' ); // 
		r( /𝃆/g, '<span style=\'color:red;\'>𝃆<\/span>' ); // 
		r( /𝃇/g, '<span style=\'color:red;\'>𝃇<\/span>' ); // 
		r( /𝂦/g, '<span style=\'color:red;\'>𝂦<\/span>' ); // 
		r( /𝂪/g, '<span style=\'color:red;\'>𝂪<\/span>' ); // 
		r( /𝂢/g, '<span style=\'color:red;\'>𝂢<\/span>' ); // 
		r( /𝂭/g, '<span style=\'color:red;\'>𝂭<\/span>' ); // 
		r( /𝂬/g, '<span style=\'color:red;\'>𝂬<\/span>' ); // 
		r( /𝁛/g, '<span style=\'color:red;\'>𝁛<\/span>' ); // 
		r( /𝃏/g, '<span style=\'color:red;\'>𝃏<\/span>' ); // 
		r( /𝁨/g, '<span style=\'color:red;\'>𝁨<\/span>' ); // 
		r( /𝁾/g, '<span style=\'color:red;\'>𝁾<\/span>' ); // 
		r( /𝁥/g, '<span style=\'color:red;\'>𝁥<\/span>' ); // 
		r( /𝁫/g, '<span style=\'color:red;\'>𝁫<\/span>' ); // 
		r( /𝁰/g, '<span style=\'color:red;\'>𝁰<\/span>' ); // 
		r( /𝁱/g, '<span style=\'color:red;\'>𝁱<\/span>' ); // 
		r( /𝁲/g, '<span style=\'color:red;\'>𝁲<\/span>' ); // 
		r( /𝁳/g, '<span style=\'color:red;\'>𝁳<\/span>' ); // 
		r( /𝁴/g, '<span style=\'color:red;\'>𝁴<\/span>' ); // 
		r( /𝁬/g, '<span style=\'color:red;\'>𝁬<\/span>' ); // 
		r( /𝁭/g, '<span style=\'color:red;\'>𝁭<\/span>' ); // 
		r( /𝁹/g, '<span style=\'color:red;\'>𝁹<\/span>' ); // 
		r( /𝁶/g, '<span style=\'color:red;\'>𝁶<\/span>' ); // 
		r( /𝁷/g, '<span style=\'color:red;\'>𝁷<\/span>' ); // 
		r( /𝁸/g, '<span style=\'color:red;\'>𝁸<\/span>' ); // 
		r( /𝁟/g, '<span style=\'color:red;\'>𝁟<\/span>' ); // 
		r( /𝁞/g, '<span style=\'color:red;\'>𝁞<\/span>' ); // 
		r( /𝁡/g, '<span style=\'color:red;\'>𝁡<\/span>' ); // 
		r( /𝁢/g, '<span style=\'color:red;\'>𝁢<\/span>' ); // 
		r( /𝁮/g, '<span style=\'color:red;\'>𝁮<\/span>' ); // 
		r( /𝁯/g, '<span style=\'color:red;\'>𝁯<\/span>' ); // 
		r( /𝀞/g, '<span style=\'color:red;\'>𝀞<\/span>' ); // 
		r( /𝁵/g, '<span style=\'color:red;\'>𝁵<\/span>' ); // 
		r( /𝁝/g, '<span style=\'color:red;\'>𝁝<\/span>' ); // 
		r( /𝁧/g, '<span style=\'color:red;\'>𝁧<\/span>' ); // 
		r( /𝁙/g, '<span style=\'color:red;\'>𝁙<\/span>' ); // 
		r( /𝁻/g, '<span style=\'color:red;\'>𝁻<\/span>' ); // 
		r( /𝁠/g, '<span style=\'color:red;\'>𝁠<\/span>' ); // 
		r( /𝁘⁠/g, '<span style=\'color:red;\'>𝁘⁠<\/span>' ); // 
		r( /𝁚⁠/g, '<span style=\'color:red;\'>𝁚⁠<\/span>' ); // 
		r( /𝁘⁠⁠/g, '<span style=\'color:red;\'>𝁘⁠⁠<\/span>' ); // 
		r( /𝂗/g, '<span style=\'color:red;\'>𝂗<\/span>' ); // 
		r( /𝂏/g, '<span style=\'color:red;\'>𝂏<\/span>' ); // 
		r( /𝂑/g, '<span style=\'color:red;\'>𝂑<\/span>' ); // 
		r( /𝂐/g, '<span style=\'color:red;\'>𝂐<\/span>' ); // 
		r( /𝂴/g, '<span style=\'color:red;\'>𝂴<\/span>' ); // 
		r( /𝂵/g, '<span style=\'color:red;\'>𝂵<\/span>' ); // 
		r( /𝞆⁠/g, '<span style=\'color:red;\'>𝞆⁠<\/span>' ); // 
		r( /ⱈ⁠/g, '<span style=\'color:red;\'>ⱈ⁠<\/span>' ); // 

		r( /𝂜/g, '<span style=\'color:green;\'>𝂜<\/span>' ); // 
		r( /𝂟/g, '<span style=\'color:green;\'>𝂟<\/span>' ); // 
		r( /𝂜𝂟/g, '<span style=\'color:green;\'>𝂜𝂟<\/span>' ); // 
		r( /𝂟𝂜/g, '<span style=\'color:green;\'>𝂟𝂜<\/span>' ); // 
		r( /𝃐/g, '<span style=\'color:green;\'>𝃐<\/span>' ); // 
		r( /𝃔/g, '<span style=\'color:green;\'>𝃔<\/span>' ); // 
		r( /𝃕/g, '<span style=\'color:green;\'>𝃕<\/span>' ); // 
		r( /𝁽/g, '<span style=\'color:green;\'>𝁽<\/span>' ); // 
		r( /𝁼/g, '<span style=\'color:green;\'>𝁼<\/span>' ); // 

		r( /𝃟/g, '<span style=\'color:blue;\'>𝃟<\/span>' ); // 
		r( /𝃠/g, '<span style=\'color:blue;\'>𝃠<\/span>' ); // 
		r( /𝃢/g, '<span style=\'color:blue;\'>𝃢<\/span>' ); // 
		r( /𝃣/g, '<span style=\'color:blue;\'>𝃣<\/span>' ); // 
		r( /𝃤/g, '<span style=\'color:blue;\'>𝃤<\/span>' ); // 
		r( /𝃥/g, '<span style=\'color:blue;\'>𝃥<\/span>' ); // 
		r( /𝃦/g, '<span style=\'color:blue;\'>𝃦<\/span>' ); // 
		r( /𝃧/g, '<span style=\'color:blue;\'>𝃧<\/span>' ); // 
		r( /𝃡/g, '<span style=\'color:blue;\'>𝃡<\/span>' ); // 
		r( /𝃨/g, '<span style=\'color:blue;\'>𝃨<\/span>' ); // 
		r( /𝃞/g, '<span style=\'color:blue;\'>𝃞<\/span>' ); // 


		r( /ⰊⰊ/g, '<span style=\'color:red;\'>ⰊⰊ<\/span>' ); //  
		r( /ⰫⰫ/g, '<span style=\'color:red;\'>ⰫⰫ<\/span>' ); //  
		r( /𝝚𝝚/g, '<span style=\'color:red;\'>𝝚𝝚<\/span>' ); //  
		r( /𝝦𝝦/g, '<span style=\'color:red;\'>𝝦𝝦<\/span>' ); //  
		r( /𝝩𝝩/g, '<span style=\'color:red;\'>𝝩𝝩<\/span>' ); //  
		r( /𝝪𝝪/g, '<span style=\'color:red;\'>𝝪𝝪<\/span>' ); //  
		r( /𝝝𝝝/g, '<span style=\'color:red;\'>𝝝𝝝<\/span>' ); //  
		r( /𝝞𝝞/g, '<span style=\'color:red;\'>𝝞𝝞<\/span>' ); //  
		r( /𝝤𝝤/g, '<span style=\'color:red;\'>𝝤𝝤<\/span>' ); //  
		r( /𝝥𝝥/g, '<span style=\'color:red;\'>𝝥𝝥<\/span>' ); // 
		r( /ⰩⰩ/g, '<span style=\'color:red;\'>ⰩⰩ<\/span>' ); // 
		r( /ⰌⰌ/g, '<span style=\'color:red;\'>ⰌⰌ<\/span>' ); // 
		r( /𝝖𝝖/g, '<span style=\'color:red;\'>𝝖𝝖<\/span>' ); // 
		r( /𝝨𝝨/g, '<span style=\'color:red;\'>𝝨𝝨<\/span>' ); // 
		r( /𝝙𝝙/g, '<span style=\'color:red;\'>𝝙𝝙<\/span>' ); // 
		r( /𝝫𝝫/g, '<span style=\'color:red;\'>𝝫𝝫<\/span>' ); // 
		r( /𝝘𝝘/g, '<span style=\'color:red;\'>𝝘𝝘<\/span>' ); // 
		r( /𝝜𝝜/g, '<span style=\'color:red;\'>𝝜𝝜<\/span>' ); // 
		r( /𝝣𝝣/g, '<span style=\'color:red;\'>𝝣𝝣<\/span>' ); // 
		r( /𝝟𝝟/g, '<span style=\'color:red;\'>𝝟𝝟<\/span>' ); // 
		r( /𝝠𝝠/g, '<span style=\'color:red;\'>𝝠𝝠<\/span>' ); // 
		r( /ⰥⰥ/g, '<span style=\'color:red;\'>ⰥⰥ<\/span>' ); // 
		r( /ⰤⰤ/g, '<span style=\'color:red;\'>ⰤⰤ<\/span>' ); // 
		r( /𝝛𝝛/g, '<span style=\'color:red;\'>𝝛𝝛<\/span>' ); // 
		r( /𝝬𝝬/g, '<span style=\'color:red;\'>𝝬𝝬<\/span>' ); // 
		r( /𝝭𝝭/g, '<span style=\'color:red;\'>𝝭𝝭<\/span>' ); // 
		r( /𝝮𝝮/g, '<span style=\'color:red;\'>𝝮𝝮<\/span>' ); // 
		r( /𝝗𝝗/g, '<span style=\'color:red;\'>𝝗𝝗<\/span>' ); // 
		r( /𝝢𝝢/g, '<span style=\'color:red;\'>𝝢𝝢<\/span>' ); // 
		r( /𝝡𝝡/g, '<span style=\'color:red;\'>𝝡𝝡<\/span>' ); // 
		r( /ⰜⰜ/g, '<span style=\'color:red;\'>ⰜⰜ<\/span>' ); // 
		r( /ⰨⰨ/g, '<span style=\'color:red;\'>ⰨⰨ<\/span>' ); // 
		r( /ⰍⰍ/g, '<span style=\'color:red;\'>ⰍⰍ<\/span>' ); // 
		r( /ⰅⰅ/g, '<span style=\'color:red;\'>ⰅⰅ<\/span>' ); // 
		r( /ⰐⰐ/g, '<span style=\'color:red;\'>ⰐⰐ<\/span>' ); // 
		r( /ⰃⰃ/g, '<span style=\'color:red;\'>ⰃⰃ<\/span>' ); // 
		r( /ⰞⰞ/g, '<span style=\'color:red;\'>ⰞⰞ<\/span>' ); // 
		r( /ⰛⰛ/g, '<span style=\'color:red;\'>ⰛⰛ<\/span>' ); // 
		r( /ⰈⰈ/g, '<span style=\'color:red;\'>ⰈⰈ<\/span>' ); // 
		r( /ⰪⰪ/g, '<span style=\'color:red;\'>ⰪⰪ<\/span>' ); // 
		r( /ⰗⰗ/g, '<span style=\'color:red;\'>ⰗⰗ<\/span>' ); // 
		r( /ⰂⰂ/g, '<span style=\'color:red;\'>ⰂⰂ<\/span>' ); // 
		r( /ⰀⰀ/g, '<span style=\'color:red;\'>ⰀⰀ<\/span>' ); // 
		r( /ⰚⰚ/g, '<span style=\'color:red;\'>ⰚⰚ<\/span>' ); // 
		r( /ⰓⰓ/g, '<span style=\'color:red;\'>ⰓⰓ<\/span>' ); // 
		r( /ⰑⰑ/g, '<span style=\'color:red;\'>ⰑⰑ<\/span>' ); // 
		r( /ⰎⰎ/g, '<span style=\'color:red;\'>ⰎⰎ<\/span>' ); // 
		r( /ⰄⰄ/g, '<span style=\'color:red;\'>ⰄⰄ<\/span>' ); // 
		r( /ⰆⰆ/g, '<span style=\'color:red;\'>ⰆⰆ<\/span>' ); // 
		r( /ⰡⰡ/g, '<span style=\'color:red;\'>ⰡⰡ<\/span>' ); // 
		r( /ⰝⰝ/g, '<span style=\'color:red;\'>ⰝⰝ<\/span>' ); // 
		r( /ⰔⰔ/g, '<span style=\'color:red;\'>ⰔⰔ<\/span>' ); // 
		r( /ⰏⰏ/g, '<span style=\'color:red;\'>ⰏⰏ<\/span>' ); // 
		r( /ⰋⰋ/g, '<span style=\'color:red;\'>ⰋⰋ<\/span>' ); // 
		r( /ⰕⰕ/g, '<span style=\'color:red;\'>ⰕⰕ<\/span>' ); // 
		r( /ⰁⰁ/g, '<span style=\'color:red;\'>ⰁⰁ<\/span>' ); // 
		r( /ⰣⰣ/g, '<span style=\'color:red;\'>ⰣⰣ<\/span>' ); // 
		r( /ⰬⰬ/g, '<span style=\'color:red;\'>ⰬⰬ<\/span>' ); // 
		r( /ⰒⰒ/g, '<span style=\'color:red;\'>ⰒⰒ<\/span>' ); // 
		r( /ⰙⰙ/g, '<span style=\'color:red;\'>ⰙⰙ<\/span>' ); // 
//		r( //g, '<span style=\'color:red;\'><\/span>' ); // 

});









/*******************************
/* Wiki Subpage Tooltip Script *
/*******************************/
// Author:  Shawn Bruckner
// Date:    2013-Apr-28
// License: CC-BY 3.0
// Version: beta

var wst = wst || {

    dataSubpageTitle : '/nota',
    loadingTemplate: 'Template:Tooltip hover box loading',
    loadedTemplate: 'Template:Tooltip hover box',
    loadingHtml: null,
    classPrefix: 'wst-tooltip-',
    articlePath : null,
    fullScriptPath : null,
    scriptPath: null,
    dataTitlesToCheck: Array(),
    contentTitles: Array(),
    dataTitles: Array(),

    encodeAllSpecial : function( unencoded ) {
        var encoded = ""; 
        var c;
        var safeChars = /[0-9A-Za-z]/;
        for( var i = 0; i < unencoded.length; i++ ) {
            c = unencoded.charAt(i);
            if ( safeChars.test( c ) ) {
                encoded = encoded + c;
            } else {
                encoded = encoded + '_' + c.charCodeAt().toString(16) + '-';
            }
        }
        return encoded;
    },

    getTitleFromHref : function( href ) {
        var end;
        var result = null;
        if ( href.indexOf( wst.fullScriptPath ) === 0 ) {
            end = href.substring( wst.fullScriptPath.length );
            result = ( new RegExp( 'title=([^&]*)' ) ).exec( end );
        } else if ( href.indexOf( wst.scriptPath ) === 0 ) {
            end = href.substring( wst.scriptPath.length );
            result = ( new RegExp( 'title=([^&]*)' ) ).exec( end );
        } else if ( href.indexOf( wst.articlePath ) === 0 ) {
            end = href.substring( wst.articlePath.length );
            result = ( new RegExp( '([^?]*)' ) ).exec( end );
        }

        if ( result ) {
            if ( result[1].substring(0, 8) !== "Special:" ) {
                return decodeURIComponent( result[1] );
            } else {
                return null;
            }
        } else {
            return null;
        }
    },

    getTitlesAndContentLinks : function() {
        var links = $( '#mw-content-text a[href]' );
        var uniqueTitles = {};
        var title;

        for ( var i = 0; i < links.length; i++ ) {
            if( title = wst.getTitleFromHref( links[i].href ) ) {
                uniqueTitles[title] = null; // hackish way to ensure only unique titles are added
            }
        }

        for ( uniqueTitle in uniqueTitles ) { 
          wst.dataTitlesToCheck.push( uniqueTitle + wst.dataSubpageTitle ); // put unique titles into the array
        }
    },

    beginLinkSetup : function() {
        wst.articlePath = mw.config.get( 'wgServer' ) + mw.config.get( 'wgArticlePath' ).replace( /\$1/, '' );
        wst.fullScriptPath = mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' );
        wst.scriptPath = mw.config.get( 'wgScript' );

        wst.getTitlesAndContentLinks();

        if ( wst.dataTitlesToCheck.length > 0 ) {
            $.ajax( {
                type: 'POST',
                url: mw.util.wikiScript( 'api' ),
                data: { action: 'parse', format: 'json', text: '{' + '{:' + wst.loadingTemplate + '}}' },
                dataType: 'json',
                success: wst.midLinkSetup
            } );
        }
    },

    midLinkSetup: function( jsonData ) {
        wst.loadingHtml = jsonData.parse.text['*'];

        wst.startQueryPageExistence();        
    },

    startQueryPageExistence : function( ) {
        titleSubset = Array();
        for ( i = 0; i < 50 && wst.dataTitlesToCheck.length > 0; i++ ) {
            titleSubset.push( wst.dataTitlesToCheck.pop() );
        }
        var titles = titleSubset.join( '|' );

        $.ajax( {
             type: 'POST',
             url: mw.util.wikiScript( 'api' ),
             data: { action: 'query', format: 'json', titles: titles },
             dataType: 'json',
             success: wst.finishQueryPageExistence
        } );
    },

    finishQueryPageExistence : function( jsonData ) {
        wst.filterTitles( jsonData.query.pages );

        if ( wst.dataTitlesToCheck.length > 0 ) {
            wst.startQueryPageExistence();
        } else {
            wst.finishLinkSetup();
        }
    },

    filterTitles : function( pageData ) {
        var result, title;
        for ( index in pageData ) {
            result = pageData[index];
            if ( result.missing === undefined ) {
                title = result.title.replace( / /g, '_' );
                wst.dataTitles.push( title );
                wst.contentTitles.push( title.substring( 0, title.length - wst.dataSubpageTitle.length ) );
            }
        }
    },

    finishLinkSetup : function( ) {
        for ( var i = 0; i < wst.contentTitles.length; i++ ) {
            $( 'body' ).append( '<div id="' + wst.classPrefix + wst.encodeAllSpecial( wst.contentTitles[i] ) + 
                '" style="display: none; position: absolute; z-index: 10000;">' + 
                wst.loadingHtml.replace( /\$1/, wst.contentTitles[i].replace( /_/, " " ) ) + '</div>' );
        }

        var title, id;
        var links = $( '#mw-content-text a[href]' );
        for ( var i = 0; i < links.length; i++ ) {
            title = wst.getTitleFromHref( links[i].href );
            if ( title !== null && $.inArray( title, wst.contentTitles ) !== -1 ) {
                id = wst.classPrefix + wst.encodeAllSpecial( title );
                links.eq(i).on( 'mouseover', { id : id, title : title }, function( event ) { wst.showTooltip( event ); } );
                links.eq(i).on( 'mousemove', { id : id }, function( event ) { wst.moveTooltip( event ); } );
                links.eq(i).on( 'mouseout', { id : id }, function( event ) { wst.hideTooltip( event ); } );
            }
        }
    },

    showTooltip : function( event ) {
        tooltipBox = $( '#' + event.data.id );
        wst.positionTooltip( event.data.id, event.pageX, event.pageY );
        tooltipBox.fadeIn();

        if ( !tooltipBox.hasClass( 'loaded' ) && !tooltipBox.hasClass( 'loading' ) ) {
            tooltipBox.addClass( wst.classPrefix + 'loading' );
            wst.beginLoadTooltip( event.data.id, event.data.title );
        }
    },

    beginLoadTooltip : function( id, title ) {
        $.ajax( {
             type: 'POST',
             url: mw.util.wikiScript( 'api' ),
             data: { action: 'parse', format: 'json', title: title.replace( /_/, ' ' ),
                 text: '{' + '{:' + title + wst.dataSubpageTitle + '|' + wst.loadedTemplate + '}}' },
             dataType: 'json',
             success: function( jsonData ) { wst.finishLoadTooltip( id, jsonData ); }
        } );
    },

    finishLoadTooltip : function( id, jsonData ) {
        tooltipBox = $( '#' + id );
        tooltipBox.addClass( 'loaded' );
        tooltipBox.removeClass( 'loading' );
        tooltipBox.html( jsonData.parse.text['*'] );
    },

    moveTooltip : function( event ) {
        wst.positionTooltip( event.data.id, event.pageX, event.pageY );
    },

    positionTooltip: function( id, pageX, pageY ) {
        var tooltip = $( '#' + id );
        var bodyOffsets = document.body.getBoundingClientRect();
        var bodyX = pageX - bodyOffsets.left;
        var bodyY = pageY - bodyOffsets.top;
        var scrollX = $( document ).scrollLeft();
        var scrollY = $( document ).scrollTop();
        var bodyWidth = $( 'body' ).width();
        var bodyHeight = $( 'body' ).height();
        var viewWidth = $( window ).width();
        var viewHeight = $( window ).height();
        var topAdjust = 6;

        if ( tooltip.width() * 1.1 > pageX - scrollX ) {
            tooltip.css( { 'left' : bodyX - scrollX + 15, 'right' : 'auto' } );
            topAdjust = 36;
        } else {
            tooltip.css( { 'right' : bodyWidth - bodyX + scrollX + 6, 'left' : 'auto' } );
        }

        if ( tooltip.height() * 1.5 > pageY - scrollY ) {
            tooltip.css( { 'top' : bodyY - scrollY + topAdjust, 'bottom' : 'auto' } );
        } else {
            tooltip.css( { 'bottom' : bodyHeight - bodyY + scrollY + 3, 'top' : 'auto' } );
        }
    },

    hideTooltip : function( event ) {
        $( '#' + event.data.id ).fadeOut();
    }

};

$( document ).ready( wst.beginLinkSetup );

/***********************************
/* End Wiki Subpage Tooltip Script *
/***********************************/

//mw.loader.load( '//localhost:8001/index.php?title=MediaWiki:Copyheadings.js&action=raw&ctype=text/javascript' );

mw.loader.load( '//localhost:8001/index.php?title=MediaWiki:Hidesidebar.js&action=raw&ctype=text/javascript' );

//mw.loader.load( '//localhost:8001/index.php?title=MediaWiki:Highlight.js&action=raw&ctype=text/javascript' );


 


/*    $('<li>', {
    	id: 'pt-название-на-латинице',
    	html: $('<a>', {
    		href: 'URL ссылки',
    		text: 'Видимое название',
    		title: 'Текст всплывающей подсказки',
    	}),
    }).insertBefore($('#расположение'));

    Замените расположение на значение из списка ниже (сохранив знак #). Кнопка будет расположена перед:
    pt-userpage — ЛС
    pt-mytalk — ЛСО
    pt-preferences — Настройки
    pt-watchlist — СН
    pt-mycontris — Вклад
*/