MediaWiki:Common.js

Материал из Викитеки — свободной библиотеки

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
function includeScript(page, project) {
 var url = '/w/index.php?title=' + encodeURIComponent(page) + '&action=raw&ctype=text/javascript';
 if (project)
   url = '//' + project + url;
 else
   url = '//ru.wikisource.org' + url;
 mw.loader.load(url);
}

//mw.loader.using( ['mediawiki.user', 'mediawiki.util', 'jquery.client'] ).done( function () {
/* Begin of mw.loader.using callback */

/* Для шаблона Полнота текста */
function articleTab(){
 var tabMain = document.getElementById('ca-nstab-main');
 if (!tabMain) return;
 if (document.getElementById('Author') && tabMain.firstChild.innerHTML == 'Статья')
   tabMain.firstChild.innerHTML = 'Автор';
 var qEl, img = '';
 if (qEl = document.getElementById('textquality')){
   switch(qEl.classname) {
    case '0%':   img = '8/8f/00%25.png'; break;
    case '25%':  img = '5/5b/25%25.png'; break;
    case '50%':  img = '3/3a/50%25.png'; break;
    case '75%':  img = 'c/cd/75%25.png'; break;
    case '100%': img = '6/64/100%25.png'; break;
   }
   if (img) tabMain.firstChild.innerHTML += 
   '<img src="//upload.wikimedia.org/wikipedia/commons/' + img + 
   '" alt="' + qEl.classname + 'width=9px height=9px/>';
 }
}

/* Добавление значка ⇔ в интервики */
function BilingualLink() {
 var pLang = document.getElementById('p-lang');    
 if (!pLang) return;
 var url = mw.config.get('wgServer') + mw.config.get('wgArticlePath');
 url = url.replace('\$1', mw.config.get('wgPageName'));
 var lang, qm, i; 
 var li = pLang.getElementsByTagName('li');
 for (i=0; i<li.length; i++) {
  lang = li[i].className.split('-')[1];
  li[i].innerHTML += ' <a href="' + url + '?match=' + lang + '" rel="nofollow">⇔</a>'; // nofollow
 }
}

/**********************
*** InterWiki-Info
*** Используется в шаблоне «Интервики инфо»
**********************/

function interwikiExtra() {
    var a, b, p, pvers, c, e, pref, n;
    // итерация через все <span>-элементы
    for (var i = 0; a = document.getElementsByTagName('span')[i]; i++) {
        // если найден span interwiki-info
        if (a.className == 'interwiki-info') {
            // итерация через все <li>-элементы
            var count = 0;
 
            for (var j = 0; b = document.getElementsByTagName('li')[j]; j++) {
                if (b.className == 'interwiki-' + a.id) {
                    b.innerHTML = b.innerHTML + ' ' + a.title;
                    if (a.title == '(vo)') {
                        b.title = 'Texte original';
                    }
                } else if(b.className == 'interwiki-' + a.id.substr(0, a.id.length - 1)) {
                    count++;
                    if (a.id.charAt(a.id.length - 1) == count) {
                        b.innerHTML = b.innerHTML + ' ' + a.title;
                    }
                }
            }
        }
/*        if(a.className == "otherVersion") {
            p = a.title.indexOf("|");
            if(a.title.substr(0,11) == "wikilivres:") {
                pref = "http://www.wikilivres.info/wiki/";
                n = 11;
            }
            else {
                pref = "/wiki/";
                n = 0;
            }
            pvers = document.getElementById("p-version");
            if (pvers == null) {
                c = document.getElementById("column-one");
                c.innerHTML = c.innerHTML
                    + "<div class=\"portlet\" id=\"p-version\">"
                    + "<h5>другие версии</h5>"
                    + "<div class=\"pBody\">"
                    + "<ul>"
                    + "</ul>"
                    + "</div>"
                    + "</div>";
                pvers = document.getElementById("p-version");
            }
            e = pvers.getElementsByTagName("ul")[0]; 
            e.innerHTML = e.innerHTML 
                + "<li class=\"\"><a href='" 
                + pref + a.title.substring(n,p)
                + "'>" + a.title.substr(p+1,a.title.length-1)+ "</a> " +"</li>"
        } */
    }
}

function editTopLink(){
 var h2s = document.getElementsByTagName('H2');
 var h2 = h2s[0];
 if (!h2) return;
 if (h2.parentNode.id == 'toctitle') h2 = h2s[1];
 if (!h2) return;
 var span = h2.firstChild;
 if (!span || span.className != 'editsection') return;
 var zero = span.cloneNode(true);
 if (document.getElementById('featured-star')) zero.style.marginRight = '25px';
 var parent = document.getElementsByTagName('H1')[0];
 parent.insertBefore(zero, parent.firstChild);
 var a = zero.getElementsByTagName('A')[0];
 a.title = a.title.replace(/:.*$/,': 0');
 a.setAttribute('href', a.href.replace(/&section=1/,'&section=0'));
}


function extSearchMenu(){
 var search = document.forms['search'];
 if (!search) return;
 //add hidden external search form
 extSearch = document.createElement('form'); //global var
 extSearch.target = '_blank';
 for (i=0; i<5; i++){
   inp = document.createElement('input');
   inp.type = 'hidden';
   extSearch.appendChild(inp);
 }  
 search.parentNode.appendChild(extSearch);
 //create a menu of search sites
 var sel = document.createElement('select');
 var searchURL = [];
 function addSite (name, url){
   searchURL[searchURL.length] = url;
   var opt = document.createElement('option');
   opt.appendChild(document.createTextNode(name));
   sel.appendChild(opt);
 }
 var wgDomain = mw.config.get('wgServer').substring(5); 
 addSite('также','');
 addSite('Google по Викитеке', 'http://www.google.com/custom?hl=' + mw.config.get('wgContentLanguage') 
  + '&domains=' + wgDomain + '&sitesearch=' + wgDomain + '&q=');
 addSite('Яndex по Викитеке', 'http://www.yandex.ru/yandsearch?ras=1&site_manually=true'
  + '&site=' + wgDomain + '&server_name=Викитека&text=');
 addSite('Искать в Википедии', '//ru.wikipedia.org/wiki/Special:Search?search=');
 addSite('Искать в Викисловаре', '//ru.wiktionary.org/wiki/Special:Search?search=');
 search['search'].style.marginLeft = '10px';
 search[search.length-1].parentNode.appendChild(sel);
 //what to do when site selected
 sel.onchange = function(){
  if (this.selectedIndex == 0) return;
  var s = searchURL[this.selectedIndex].split('?');
  extSearch.action = s[0];
  var opt = s[1].split('&');
  for (var i=0; i<opt.length; i++){
    extSearch[i].disabled = false;
    extSearch[i].name = opt[i].split('=')[0];
    extSearch[i].value = opt[i].split('=')[1];
    if (extSearch[i].value == '') extSearch[i].value =  document.forms['search'].search.value;
  }
  while (i < extSearch.length)  extSearch[i++].disabled = true;
  extSearch.submit();
  this.selectedIndex = 0;
 }
}



if (mw.config.get('wgNamespaceNumber') == 0) {
  $(articleTab);
// $(interwikiExtra);
// $(BilingualLink);
}

if (mw.config.get('wgNamespaceNumber') >=0 && mw.config.get('wgAction') == 'view')
  $(editTopLink);

if (mw.config.get('wgCanonicalNamespace') == 'Special' && mw.config.get('wgCanonicalSpecialPageName') == 'Search')
 $(extSearchMenu);

if ((mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') && mw.config.get('wgCanonicalNamespace') != 'Special')
  includeScript('MediaWiki:Editpage.js');



/* Collapsible tables: //en.wikipedia.org/wiki/Wikipedia:Collapsible_tables */
 
 var autoCollapse = 2;
 var collapseCaption = "скрыть";
 var expandCaption = "показать";
 
 function collapseTable( tableIndex )
 {
     var Button = document.getElementById( "collapseButton" + tableIndex );
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
 
     if ( !Table || !Button ) {
         return false;
     }
 
     var Rows = Table.rows;
 
     if ( Button.firstChild.data == collapseCaption ) {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = "none";
         }
         Button.firstChild.data = expandCaption;
     } else {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = Rows[0].style.display;
         }
         Button.firstChild.data = collapseCaption;
     }
 }
 
 function createClickHandler( tableIndex ) {
    return function ( e ) {
        e.preventDefault();
        collapseTable( tableIndex );
    };
 }
 
 function createCollapseButtons()
 {
     var tableIndex = 0;
     var NavigationBoxes = new Object();
     var Tables = document.getElementsByTagName( "table" );
 
     for ( var i = 0; i < Tables.length; i++ ) {
         if ( $(Tables[i]).hasClass( "collapsible" ) ) {
 
             /* only add button and increment count if there is a header row to work with */
             var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
             if (!HeaderRow) continue;
             var Header = HeaderRow.getElementsByTagName( "th" )[0];
             if (!Header) continue;
 
             NavigationBoxes[ tableIndex ] = $(Tables[i]);
             Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
             var Button     = document.createElement( "span" );
             var ButtonLink = document.createElement( "a" );
             var ButtonText = document.createTextNode( collapseCaption );
 
             Button.style.styleFloat = "right";
             Button.style.cssFloat = "right";
             Button.style.fontWeight = "normal";
             Button.style.textAlign = "right";
             Button.style.width = "6em";
 
             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.childNodes[0] );
             tableIndex++;
         }
     }
 
     for ( var i = 0;  i < tableIndex; i++ ) {
         if ( NavigationBoxes[i].hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && NavigationBoxes[i].hasClass( "autocollapse" ) ) ) {
             collapseTable( i );
         }
     }
 }
 
mw.hook( 'wikipage.content' ).add( createCollapseButtons );


/* Test if an element has a certain class */
var hasClass = (function () {
 var reCache = {};
 return function (element, className) {
     return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
  };
})();

//{Modifynewsectionlink}
function newSectionLink(){
 var plus = document.getElementById('ca-addsection')
 if (!plus) return
 var custom = document.getElementById('add-custom-section')
 if (!custom) return
 plus.firstChild.setAttribute('href', custom.getElementsByTagName('A')[0].href)
}

/* Локальная функция загрузки скриптов с поддержкой указания проекта */
var importScript_ = importScript;
importScript = function ( page, proj ) {
	if ( !proj ) importScript_( page )
	else {
		if ( proj.indexOf( '.' ) === -1 ) proj += '.wikisource.org';
		mw.loader.using( 'mediawiki.util' ).done( function () {
			mw.loader.load( '//' + proj + '/w/index.php?title=' + mw.util.wikiUrlencode( page ) + '&action=raw&ctype=text/javascript' );
		} );
	}
};
 
 // Faster Dynamic Navigation
 
 // set up the words in your language
 var NavigationBarHide = '[скрыть]';
 var NavigationBarShow = '[показать]';
 
 var NavigationTitleHide = 'hide contents';
 var NavigationTitleShow = 'show contents';
 
// shows and hides content and picture (if available) of navigation bars
// Parameters:
//     indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar( indexNavigationBar ) {
	var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
	var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
 
	if( !NavFrame || !NavToggle ) {
		return false;
	}
 
	// if shown now
	if( NavToggle.firstChild.data == NavigationBarHide ) {
		for( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
			if ( $(NavChild).hasClass( 'NavPic' ) ) {
				NavChild.style.display = 'none';
			}
			if ( $(NavChild).hasClass( 'NavContent' ) ) {
				NavChild.style.display = 'none';
			}
		}
		NavToggle.firstChild.data = NavigationBarShow;
 
	// if hidden now
	} else if( NavToggle.firstChild.data == NavigationBarShow ) {
		for( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
			if( $(NavChild).hasClass( 'NavPic' ) ) {
				NavChild.style.display = 'block';
			}
			if( $(NavChild).hasClass( 'NavContent' ) ) {
				NavChild.style.display = 'block';
			}
		}
		NavToggle.firstChild.data = NavigationBarHide;
	}
}
 
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton() {
	var indexNavigationBar = 0;
	// iterate over all < div >-elements
	var divs = document.getElementsByTagName( 'div' );
	for( var i = 0; NavFrame = divs[i]; i++ ) {
		// if found a navigation bar
		if( $(NavFrame).hasClass( 'NavFrame' ) ) {
			indexNavigationBar++;
			var NavToggle = document.createElement( 'a' );
			NavToggle.className = 'NavToggle';
			NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
			NavToggle.setAttribute( 'href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');' );
 
			var NavToggleText = document.createTextNode( NavigationBarHide );
			for( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
				if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
					if( NavChild.style.display == 'none' ) {
						NavToggleText = document.createTextNode( NavigationBarShow );
						break;
					}
				}
			}
 
			NavToggle.appendChild(NavToggleText);
			// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
			for( var j = 0; j < NavFrame.childNodes.length; j++) {
				if( $(NavFrame.childNodes[j]).hasClass( 'NavHead' ) ) {
					NavFrame.childNodes[j].appendChild( NavToggle );
				}
			}
			NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
		}
	}
}
$( createNavigationBarToggleButton );

//Дополнительные кнопки

/*function add_toolbox_link(action, name, id)
{
  var tools = document.getElementById('column-one');
  
  if (tools)
    tools = tools.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
  if (!tools)
    return;
  
  var na = document.createElement('a').appendChild(document.createTextNode(name)).parentNode;
  
  if (typeof action == "string")
    na.setAttribute('href', action);
  else if (typeof action == "function")
    na.onclick = action;
  else
    return;
  
  var li = document.createElement('li').appendChild(na).parentNode;
  
  if (typeof id == "string") li.id = id;
  
  tools.appendChild(li);
}

function add_all_user_tools()
{
  if (mw.config.get('wgNamespaceNumber') != 2 && mw.config.get('wgNamespaceNumber') != 3) return;
  
  var username = encodeURIComponent(mw.config.get('wgTitle').split("/")[0]);
  var project = mw.config.get('wgServer').replace("http://", "");
  var baseurl = 'http://tools.wikimedia.de/~daniel/WikiSense/';
  var delimg = 'Images_with_unknown_copyright_status';
  
  add_toolbox_link(baseurl + 'UntaggedImages.php?wiki=' + project + '&img_user_text=' + username , 'untagged', 'ca-untagged');
  add_toolbox_link(baseurl + 'MediaSearch.php?wiki=' + project + '&category=' + delimg + '&depth=10&max=100&uploader=' + username, 'unlicensed', 'ca-unlicensed');
}

if(typeof gadget_removeimagetools == 'undefined') gadget_removeimagetools = 0;
if(gadget_removeimagetools != 1) $(add_all_user_tools);*/

//Для {{TextQuality}}
function textQuality() {

	if(mw.config.get('wgAction')!='view' && mw.config.get('wgAction')!='submit' && mw.config.get('wgAction')!='purge') return;
	if(mw.config.get('wgCanonicalNamespace') != "") return;
	if( document.getElementById("Author") ) { a.firstChild.innerHTML = "Автор"; return;}

	if(mw.config.get('wgPageName').substring(0,8) == "Портал:") return;

	var a = document.getElementById("ca-nstab-main"); if(!a) return;

	var q = document.getElementById("textquality");
	if( q ) {
		var t = q.className;
		var new_img = document.createElement("img");
                if(t == 'Проверенные тексты') new_img.setAttribute("src", "//upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Compar%C3%A9.png/10px-Compar%C3%A9.png");
		else new_img.setAttribute("src", "/wiki/Special:Filepath/"+t.substring(0,t.length-1)+'%25.png');
		new_img.setAttribute("title", "уровень полноты статьи: "+t.substring(0,t.length-1)+'%');
		a.firstChild.appendChild(new_img);
	}

	var q = document.getElementById("pr_index");
	if( q ) {
		href = q.firstChild; if(!href) return;
		q.removeChild(href);
		href.innerHTML = "<img src='//upload.wikimedia.org/wikipedia/commons/thumb/9/92/Open_book_nae_02.svg/20px-Open_book_nae_02.svg.png' />";
		href.setAttribute("title", "Смотреть список текстов и принимать участие в их исправлении");
		var new_li = document.createElement("li");
		new_li.appendChild(href); 
		a.parentNode.insertBefore(new_li,a.nextSibling);
	} 
	else {
		if( ! document.getElementsByClassName("pagenumber")) {
			var c = document.getElementById("contentSub");
			c.innerHTML = c.innerHTML + "<span></span>";
		}
	}
}


$(textQuality)

// from //de.wiktionary.org/wiki/MediaWiki:Common.js by [[wikt:de:User:Melancholie]] Interprojekt-Links ([[mediazilla:708|Bug 708]])

 //mw.util.addCSS('#interProject, #sisterProjects {display: none; speak: none;} #p-tb .pBody {padding-right: 0;}');
 $( '#interProject, #sisterProjects' ).css({'display': 'none', 'speak': 'none'});
 $( '#p-tb .pBody' ).css( {'padding-right': '0'} );
 function iProject() {
  if (document.getElementById("interProject")) {
   var iProject = document.getElementById("interProject").innerHTML;
   var interProject = document.createElement("div");
   interProject.style.marginTop = "0.7em";
   interProject.innerHTML = '<h5><a href="//meta.wikimedia.org/wiki/Meta:SisterProjects">Братские проекты<\/a><\/h5><div class="pBody">'+iProject+'<\/div>';
   document.getElementById("p-tb").appendChild(interProject);
  }
 }

$(iProject);

/**********************
*** Automatically generate page footer from values in {{отексте}}
*** by [[user:GrafZahl]]
**********************/

/* 13.03.2012: функция переписана с нуля с использованием jQuery */

$(function() {
    if ( !(mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 4)
	//|| !$('#bodyContent').length
	|| !($('#headerprevious a').length || $('#headernext a').length)
	|| $('#nofooter').length
	|| $('#ws-footer .headertemplate').length )
	return;
    var ftr, h = {
		override: $('#header_override'),
		sub: $('#contentSub > span.subpages'),
		cont: $('#header_contents a'),
		coll: $('#header_coll_text a'),
		cycle: $('#header_cycle_text a'),
		author: $('#header_author_text a')
    };

    ftr = (h.override.length) ? h.override.clone().css({'display': 'inline'}) :
	(h.sub.length) ? h.sub.html().replace(/&lt;\s+/,'').replace(/\s+\|\s+/g,': ') :
	(h.cont.length) ? h.cont.clone() :
	(h.coll.length) ? h.coll.clone() :
	(h.cycle.length) ? h.cycle.clone() :
	(h.author.length) ? h.author.clone() :
	'<a href="#top">Наверх</a>';

    var footer = $('#headertemplate').clone().attr('id','footertemplate').css({'margin-top': '1em'});
    footer.find('span').removeAttr('id');
    if($('#old_spelling').length)
	footer.find('tr').addClass('serif');
    var title = footer.find('td.header_title').css({'width': '40%', 'font-size': '90%'}).html(ftr);
    $('#catlinks').before(footer);
});

// Картинки-значки для защищённых страниц
// 24.02.2011 После обновления ПО переменная wgRestrictionEdit не всегда определена. Кроме того в соответствии с [[:mw:ResourceLoader/JavaScript Deprecations]] настоятельно рекомендуется получать такие значения только через mediaWiki.config.get(). -- Sergey kudryavtsev
if (mw.config.get("wgAction") == "view" && mw.config.get("wgCanonicalNamespace") != "Special") {
  var restriction = null;
  var addCSS = function (text) { mw.loader.using('mediawiki.util').then(function () { mw.util.addCSS(text); }); };
  if (mw.config.get("wgArticleId") == 0) {
    restriction = mw.config.get("wgRestrictionCreate");
  } else {
    restriction = mw.config.get("wgRestrictionEdit");
  };
  if (restriction == 'autoconfirmed' ) {
    addCSS('h1.firstHeading {background: url(//upload.wikimedia.org/wikipedia/commons/thumb/6/64/Crystal_Clear_action_lock3.png/23px-Crystal_Clear_action_lock3.png) center right no-repeat; margin: 0 1em 0 0;}');
  } else if ( restriction == 'sysop') {
    addCSS('h1.firstHeading {background: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Crystal_Clear_action_lock.png/23px-Crystal_Clear_action_lock.png) center right no-repeat; margin: 0 1em 0 0;}');
  };
};

// Функция из [[:oldwikisource:MediaWiki:Base.js]], необходимая для работы [[:oldwikisource:MediaWiki:InterWikiTransclusion.js]].
function get_elements_by_classname(classname, tagname) {
	if(document.getElementsByClassName) return document.getElementsByClassName(classname);
	var ml = new Array();
	var l = document.getElementsByTagName(tagname);
	for (var i=0; i< l.length; i++) {
		var a = l[i]; 
		if( a.className.indexOf(classname) !=-1 ) ml[ml.length] = l[i];
	}
	return ml;
}
// Массивы из [[:oldwikisource:MediaWiki:Base.js]], необходимые для работы [[:oldwikisource:MediaWiki:IndexForm.js]].
var page_ns_prefixes  = {'ru': 'Страница'};
var index_ns_prefixes = {'ru': 'Индекс'};

/* Сообщения для расширения OCR */
self.ws_messages = { 
	'author':'Автор',
	'translator':'Переводчик',
	'editor':'Редактор',
	'publisher':'Издатель',
	'place':'Место',
	'volume':'Том',
	'school':'Школа',
	'book':'Книга',
	'collection':'Сборник',
	'journal':'Журнал',
	'phdthesis':'Диссертация, отчёт',
	'dictionary':'Словарь, энциклопедия',
	'progress':'Progress',
	'progress_T':'Закончено',
	'progress_V':'Нужно проверить',
	'progress_C':'Нужно вычитать',
	'progress_MS':'Готово для согласования и разделения',
	'progress_OCR':'Нужно распознать',
	'progress_X':'Исходный файл — часть большего текста или смесь нескольких источников',
	'progress_L':'Исходный файл содержит ошибки (отсутствуют страницы, перепутан порядок страниц и т.п.)',
	'Image':'Изображение',
	'Source':'Источник'
}

function ws_msg(name) {
  var m = self.ws_messages[name];
  if (m) {
    return m;
  } else {
    return name;
  }
}

/* The scripts imported from wikisource.org */
// mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript');
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:InterWikiTransclusion.js&action=raw&ctype=text/javascript');
/* mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:OCR.js&action=raw&ctype=text/javascript'); - кнопка OCR не нужна, работает только с английским языком*/
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:Corrections.js&action=raw&ctype=text/javascript');
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:IndexForm.js&action=raw&ctype=text/javascript');
mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:Dictionary.js&action=raw&ctype=text/javascript');

/* Fix for Universal Language Selector bug */
$(function() {
	$( "span[class^='lang']" ).css( "font-family", "" );
});
/* Fix for OCR page image display bug */
$(function() {
	$( ".prp-page-image img" ).css( { "width" : "", "height" : "" } );
});

//toggle editions (test)
$( "#editions_toggle" ).on("click touch", function() {
	$( "#editions_cont" ).css("display", function() {
		return ($( this ).css("display") == "none") ? "block" : "none";
	});
});

//// Footer
$(function() {
    if ( !$('#ws-footer').length
//    || !$('#bodyContent').length    // Есть только в скинах monobook и vector. Зачем это вообще проверялось? Взято из ф-ции показа нижней навигационной строки, см. выше
    || $('#nofooter').length )
        return;

    var footer = $('#ws-footer').clone().attr('id', 'ws-footer-inline').css({'display': 'inline', 'margin-top': '1em'});
    if ( $('#footertemplate').length )
        $('#footertemplate').before(footer);
    else
        $('div.mw-parser-output').append(footer);
});

/* Fix for overlapping page numbers */
$(function() {
	if ( $( "span.pagenumber" ).length < 2 ) return;
	var pr_top, pr_left, pr_width;
	$( "span.pagenumber" ).each( function() {
		if ( pr_top ) {
			if ( $(this).parent().position().top == pr_top ) {
				$(this).parent().css({ left: pr_left + pr_width + 3 });
			}
		}
		pr_top = $(this).parent().position().top;
		pr_left = $(this).parent().position().left;
		pr_width = $(this).width();
	});
});

/* relocate the Yat button */
$("#pre-reform").appendTo("#firstHeading").css( { "position" : "static", "float" : "right", "display" : "block" } );

/* End of mw.loader.using callback */
//} );
/* DO NOT ADD CODE BELOW THIS LINE */