Участник:Невозвращенецъ/monobook.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.
/*
*/
//Этот скрипт замещает на страницах сравнений версий надпись в левом верхнем углу
//''(Различия между версиями)'' на кнопки быстрого отката и предупреждения участника
//За инструкциями обращайтесь на страницу обсуждения.
// Инструмент отката создан Lorian
function getElementsByClass(searchClass,node,tag) {
  // Функции с сайта http://www.dustindiaz.com/getelementsbyclass/
  var classElements = new Array();
  if ( node == null )
    node = document;
  if ( tag == null )
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}
 
// _GET code из NoGray JS Library http://www.nogray.com/new_site/
var _GET = new Array();
var _uri = location.href;
 
var _temp_get_arr = _uri.substring(_uri.indexOf('?')+1, _uri.length).split("&");
 
var _temp_get_arr_1 = new Array();
 
for(_get_arr_i=0; _get_arr_i<_temp_get_arr.length; _get_arr_i++){
  _temp_get_arr_1 = _temp_get_arr[_get_arr_i].split("=");
  _GET[decodeURI(_temp_get_arr_1[0])] = decodeURI(_temp_get_arr_1[1]);
}
 
delete _uri; delete _temp_get_arr; delete _temp_get_arr_1;
 
function getMessage (where, user1, user2) {
  var message = prompt ('Описание правки', '');
  window.location = 'http://cyclowiki.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&'+where+'=2&user1='+user1+'&user2='+user2+'&message='+message;
}
 
addOnloadHook(function (){
  if (location.href.match(/diff=/)) {
    // Get username of submitter
    var user1 = getElementsByClass('diff-otitle',null,'td'); user1 = user1[0].getElementsByTagName('a')[2].innerHTML;
    var user2 = getElementsByClass('diff-ntitle',null,'td'); user2 = user2[0].getElementsByTagName('a')[3].innerHTML;
    document.getElementById('contentSub').innerHTML = '(<a href="http://cyclowiki.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&revert=1&user1='+user1+'&user2='+user2+'">Откатить</a> | Комментарий: <a href="http://cyclowiki.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&revert=2&user1='+user1+'&user2='+user2+'">Тест</a> | <a href="http://cyclowiki.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&revert=3&user1='+user1+'&user2='+user2+'">Вандализм</a> | <a href="http://cyclowiki.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&revert=4&user1='+user1+'&user2='+user2+'">Спам</a> | <a href="javascript:var message = getMessage(\'revert=5\', \''+user1+'\', \''+user2+'\');">Другая причина</a>)(Предупреждения: <a href="http://cyclowiki.org/w/index.php?title=User_talk:'+user2+'&action=edit&section=new&warn=1">Тест</a> | <a href="http://cyclowiki.org/w/index.php?title=User_talk:'+user2+'&action=edit&section=new&warn=2">Вандализм</a> | <a href="http://cyclowiki.org/w/index.php?title=User_talk:'+user2+'&action=edit&section=new&warn=3">Спам</a>)';
  } else if (location.href.match(/revert=1/)) {
    document.getElementById('wpSummary').value = 'Правка [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (№' + _GET['oldid']+') откачена к версии участника [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']]';
    document.getElementById('editform').submit();
  } else if (location.href.match(/revert=2/)) {
    document.getElementById('wpSummary').value = 'Правка [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (№' + _GET['oldid']+') откачена к версии участника [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']] (тестовая правка)';
    document.getElementById('editform').submit();
  } else if (location.href.match(/revert=3/)) {
    document.getElementById('wpSummary').value = 'Правка [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (№' + _GET['oldid']+') откачена к версии участника [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']] (вандализм)';
    document.getElementById('editform').submit();
  } else if (location.href.match(/revert=4/)) {
    document.getElementById('wpSummary').value = 'Правка [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (№' + _GET['oldid']+') откачена к версии участника [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']] (спам)';
    document.getElementById('editform').submit();
  } else if (location.href.match(/revert=5/)) {
    document.getElementById('wpSummary').value = 'Правка [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']]  (№' + _GET['oldid']+') откачена к версии участника [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']] ('+_GET['message']+')';
    document.getElementById('editform').submit();
  } else if (location.href.match(/warn=1/)) {
    document.getElementById('wpTextbox1').value = '{'+'{sub'+'st:тест}}—~~'+'~~';
    document.getElementById('editform').submit();
  } else if (location.href.match(/warn=2/)) {
    document.getElementById('wpSummary').value = 'Предупреждение';
    document.getElementById('wpTextbox1').value = '{'+'{sub'+'st:вандализм}}—~~'+'~~';
    document.getElementById('editform').submit();
  } else if (location.href.match(/warn=3/)) {
    document.getElementById('wpTextbox1').value = '{'+'{sub'+'st:спам}}—~~'+'~~';
    document.getElementById('editform').submit();
  }
});
/*

*/
// Hotcat
importScript('User:Hotcat/HotCat.js');
//Скрипт для перевода текста в нижний регистр	 
importScript('Участник:X-romix/lowercase.js');
	//Скрипт показывает переполнение поля «Описание изменений».	 
	importScript('Участник:X-romix/summary show overload.js');	 
	// По мотивам http://en.wikipedia.org/wiki/User:Mr.Z-man/refbuttons.js	 
	// CC-BY-SA	 
 
	function refbuttons()	 
	{	 
	if (mwCustomEditButtons)	 
	{	 
	var time = new Date();	 
	var curday = time.getDate();	 
	var curmonth = time.getMonth() + 1;	 
	var nowyear = time.getYear() + 1900;	 
	var nowday = curday.toString();	 
	if (curday < 10)	 
	{	 
	nowday = "0" + nowday;	 
	}	 
	var nowmonth = curmonth.toString();	 
	if (curmonth < 10)	 
	{	 
	nowmonth = "0" + nowmonth;	 
	}	 
 
	mwCustomEditButtons[mwCustomEditButtons.length] = {	 
	"imageFile": "http://upload.wikimedia.org/wikipedia/commons/9/91/Button_cite_web.png",	 
	"speedTip": "cite web",	 
	"tagOpen": "<ref>{{cite web\n|author=\n|authorlink=\n|datepublished=\n|url=\n|title=\n|format=\n|work=\n|publisher=\n|accessdate=" + nowyear + "-" + nowmonth + "-" + nowday + "\n|lang=\n|description=\n}}",	 
	"tagClose": "</ref>",	 
	"sampleText": ""	 
	};	 
 
	mwCustomEditButtons[mwCustomEditButtons.length] = {	 
	"imageFile": "http://upload.wikimedia.org/wikipedia/commons/2/2c/Button_cite_news.png",	 
	"speedTip": "cite news",	 
	"tagOpen": "<ref>{{cite news\n|author=\n|title=\n|url=\n|work=\n|publisher=\n|date=\n|accessdate=" + nowyear + "-" + nowmonth + "-" + nowday + "\n}}",	 
	"tagClose": "</ref>",	 
	"sampleText": ""	 
	};	 
 
	mwCustomEditButtons[mwCustomEditButtons.length] = {	 
	"imageFile": "http://upload.wikimedia.org/wikipedia/commons/e/ef/Button_cite_book.png",	 
	"speedTip": "книга",	 
	"tagOpen": "<ref>{{книга\n|автор=\n|заглавие=\n|ответственный=\n|ссылка=\n|место=\n|издательство=\n|год=\n|том=\n|страниц=\n|страницы=\n|isbn=\n}}",	 
	"tagClose": "</ref>",	 
	"sampleText": ""	 
	};	 
	}	 
	}	 
 
	addOnloadHook(refbuttons);
importScript('User:Alex_Smotrov/logpage.js');
 
//Скрипт для транслитерации латиницы
importScript('Участник:X-romix/translit.js');
 
//Скрипт проверяет правильность закрытия тегов
importScript('Участник:X-romix/check tags.js');
sigWarning = true //Предупреждение об отсутствии подписи на страницах дискуссий
// [[ru:MediaWiki:Extraeditbuttons.js]]
// <pre><nowiki>
 
// This is based on the original code on Wikipedia:Tools/Editing tools
//
// The original code was on the project page and needed to be cut and paste to the user's
// monobook.js page. However, this caused problems with the quote marks. So I have moved 
// it to its own page. 
//
// I do not know a lot about Javascript so please do not ask for a complicated change
//
// See the [[:en:User:MarkS/Extra edit buttons]] for changes log
 
function InsertButtonsToToolBar()
{
//Сноски
mwCustomEditButtons[mwCustomEditButtons.length] = { 
   "imageFile": "http://upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png", 
    "speedTip": "Сноски", 
    "tagOpen": "<ref>", 
    "tagClose": "</ref>", 
    "sampleText": ""} 
//Перенаправлення 
mwCustomEditButtons[mwCustomEditButtons.length] = { 
   "imageFile": "http://upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png", 
    "speedTip": "Перенаправлення", 
    "tagOpen": "#Redirect [[", 
    "tagClose": "]]", 
    "sampleText": "назва сторінки"} 
//Template button
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png",
    "speedTip": "Шаблон",
    "tagOpen": "{{",
    "tagClose": "}}",
    "sampleText": "Назва шаблону"}
//Underline 
mwCustomEditButtons[mwCustomEditButtons.length] = { 
   "imageFile": "http://upload.wikimedia.org/wikipedia/commons/f/fd/Button_underline.png", 
    "speedTip": "Підкреслення", 
    "tagOpen": "<u>", 
    "tagClose": "</u>", 
    "sampleText": "Підкреслений текст"}
//Strike-Out Button
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png",
    "speedTip": "Закреслений текст",
    "tagOpen": "<s>",
    "tagClose": "</s>",
    "sampleText": "Закреслений текст"}
//Наголос
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/0/0e/Button_acute_accent.png",
    "speedTip": "Наголос",
    "tagOpen": "́",
    "tagClose": "",
    "sampleText": ""}
//Center-Text Button
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/5/5f/Button_center.png",
    "speedTip": "Вирівняти по центру",
    "tagOpen": "<center>",
    "tagClose": "</center>",
    "sampleText": ""}
//Line break button
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/1/13/Button_enter.png",
    "speedTip": "Розрив",
    "tagOpen": "<br />",
    "tagClose": "",
    "sampleText": ""}
//Small Text
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/5/58/Button_small.png",
    "speedTip": "Менший шрифт",
    "tagOpen": "<small>",
    "tagClose": "</small>",
    "sampleText": "Текст малим шрифтом"}
//Gallery
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/1/12/Button_gallery.png",
    "speedTip": "Галерея",
    "tagOpen": "\n<center><gallery>\n",
    "tagClose": "\n</gallery></center>",
    "sampleText": "Файл:Назва_зображення1.jpg|Опис_зображення1\n\Файл:Назва_зображення2.jpg|Опис_зображення2"}
//Secondary Headline
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/7/78/Button_head_A2.png",
    "speedTip": "Підзаголовок",
    "tagOpen": "\n===",
    "tagClose": "===",
    "sampleText": "Підзаголовок"}
//Colour
mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png",
    "speedTip": "Кольоровий текст",
    "tagOpen": "<span style='color: ColorName'>",
    "tagClose": "</span>",
    "sampleText": "Кольоровий текст"}
}
addOnloadHook( InsertButtonsToToolBar );
 
// </nowiki></pre>
// Russian Wiki Linker
// Find link for selected text
 
mwCustomEditButtons['wikilinker'] = [WikiLinker, 'commons/b/bd/Wikilinker.png', 'Вики-ссыльщик. Подбирает вики-ссылку для выделенного слова или словосочетания']
 
importScript('MediaWiki:Stemmer.js')
 
function stemPhrase(phrase) {
   phrase=phrase.substr(0,100);
 
   phrase=phrase.replace(/\s/g, " ");
   phrase=phrase.replace(/—/g, " ");
   phrase=phrase.replace(/»/g, "");
   phrase=phrase.replace(/«/g, "");
   phrase=phrase.replace(/\%/g, "");
   phrase=phrase.replace(/\'/g, "");
   phrase=phrase.replace(/\"/g, "");
   phrase=phrase.replace(/_/g, " ");
   phrase=phrase.replace(/\!/g, " ");
   phrase=phrase.replace(/\?/g, " ");
   phrase=phrase.replace(/\./g, " ");
   phrase=phrase.replace(/\,/g, " ");
   phrase=phrase.replace(/\:/g, " ");
   phrase=phrase.replace(/\s+/g, " ");
 
   var rustemmer = new RussianStemmer();
 
   var arr = phrase.split(' ')
   var res = '';
   var next_res = '';
 
   var n = 0;
 
   for (var i in arr) {
      rustemmer.setCurrent(arr[i]);
      rustemmer.stem();
      next_res = rustemmer.getCurrent();
      if (next_res.length > 0) {
        if (next_res != arr[i] && n < 3) {
           res += next_res + '* ';
           n++; // в строке запроса может быть не более 3 звёздочек
        }
        else {
           res += next_res + ' ';
        }
      }
   }
 
   // trim string
   res = res.replace(/(^\s+)|(\s+$)/g, "");
 
   return res;
}
 
function WikiLinker() {
 
    var xmlhttp;
    var prepWin;
 
    var CantWork = 'Сначало нужно выделить слово или словосочетание';
    var range;
    var browserType = 0;
 
    var requestLength = 0; // длина запроса в словах
 
    var txt = '';
    var wpTextbox1 = document.editform.wpTextbox1;
 
    var winScroll = document.documentElement.scrollTop;
 
    wpTextbox1.focus();
 
    if (typeof wpTextbox1.selectionStart != 'undefined' && (navigator.productSub > 20031000 || is_safari || is_opera)) { //Mozilla/Opera/Safari3
        browserType = 1;
 
        var textScroll = wpTextbox1.scrollTop;
        var startPos = wpTextbox1.selectionStart;
        var endPos = wpTextbox1.selectionEnd;
        txt = wpTextbox1.value.substring(startPos, endPos);
 
        // отсекаем последний пробел
        if (txt.slice(-1) == ' ') {
           txt = txt.slice(0,-1);
           endPos = endPos - 1;
        }
 
        if (txt == '') {
            alert(CantWork);
        }
        else {
            processText();
        }
        wpTextbox1.selectionStart = startPos;
        wpTextbox1.selectionEnd = startPos + txt.length;
        wpTextbox1.scrollTop = textScroll;
    } else if (document.selection && document.selection.createRange) { //IE
        browserType = 2;
 
        range = document.selection.createRange();
        txt = range.text;
 
        // отсекаем последний пробел
        if (txt.slice(-1) == ' ') {
           txt = txt.slice(0,-1);
           range.moveEnd('character', -1);
        }
 
        if (txt == '') {
            alert(CantWork);
        }
        else {
            processText();
        }
    } else { // other browsers
        alert(CantWork);
    }
 
    document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
 
    function processText() {
        var preparedText = stemPhrase(txt);
 
        requestLength = preparedText.split(' ').length;
 
        loadXMLDoc('http://ru.wikipedia.org/w/api.php?action=query&list=search&srlimit=5&srprop=&srredirects=1&format=json&srsearch=' + preparedText);
    }
 
    function loadXMLDoc(url) {
        xmlhttp = GetXmlHttpObject();
        if (xmlhttp == null) {
            alert("Your browser does not support XMLHTTP!");
            return;
        }
        xmlhttp.onreadystatechange = stateChanged;
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }
 
    function GetXmlHttpObject() {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            return new XMLHttpRequest();
        }
        if (window.ActiveXObject) {
            // code for IE6, IE5
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
        return null;
    }
 
    // сравнение по длине строки, без учёта уточнения в скобках
    // чтобы для "Категори*" выдавалось "Категория (значения)", а не "Классификация"
    function compareStringLengths (a, b) {
      a = a.replace(/ \(.*\)/g, "");
      b = b.replace(/ \(.*\)/g, "");
 
      if ( a.length < b.length ) return -1;
      if ( a.length > b.length ) return 1;
      return 0;
    }
 
    function initialLower(str) {
       return str.substr(0, 1).toLowerCase() + str.substr(1);
    }
 
    function stateChanged() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                var resp = eval('(' + xmlhttp.responseText + ')');
 
                if (typeof resp.query.search[0] != 'undefined') {
 
                   var page_name = resp.query.search[0].title;
 
                   // если в запросе было только одно слово, то выбираем самое короткое название из первых трёх результатов
                   // чтобы для "Аглией" выдавалось "Англия", а не "Англиканство"
 
                   if (requestLength == 1) {
                      var resar = [];
 
                      for (var j=0;j<=4;j++) {
                         if (typeof resp.query.search[j] != 'undefined' && txt.substr(0,3).toLowerCase() == resp.query.search[j].title.substr(0,3).toLowerCase() ) {
                            resar.push(resp.query.search[j].title);
                         }
                      }
 
                      resar.sort(compareStringLengths);
 
                      if (typeof resar[0] != 'undefined') {
                         page_name = resar[0]
                      }
                   }
 
                   // для "форумы" будет "[[форум]]ы", а не "[[форум|форумы]]"
                   if ( initialLower(txt.substr(0, page_name.length)) == initialLower(page_name)  &&  page_name.length <= txt.length) {
                      txt = '[[' + txt.substr(0, page_name.length) + ']]' + txt.substr(page_name.length, txt.length - page_name.length) ;
                   }
                   else {
                      txt = '[[' + page_name + '|' + txt + ']]'; 
                   }
                }
                else {
                   txt = '[[' + '|' + txt + ']]';
                }
 
               if (browserType == 1) { //Mozilla/Opera/Safari3
                   wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos);
 
                   wpTextbox1.selectionStart = startPos;
                   wpTextbox1.selectionEnd = startPos + txt.length;
                   wpTextbox1.scrollTop = textScroll;
               } else if (browserType == 2) { //IE
                    range.text = txt;
 
               } else { // other browsers
                   alert(CantWork);
               }
 
            }
        }
    }
}
//Кнопки описания изменений
if (wgAction == 'edit' || wgAction == 'submit') {
  addOnloadHook(function(){
   addSumButton('сноска', 'сносим', '')
   addSumButton('введение', 'вводная часть статьи', '')
   addSumButton('вопрос', 'вопрос', '')
   addSumButton('ответ', 'ответ', '')
   addSumButton('комментарий', 'комментарий', '')
   addSumButton('уточнение', 'уточнение', '')
   addSumButton('неоднозначность', 'разрешение неоднозначности', '')
   addSumButton('упрощение', 'упрощение ссылок', '')
   addSumButton('источник', 'источник', '')
  })
}
//Скрипт заменяет кнопку "Найти" на выпадающий список пространств, в которых вы часто ищете
// based on [[:en:User:Ilmari_Karonen/searchnsmenu.js]] и [[:tr:Участник:Afinogenoff/searchlist.js]]
//var searchInNewWindow = true;
 
 
if (!window.searchInNewWindow) searchInNewWindow = false;
 
var searchNS = [
['','найти в…'],
[-5,'(в этом окне)'],
[-1,'По умолчанию'],
[0,'Статьи'],
[1,'Статьи (обс)'],
[2,'Участник'],
[3,'Участник (обс)'],
[4,'Викиреальность'],
[5,'Викиреальность (обс)'],
[6,'Изображение'],
[7,'Изобр. (обс)'],
[8,'Mediawiki'],
[9,'Mediawiki (обс)'],
[10,'Шаблон'],
[11,'Шаблон (обс)']
]
 
 
addOnloadHook(searchCreateMenu);
 
function searchCreateMenu() {
 searchForm = document.getElementById('searchform') //global var
 if (!searchForm) return;
 //create hidden input
 searchHidden = document.createElement('input'); //global var
 searchHidden.type = 'hidden';
 searchHidden.value = '1';
 searchForm.fulltext.parentNode.appendChild(searchHidden);
 //create select
 searchSel = document.createElement('select'); //global var
 for (var i in searchNS)
   searchSel.options[searchSel.options.length] =  new Option(searchNS[i][1], searchNS[i][0]);
 searchSetTarget();
 searchSel.style.margin = '0';
 searchSel.style.marginTop = '2px';
 searchSel.style.fontSize = '90%';
 searchSel.onchange = searchOnSelect;
 searchForm.fulltext.parentNode.insertBefore(searchSel, searchHidden);
 //hide normal Search button if not IE
 if (is_opera || is_gecko){
   searchForm.fulltext.style.display = 'none';
   searchSel.style.width = '65px';
 }
}
 
function searchOnSelect() {
   if (this.selectedIndex == 0) return;
   var ns = this.options[this.selectedIndex].value;
   if (ns == -5) { //new window switch
     searchInNewWindow = !searchInNewWindow;
     searchSetTarget();
   } else { //do search
     if (searchForm.search.value == '')
         searchForm.search.value = '?'; 
     else {
       searchHidden.name = (ns == -1) ? '' : 'ns' + ns;
       searchForm.fulltext.click();
     } 
   }
   this.selectedIndex = 0;
}
 
function searchSetTarget(){
 if (searchInNewWindow)  {
   searchForm.target = '_blank';
   searchSel.options[1].text =  '(в НОВОМ окне)';
 } else {
   searchForm.target = '';
   searchSel.options[1].text =  '(в этом окне)';
 }
}

// Список новых страниц в свернутом блоке слева. Удобнота.
importScript('Участник:Hotcat/newpages.js');
//Please leave this link: [[User:ais523/editcount.js]]
//<pre><nowiki>
// <source lang=javascript>
// Этот скрипт меняет -- на — перед вашей подписью, если вы используете верхнюю кнопку для подписей ваших сообщений.
 
(function () {
    var oldAddButton = addButton;
    if (typeof(oldAddButton) != 'function') return;
    addButton = function () {
        if (arguments.length > 2)
            arguments[2] = arguments[2].replace(/^--(~+)$/, '— $1');
        oldAddButton.apply(this, arguments);
    };
})();
 
// </source>
if (wgNamespaceNumber >= 0) addOnloadHook(pagePortlet);
function pagePortlet(){
 var ul, list, obj, ii;
 //добавить новый портлет 'страница'
 beforePortlet = document.getElementById('p-tb');
 if (!beforePortlet) return;
 var pPage = document.createElement('div');
 pPage.innerHTML = '<h5>страница</h5><div class=pBody><ul></ul></div>';
 pPage.className = 'portlet';  pPage.id = 'p-page';
 beforePortlet.parentNode.insertBefore(pPage, beforePortlet);
 //переместить туда 'Ссылки сюда' и 'Связанные правки'
 moveLinkToPortlet('p-page', 't-whatlinkshere');
 moveLinkToPortlet('p-page', 't-recentchangeslinked');
 //вычислить переменные для тулсервера (например dbname=ruwiki_p) 
 var wikilang = wgServer.split('.')[0].substring(7);
 var wikifam = wgServer.split('.')[1];
 var dbname = (wikifam == 'wikipedia')? 'wiki' : wikifam;
 dbname = wikilang + dbname + '_p';
 //Ссылки:
 addPortletLink('p-page', 
  '/index.php/Special:PrefixIndex/' + wgPageName + '/', 'Подстраницы','',
  'Подстраницы этой страницы');
 addPortletLink('p-page', 
 '/index.php/Special:Log?page='+wgPageName, 'Журналы', 'ca-logs', 
 'Просмотр журналов для этой страницы');
 addPortletLink('p-page', 
  '/index.php/'+wgPageName+'?action=purge', 'Очистить кеш', 'ca-purge', 
  'Очистка кэша сервера для этой страницы');
 addPortletLink('p-page',
  'http://cyclowiki.org/index.php/Special:Patrol', 'Патрулировать', 'mycontrib', 
  'Патрулировать свежие правки');
 addPortletLink('p-page', 
  'http://cyclowiki.org/index.php/Special:Contributions/newbies', 'Новички','',
  'Правки новичков');
 
}
//вспомогательная функция перемещает  ссылку linkId в portlet portletId
function moveLinkToPortlet(portletId, linkId, newText){
 var portlet, ul, link;
 if (!(portlet = document.getElementById(portletId))) return;
 if (!(ul = portlet.getElementsByTagName('ul')[0])) return;
 if (!(link = document.getElementById(linkId))) return;
 ul.appendChild(link);
 if (newText) link.firstChild.innerHTML = newText;
}
// Source: Участник:Lockal/prepend.js. CC-BY-SA
 
var templs, prompts; // Произвольный массив с шаблонами можно создать в monobook.js
 
if(templs == null) {
  var templs = ['\{\{Устарело}}', '\{\{subst:hallo|[[Участник:Hotcat|Hotcat]]}}'];
}
if(prompts == null) {
  var prompts = ['\{\{moar|'];
}
 
function prompter(qwe) {
 var reply = prompt(qwe+'?', '');
 var actoken = (typeof autoClickToken == 'function') ? '&actoken='+autoClickToken() : '';
 document.location.href = wgServer+wgScript+'?title='+wgPageName+'&action=edit&autoedit=s~^~'+qwe+reply+'}}\\n~g;&autoclick=wpSave'+actoken+'&autosummary='+qwe+reply+'}}';
}
 
function addvariants(){
 style = 'background:#C2F2FF none repeat scroll 0% 0%;border:1px solid #9BD5F5;color:#5B5B5B;cursor:pointer;font-size:80%;line-height:17px;margin:2px;padding:0px 2px;';
 var text = '';
 
 for (var j = 0; j < templs.length; j++) {
  var actoken = (typeof autoClickToken == 'function') ? '&actoken='+autoClickToken() : '';
  text+='<a href="'+wgServer+wgScript+'?title='+wgPageName+'&action=edit&autoedit=s~^~'+templs[j]+'\\n~g;&autoclick=wpSave'+actoken+'&autosummary='+templs[j]+'" style="'+style+'">'+templs[j]+'</a>';
 };
 text+='<br />';
 for (var j = 0; j < prompts.length; j++) {
  text+='<input type="button" onclick="prompter(\''+prompts[j]+'\')" value="'+prompts[j]+'">';
 };
 
 jsMsg(text, 'prepend');
}
 
addOnloadHook(function(){
 if (wgNamespaceNumber >= 0){
  addPortletLink ('p-cactions', '#', 'в начало…', 'prepend');
  document.getElementById('prepend').setAttribute('onclick', 'addvariants()');
 }
});
function getParamValue(paramName) {
  var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
  var h=document.location;
  var m;
  if (m=cmdRe.exec(h)) {
    try { 
      return decodeURI(m[1]);
    } catch (someError) {}
  }
  return null;
};
 
function substitute(data,cmdBody) {
  // alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags);
  var fromRe=RegExp(cmdBody.from, cmdBody.flags);
  return data.replace(fromRe, cmdBody.to);
};
 
function execCmds(data, cmdList) {
  for (var i=0; i<cmdList.length; ++i) {
    data=cmdList[i].action(data, cmdList[i]);
  }
  return data;
}
 
function parseCmd(str) {
  // returns a list of commands
  if (!str.length) return [];
  var p=false;
  switch (str.charAt(0)) {
  case 's':
    p=parseSubstitute(str);
    break;
  case 'j':
    p=parseJavascript(str);
    break;
  default:
    return false;
  }
  if (p) return [p].concat(parseCmd(p.remainder));
  return false;
};
 
function unEscape(str, sep) {
  return str.split('\\\\').join('\\')
        .split('\\'+sep).join(sep)
        .split('\\n').join('\n');
};
 
 
function runJavascript(data, argWrapper) {
  // flags aren't used (yet)
 
  // from the user's viewpoint,
  // data is a special variable may appear inside code
  // and gets assigned the text in the edit box
 
  // alert('eval-ing '+argWrapper.code);
 
  return eval(argWrapper.code);
};
 
function parseJavascript(str) {
  // takes a string like j/code/;othercmds and parses it
 
  var tmp,code,flags;
 
  if (str.length<3) return false;
  var sep=str.charAt(1);
  str=str.substring(2);
 
  tmp=skipOver(str,sep);
  if (tmp) { code=tmp.segment.split('\n').join('\\n'); str=tmp.remainder; }
  else return false;
 
  flags='';
  if (str.length) {
    tmp=skipOver(str,';') || skipToEnd(str, ';');
    if (tmp) {flags=tmp.segment; str=tmp.remainder; }
  }
 
  return { action: runJavascript, code: code, flags: flags, remainder: str };
};
 
function parseSubstitute(str) {
  // takes a string like s/a/b/flags;othercmds and parses it
 
  var from,to,flags,tmp;
 
  if (str.length<4) return false;
  var sep=str.charAt(1);
  str=str.substring(2);
 
  tmp=skipOver(str,sep);
  if (tmp) { from=tmp.segment; str=tmp.remainder; } 
  else return false;
 
  tmp=skipOver(str,sep);
  if (tmp) { to=tmp.segment; str=tmp.remainder; } 
  else return false;
 
  flags='';
  if (str.length) {
    tmp=skipOver(str,';') || skipToEnd(str, ';');
    if (tmp) {flags=tmp.segment; str=tmp.remainder; }
  }
 
  return {action: substitute, from: from, to: to, flags: flags, remainder: str};
 
};
 
function skipOver(str,sep) {
  var endSegment=findNext(str,sep);
  if (endSegment<0) return false;
  var segment=unEscape(str.substring(0,endSegment), sep);
  return {segment: segment, remainder: str.substring(endSegment+1)};
}
 
function skipToEnd(str,sep) {
  return {segment: str, remainder: ''};
}
 
function findNext(str, ch) {
  for (var i=0; i<str.length; ++i) {
    if (str.charAt(i)=='\\') i+=2;
    if (str.charAt(i)==ch) return i;
  }
  return -1;
};
 
function runOnLoad(f) {
  if (window.addEventListener) {
    window.addEventListener("load",f,false);
  }
  else if (window.attachEvent) {
    window.attachEvent("onload",f);
  }
  else {
    window._old_popup_autoedit_onload = window.onload;
    window.onload = function() {
      window._old_popup_autoedit_onload();
      f();
    }
  }
};
 
window.autoEdit=function() {
  if (window.autoEdit.alreadyRan) return false;
  window.autoEdit.alreadyRan=true;
  var cmdString=getParamValue('autoedit');
  if (cmdString) {
    try { 
      var editbox=document.editform.wpTextbox1;
    } catch (dang) { return; }
    var cmdList=parseCmd(cmdString);
    var input=editbox.value;
    var output=execCmds(input, cmdList);
    editbox.value=output;
    // wikEd user script compatibility
    if (typeof(wikEdUseWikEd) != 'undefined') {
      if (wikEdUseWikEd == true) {
        WikEdUpdateFrame();
      }
    }
  }
 
  var summary=getParamValue('autosummary');
  if (summary) document.editform.wpSummary.value=summary;
 
  var minor=getParamValue('autominor');
  if (minor) {
    switch (minor) {
    case '1':
    case 'yes':
    case 'true':
      document.editform.wpMinoredit.checked=true;
      break;
    case '0':
    case 'no':
    case 'false':
      document.editform.wpMinoredit.checked=false;
    }
  }
 
  var watch = getParamValue('autowatch');
  if (watch) {
    switch (watch) {
      case '1':
      case 'yes':
      case 'true':
        document.editform.wpWatchthis.checked = true;
        break;
      case '0':
      case 'no':
      case 'false':
        document.editform.wpWatchthis.checked = false;
    }
  }
 
  var btn=getParamValue('autoclick');
  if (btn) {
    if (document.editform && document.editform[btn]) {
      var headings=document.getElementsByTagName('h1');
      if (headings) {
        var div=document.createElement('div');
        var button=document.editform[btn];
        div.innerHTML='<font size=+1><b>The "' + button.value + 
          '" button has been automatically clicked.' + 
          ' Please wait for the next page to load.</b></font>';
        document.title='('+document.title+')';
        headings[0].parentNode.insertBefore(div, headings[0]);
        button.click();
      }
    } else {
      alert('autoedit.js\n\nautoclick: could not find button "'+ btn +'".');
    }  
  }
};
 
runOnLoad(autoEdit);
//Преобразование ссылок в читабельный вид
//Часть кода позаимствована из http://ru.wikipedia.org/wiki/MediaWiki:Wikificator.js
//Автор: X-romix
 
var XRomix_RefConv_CantWork = 'RefConv не может работать в вашем браузере.\n\RefConv cannot work in your browser' // английский текст для тех, кто не видит русские буквы
var XRomix_RefConv_FullText = 'Эта кнопка предназначена для преобразования ссылок в читабельный вид. Выберите фрагмент текста.';
 
//Добавляет кнопку
function add_XRomix_RefConv_Button(){
	var toolbar = document.getElementById('toolbar')
	var textbox = document.getElementById('wpTextbox1')
	if (!textbox || !toolbar) return
	var i = document.createElement('img')
	i.src = 'http://upload.wikimedia.org/wikipedia/ru/0/0d/Button-RefConv.png'
	//i.src = 'http://upload.wikimedia.org/wikipedia/ru/7/75/Button-Test.PNG'
	
	i.alt = i.title = 'Преобразование ссылки в читаемый вид'
	i.onclick = XRomix_RefConv1
	i.style.cursor = 'pointer'
	toolbar.appendChild(i)
 
} 
 
//Этот код выполняется в начале.
if (wgAction == 'edit' || wgAction == 'submit'){
  addOnloadHook(add_XRomix_RefConv_Button)
}
 
 
//Функция по преобразованию текста
function XRomix_RefConv1(){
 //Проверяем, поддерживает ли браузер регулярные выражения (RegExp)	
 if (('code'.replace(/d/g, 'r') != 'core') 
    || (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
  { alert(XRomix_RefConv_CantWork); return }
 setWpSummary();
 var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1
 
 wpTextbox1.focus();
 
 var winScroll=getScrollTop(wpTextbox1)//remember window scroll
 var startPos = getSelectionStart(wpTextbox1) 
 var endPos = startPos+getSelectionLength(wpTextbox1)
 
 if (startPos==-2)
 // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку
   { alert(XRomix_RefConv_CantWork); return }
 
	if (startPos==endPos){
	  while (1==1){
		if (startPos==0) break;
		var str= wpTextbox1.value.substring(startPos, startPos+7);
		if (str.search(/http\:\/\//i)!=-1) break;
		startPos--;
	  }
	  var str= wpTextbox1.value.substr(startPos);
	  endPos=str.search(/[\s\]\t\n\<\>]/);
	  if (endPos==-1) {endPos=wpTextbox1.value.length;}
	  else{endPos=endPos+startPos} 
	  
	  if(endPos<wpTextbox1.selectionStart){
	    alert('В текущей позиции курсора не найден интернет-адрес http:// ');
		return;
	  }
	}
	
    txt = wpTextbox1.value.substring(startPos, endPos)
    if (txt == '') {alert(XRomix_RefConv_FullText); return}
    else{
 
	  processText()
      wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
    }
	
	setSelectionRange(wpTextbox1, startPos, startPos + txt.length)
 
	setScrollTop(wpTextbox1, winScroll)//scroll back
 
//Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста 
function processText(){
  
  txt = txt.replace(/%D0%81/g, 'Ё'); 
  txt = txt.replace(/%D0%90/g, 'А'); 
  txt = txt.replace(/%D0%91/g, 'Б'); 
  txt = txt.replace(/%D0%92/g, 'В'); 
  txt = txt.replace(/%D0%93/g, 'Г'); 
  txt = txt.replace(/%D0%94/g, 'Д'); 
  txt = txt.replace(/%D0%95/g, 'Е'); 
  txt = txt.replace(/%D0%96/g, 'Ж'); 
  txt = txt.replace(/%D0%97/g, 'З'); 
  txt = txt.replace(/%D0%98/g, 'И'); 
  txt = txt.replace(/%D0%99/g, 'Й'); 
  txt = txt.replace(/%D0%9A/g, 'К'); 
  txt = txt.replace(/%D0%9B/g, 'Л'); 
  txt = txt.replace(/%D0%9C/g, 'М'); 
  txt = txt.replace(/%D0%9D/g, 'Н'); 
  txt = txt.replace(/%D0%9E/g, 'О'); 
  txt = txt.replace(/%D0%9F/g, 'П'); 
  txt = txt.replace(/%D0%A0/g, 'Р'); 
  txt = txt.replace(/%D0%A1/g, 'С'); 
  txt = txt.replace(/%D0%A2/g, 'Т'); 
  txt = txt.replace(/%D0%A3/g, 'У'); 
  txt = txt.replace(/%D0%A4/g, 'Ф'); 
  txt = txt.replace(/%D0%A5/g, 'Х'); 
  txt = txt.replace(/%D0%A6/g, 'Ц'); 
  txt = txt.replace(/%D0%A7/g, 'Ч'); 
  txt = txt.replace(/%D0%A8/g, 'Ш'); 
  txt = txt.replace(/%D0%A9/g, 'Щ'); 
  txt = txt.replace(/%D0%AA/g, 'Ъ'); 
  txt = txt.replace(/%D0%AB/g, 'Ы'); 
  txt = txt.replace(/%D0%AC/g, 'Ь'); 
  txt = txt.replace(/%D0%AD/g, 'Э'); 
  txt = txt.replace(/%D0%AE/g, 'Ю'); 
  txt = txt.replace(/%D0%AF/g, 'Я'); 
  
  txt = txt.replace(/%D1%91/g, 'ё'); 
  txt = txt.replace(/%D0%B0/g, 'а'); 
  txt = txt.replace(/%D0%B1/g, 'б'); 
  txt = txt.replace(/%D0%B2/g, 'в'); 
  txt = txt.replace(/%D0%B3/g, 'г'); 
  txt = txt.replace(/%D0%B4/g, 'д'); 
  txt = txt.replace(/%D0%B5/g, 'е'); 
  txt = txt.replace(/%D0%B6/g, 'ж'); 
  txt = txt.replace(/%D0%B7/g, 'з'); 
  txt = txt.replace(/%D0%B8/g, 'и'); 
  txt = txt.replace(/%D0%B9/g, 'й'); 
  txt = txt.replace(/%D0%BA/g, 'к'); 
  txt = txt.replace(/%D0%BB/g, 'л'); 
  txt = txt.replace(/%D0%BC/g, 'м'); 
  txt = txt.replace(/%D0%BD/g, 'н'); 
  txt = txt.replace(/%D0%BE/g, 'о'); 
  txt = txt.replace(/%D0%BF/g, 'п'); 
  txt = txt.replace(/%D1%80/g, 'р'); 
  txt = txt.replace(/%D1%81/g, 'с'); 
  txt = txt.replace(/%D1%82/g, 'т'); 
  txt = txt.replace(/%D1%83/g, 'у'); 
  txt = txt.replace(/%D1%84/g, 'ф'); 
  txt = txt.replace(/%D1%85/g, 'х'); 
  txt = txt.replace(/%D1%86/g, 'ц'); 
  txt = txt.replace(/%D1%87/g, 'ч'); 
  txt = txt.replace(/%D1%88/g, 'ш'); 
  txt = txt.replace(/%D1%89/g, 'щ'); 
  txt = txt.replace(/%D1%8A/g, 'ъ'); 
  txt = txt.replace(/%D1%8B/g, 'ы'); 
  txt = txt.replace(/%D1%8C/g, 'ь'); 
  txt = txt.replace(/%D1%8D/g, 'э'); 
  txt = txt.replace(/%D1%8E/g, 'ю'); 
  txt = txt.replace(/%D1%8F/g, 'я'); 
  
 
}

//подсчитывает концы строк в фрагменте текста
function countCrlf(str){
  var cnt=0;
  for(var i=0; i<str.length; i++){
    var c=str.charCodeAt(i);
	if (c==13){
	  cnt++;
	}
  }
  return cnt;
}

//Браузеро-независимый setSelectionRange - изменяет начало и конец
//выделенного фрагмента в поле ввода input
function setSelectionRange(input, start, end) {
  if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari)) { 
	//Mozilla/Opera/Safari3
	input.setSelectionRange(start, end);
  }else if (document.selection && document.selection.createRange) { 
 	 //Internet Explorer
		var range = input.createTextRange();
		range.collapse(true);
		range.moveStart("character", start - countCrlf(input.value.substring(0, start)));
		range.moveEnd("character", end - start - countCrlf(input.value.substring(start, end)));
		range.select();
  }	 
};

//Браузеро-независимое получение длины
//выделенного фрагмента в поле ввода input
function getSelectionLength(input) {
  if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari)) { 
	//Mozilla/Opera/Safari3
	return input.selectionEnd-input.selectionStart;
  }else if (document.selection && document.selection.createRange) { 
 	 //Internet Explorer
	 input.focus()
	 var range = document.selection.createRange()
	 return range.text.length
  }	else 
     return -2;
};

//Браузеро-независимый getSelectionStart - возвращает позицию начала 
//выделенного фрагмента в поле ввода input, или позицию курсора в поле ввода
function getSelectionStart(input) {
  if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari)) { 
	//Mozilla/Opera/Safari3
	return input.selectionStart;
  }else if (document.selection && document.selection.createRange) { 
 	 //Internet Explorer
	 input.focus()
	 //return Math.abs(document.selection.createRange().moveStart("character", -1000000));

	 
	var temp = input.value; 
	input.focus()
	var range = document.selection.createRange()
	var length = range.text.length 
    var txt = range.text
    range.text="{50E9CD6A-BC3E-4B44-9107-FFF6A65DC28E}" //фтыкаем гуид чтобы найти положение курсора в IE
	 //Статья http://www.bazon.net/mishoo/articles.epl?art_id=1292 
	 //рекомендует фтыкать тильду, но гуид лучше, потому что он гарантированно не встретится в тексте
	 var vv=input.value;
	 var startPos = vv.search("{50E9CD6A-BC3E-4B44-9107-FFF6A65DC28E}") //ищем этот гуид
	 input.value=temp //восстанавливаем текст, который был в поле ввода
	 setSelectionRange(input, startPos, startPos+length) //восстанавливаем выделение
	 return startPos
	 
  }	else 
     return -2;
};


//Браузеро-независимый getScrollTop - возвращает позицию прокрутки
//в поле ввода input
function getScrollTop(input) {
  if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari)) { 
	//Mozilla/Opera/Safari3
	return input.scrollTop
  }else if (document.selection && document.selection.createRange) { 
 	 //Internet Explorer
	input.focus()
	return document.documentElement.scrollTop
  }	else 
     return -2;
};

//Браузеро-независимый setScrollTop - устанавливает позицию прокрутки
//в поле ввода input
function setScrollTop(input, top) {
  if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari)) { 
	//Mozilla/Opera/Safari3
	input.scrollTop=top
  }else if (document.selection && document.selection.createRange) { 
 	 //Internet Explorer
	input.focus()
	document.documentElement.scrollTop=top
  }
};
	
  function setWpSummary(){
     var wpSummary = document.getElementById('wpSummary')
	 if(wpSummary){
	    var temp=wpSummary.value;
	    temp=temp.replace(/\/\*.*?\*\// , ""); //комментарии
	    temp=temp.replace(/[\s]*/ , ""); //пробелы
	    if (temp==""){
	       //wpSummary.value=wpSummary.value+" [[User talk:X-romix/refconv.js|refconv.js]] - преобразование ссылок";
	    }
	 }
  } 
}
/** <pre>
   Simple Diff -- 27 April 2010.
   Автор: [[Edward Chernenko]] (http://absurdopedia.net/wiki/Участник:Edward_Chernenko/simple-diff.js). Лицензия: CC-BY-SA 3.0
 
   Переписать все ссылки на диффы («пред.») в истории страниц,
   чтобы те были значительно короче.
*/
 
function simplify_diffs()
{
  if(wgAction != "history") return;
 
  for(i = 0; i < document.links.length; i ++)
  {
    if(document.links[i].href.match(/diff=/))
      document.links[i].href = document.links[i].href.replace(/^.*diff=(.*)&oldid=.*$/, '/?diff=$1');
  }
}
addOnloadHook(simplify_diffs);
 
/* </pre> */