MediaWiki:Monobook.js

[http://www.wikizamki.org/links.htm]

(Различия между версиями)
Перейти к: навигация, поиск
 
(5 промежуточных версий не показаны.)
Строка 12: Строка 12:
var s="";
var s="";
if(mode=="google_wikipedia"){
if(mode=="google_wikipedia"){
-
s=" <form  id='xRomix_hidden_search_form' action='http://ru.wiktionary.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0'>\
+
s=" <form  id='xRomix_hidden_search_form' action='http://ru.wikipedia.org/wiki/Заглавная страница'>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input type='hidden' name='as_sitesearch' value='wikipedia.org'>\
<input type='hidden' name='as_sitesearch' value='wikipedia.org'>\
Строка 18: Строка 18:
}else if(mode=="google_wiktionary"){
}else if(mode=="google_wiktionary"){
-
s=" <form  id='xRomix_hidden_search_form' action='http://www.google.ru/search'>\
+
s=" <form  id='xRomix_hidden_search_form' action='http://ru.wiktionary.org/wiki/Заглавная страница'>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input type='hidden' name='as_sitesearch' value='wiktionary.org'>\
<input type='hidden' name='as_sitesearch' value='wiktionary.org'>\
</form>";
</form>";
}else if(mode=="google_wikibooks"){
}else if(mode=="google_wikibooks"){
-
s=" <form  id='xRomix_hidden_search_form' action='http://www.google.ru/search'>\
+
s=" <form  id='xRomix_hidden_search_form' action='http://ru.wikibooks.org/wiki/Заглавная страница'>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
<input type='hidden' name='as_sitesearch' value='wikibooks.org'>\
<input type='hidden' name='as_sitesearch' value='wikibooks.org'>\
-
</form>";
 
-
 
-
}else if(mode=="google_bse"){
 
-
s=" <form  id='xRomix_hidden_search_form' action='http://www.google.ru/search'>\
 
-
<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
 
-
<input type='hidden' name='as_sitesearch' value='www.cultinfo.ru'>\
 
</form>";
</form>";
Строка 93: Строка 87:
<span id='xRomix_hidden_search_span'></span>\
<span id='xRomix_hidden_search_span'></span>\
<div align='left'><br><ul>\
<div align='left'><br><ul>\
-
<li><a href='javascript: xRomixSearch(\"google_wikipedia\");'>Google→Википедия</a></li>\
+
<li><a href='javascript: xRomixSearch(\"google_wikipedia\");'>Википедия</a></li>\
-
<li><a href='javascript: xRomixSearch(\"google_wiktionary\");'>Google→Викисловарь</a></li>\
+
<li><a href='javascript: xRomixSearch(\"google_wiktionary\");'>Викисловарь</a></li>\
-
<li><a href='javascript: xRomixSearch(\"google_wikibooks\");'>Google→Викиучебник</a></li>\
+
<li><a href='javascript: xRomixSearch(\"google_wikibooks\");'>Викиучебник</a></li>\
-
<li><a href='javascript: xRomixSearch(\"google_bse\");'>Google→БСЭ</a></li>\
+
<li><a href='javascript: xRomixSearch(\"google_translate\");'>Google→Переводчик</a></li>\
<li><a href='javascript: xRomixSearch(\"google_translate\");'>Google→Переводчик</a></li>\
<li><a href='javascript: xRomixSearch(\"yandex_slovari\");'>Яндекс→Словари</a></li>\
<li><a href='javascript: xRomixSearch(\"yandex_slovari\");'>Яндекс→Словари</a></li>\
Строка 121: Строка 114:
}//function
}//function
);//addOnloadHook
);//addOnloadHook
 +
 +
 +
 +
//Форматирует таблицу, скопированную из Excel, по правилам вики-разметки.
 +
//Часть кода позаимствована из http://ru.wikipedia.org/wiki/MediaWiki:Wikificator.js
 +
//Автор: X-romix
 +
 +
var XRomix_Tablify_CantWork1 = 'Таблификатор не может работать в вашем браузере.\n\nTablificator cannot work in your browser' // английский текст для тех, кто не видит русские буквы
 +
var XRomix_Tablify_FullText1 = 'Эта кнопка предназначена для форматирования табличного текста, скопированного из табличного редактора (например, из Excel). Чтобы функция заработала, сначала выделите нужный фрагмент текста в окне редактирования.'
 +
 +
//Добавляет кнопку
 +
function addTablifikatorButton1(){
 +
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/c/c1/Button-tablifikator.PNG'
 +
i.alt = i.title = 'Таблификатор'
 +
i.onclick = XRomix_Tablify1
 +
i.style.cursor = 'pointer'
 +
toolbar.appendChild(i)
 +
 +
}
 +
 +
 +
 +
//Этот код выполняется в начале.
 +
if (wgAction == 'edit' || wgAction == 'submit'){
 +
  addOnloadHook(addTablifikatorButton1)
 +
}
 +
 +
 +
//Функция для оформления таблицы
 +
function XRomix_Tablify1(){
 +
 +
//Проверяем, поддерживает ли браузер регулярные выражения (RegExp)
 +
if (('code'.replace(/d/g, 'r') != 'core')
 +
    || (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
 +
  { alert(XRomix_Tablify_CantWork1); return }
 +
setWpSummary();
 +
var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1
 +
var winScroll = document.documentElement.scrollTop //remember window scroll
 +
wpTextbox1.focus()
 +
 +
if (typeof wpTextbox1.selectionStart != 'undefined'
 +
    && (navigator.productSub > 20031000 || is_safari)) { //Mozilla/Opera/Safari3
 +
 +
    var textScroll = wpTextbox1.scrollTop
 +
    var startPos = wpTextbox1.selectionStart
 +
    var endPos = wpTextbox1.selectionEnd
 +
    txt = wpTextbox1.value.substring(startPos, endPos)
 +
    if (txt == '') {alert(XRomix_Tablify_FullText1); return}
 +
    else{
 +
 +
  processText()
 +
      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 (document.selection && document.selection.createRange) { //IE
 +
 +
  var range = document.selection.createRange()
 +
  txt = range.text
 +
  if (txt == '') {alert(XRomix_Tablify_FullText1); return}
 +
  else{
 +
 +
    processText()
 +
  range.text = txt
 +
    //if (!window.opera) txt = txt.replace(/\r/g,'')
 +
    if (range.moveStart) range.moveStart('character', - txt.length)
 +
    range.select()
 +
  }
 +
 +
}else // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку
 +
  { alert(XRomix_Tablify_CantWork1); return }
 +
 +
document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
 +
 +
//Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста
 +
function processText(){
 +
  var col1hdr=0;
 +
  if (confirm('Вы хотите оформить первую колонку как заголовок?')) col1hdr=1;
 +
 +
 +
 +
  txt = txt.replace(/^\s+|\s+$/g, '')  //Обрезаем пробелы слева и справа
 +
  var arr1=txt.split("\n")
 +
 +
  txt='\n{| class="standard"\n'
 +
 +
  for (var i=0; i<arr1.length; i++){
 +
    txt = txt+"|-\n"
 +
    s1=arr1[i];
 +
  var arr2=s1.split("\t")
 +
  for (var j=0; j<arr2.length; j++){
 +
    var s2=arr2[j];
 +
if ((col1hdr==1 && j==0)||i==0){
 +
  txt = txt+"! "+s2+"\n"
 +
}else{
 +
  txt = txt+"| "+s2+"\n"
 +
 +
  } 
 +
  } 
 +
  txt = txt+"|}"
 +
 +
}
 +
 +
  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/tablifikator.js|tablifikator.js]] - таблица из Excel/Calc";
 +
    }
 +
}
 +
  }
 +
 +
}
 +
 +
 +
//Преобразование ссылок в читабельный вид
 +
//Часть кода позаимствована из 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]] - преобразование ссылок";
 +
    }
 +
}
 +
  }
 +
}

Текущая версия на 05:29, 31 июля 2009

/* Указанный здесь JavaScript будет загружен всем участникам, использующим тему оформления MonoBook  */

//Скрипт дополняет форму поиска ссылками на поиск в гугле по различным вики-проектам.
 
function xRomixSearch(mode){
	var el = document.getElementById('xRomix_hidden_search_span');
	if (!el) return;
	var f1 = document.getElementById('searchInput');
	if (!f1) return;
 
 
	var s="";
	if(mode=="google_wikipedia"){
	s=" <form  id='xRomix_hidden_search_form' action='http://ru.wikipedia.org/wiki/Заглавная страница'>\
		<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
		<input type='hidden' name='as_sitesearch' value='wikipedia.org'>\
		</form>";
	
	}else if(mode=="google_wiktionary"){
	s=" <form  id='xRomix_hidden_search_form' action='http://ru.wiktionary.org/wiki/Заглавная страница'>\
		<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
		<input type='hidden' name='as_sitesearch' value='wiktionary.org'>\
		</form>";
	}else if(mode=="google_wikibooks"){
	s=" <form  id='xRomix_hidden_search_form' action='http://ru.wikibooks.org/wiki/Заглавная страница'>\
		<input id='xRomix_hidden_search_text' type='hidden' name='q' value=''>\
		<input type='hidden' name='as_sitesearch' value='wikibooks.org'>\
		</form>";

	}else if(mode=="google_translate"){
		var text=f1.value;
		//Определим направление перевода
		try{
			if (text.search(/[А-Яа-я]+/)>=0){
				lang="ru|en";
			}else{
				lang="en|ru";
			}
		}catch(e){
			lang="en|ru";
		}
 
	s=" <form  id='xRomix_hidden_search_form' action='http://translate.google.com/translate_t'>\
		<input id='xRomix_hidden_search_text' type='hidden' name='text' value=''>\
		<input type='hidden' name='hl' value='ru'>\
        <input type='hidden' name='ie' value='UTF8'>\
        <input type='hidden' name='langpair' value='"+lang+"'>\
		</form>";
	
	}else if(mode=="yandex_slovari"){
	s=" <form  id='xRomix_hidden_search_form' action='http://lingvo.yandex.ru/search.xml'>\
		<input id='xRomix_hidden_search_text' type='hidden' name='text' value=''>\
		</form>";
	}else if(mode=="yandex_lingvo"){
	s=" <form  id='xRomix_hidden_search_form' action='http://lingvo.yandex.ru/en'>\
		<input id='xRomix_hidden_search_text' type='hidden' name='text' value=''>\
		<input type='hidden' name='st_translate' value='1'>\
		</form>";
	}
	el.innerHTML=s;
	var f2 = document.getElementById('xRomix_hidden_search_text');
	if (!f2) return;
	f2.value=f1.value;
	var f = document.getElementById('xRomix_hidden_search_form');
	if (!f) return;
	try{
		var test = extSearchMode; //проверяем наличие переменной
	}catch(e){
		extSearchMode=1; //по умолчанию - в новом окне
	}
	if (extSearchMode == 1){	
		f.target='_blank';
	}
	f.submit();
 
 
}
 
 
addOnloadHook(function(){
	var el = document.getElementById('searchBody');
	if (!el) return;
	s="<form action='/wiki/Служебная:Search' id='searchform' target='_blank'><div>\
	<input id='searchInput' name='search' type='text' title='Искать это слово [f]' accesskey='f' value='' />\
	<input type='submit' name='go' class='searchButton' id='searchGoButton' value='Перейти' title='Перейти к странице, имеющей в точности такое название' />&nbsp;\
	<input type='submit' name='fulltext' class='searchButton' id='mw-searchButton' value='Найти' title='Найти страницы, содержащие указанный текст' /></div></form>\
	<span id='xRomix_hidden_search_span'></span>\
		<div align='left'><br><ul>\
			<li><a href='javascript: xRomixSearch(\"google_wikipedia\");'>Википедия</a></li>\
			<li><a href='javascript: xRomixSearch(\"google_wiktionary\");'>Викисловарь</a></li>\
			<li><a href='javascript: xRomixSearch(\"google_wikibooks\");'>Викиучебник</a></li>\
			<li><a href='javascript: xRomixSearch(\"google_translate\");'>Google→Переводчик</a></li>\
			<li><a href='javascript: xRomixSearch(\"yandex_slovari\");'>Яндекс→Словари</a></li>\
			<li><a href='javascript: xRomixSearch(\"yandex_lingvo\");'>Яндекс→Lingvo</a></li>\
		</ul></div>\
		";
	try{
		var test = extSearchMode; //проверяем наличие переменной
	}catch(e){
		extSearchMode=1; //по умолчанию - в новом окне
	}
	if (extSearchMode == 0){
        //Убираем target='_blank' - открывание в новом окне, если переменная = 0  
	  var reg = /target\=\'\_blank\'/g
	  var res = s.replace(reg, "");
	  s = res;
        //Заменяем стрелочку на минус (чтобы было видно, в каком режиме будет поиск)
	  var reg = /→/g
	  var res = s.replace(reg, "-");
	  s = res;
	}
	el.innerHTML=s;
 
}//function
);//addOnloadHook



//Форматирует таблицу, скопированную из Excel, по правилам вики-разметки.
//Часть кода позаимствована из http://ru.wikipedia.org/wiki/MediaWiki:Wikificator.js
//Автор: X-romix
 
var XRomix_Tablify_CantWork1 = 'Таблификатор не может работать в вашем браузере.\n\nTablificator cannot work in your browser' // английский текст для тех, кто не видит русские буквы
var XRomix_Tablify_FullText1 = 'Эта кнопка предназначена для форматирования табличного текста, скопированного из табличного редактора (например, из Excel). Чтобы функция заработала, сначала выделите нужный фрагмент текста в окне редактирования.'
 
//Добавляет кнопку
function addTablifikatorButton1(){
	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/c/c1/Button-tablifikator.PNG'
	i.alt = i.title = 'Таблификатор'
	i.onclick = XRomix_Tablify1
	i.style.cursor = 'pointer'
	toolbar.appendChild(i)
 
} 
 
 
 
//Этот код выполняется в начале.
if (wgAction == 'edit' || wgAction == 'submit'){
  addOnloadHook(addTablifikatorButton1)
}
 
 
//Функция для оформления таблицы
function XRomix_Tablify1(){
 
 //Проверяем, поддерживает ли браузер регулярные выражения (RegExp)	
 if (('code'.replace(/d/g, 'r') != 'core') 
    || (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
  { alert(XRomix_Tablify_CantWork1); return }
 setWpSummary();
 var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1
 var winScroll = document.documentElement.scrollTop //remember window scroll
 wpTextbox1.focus()
 
 if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari)) { //Mozilla/Opera/Safari3
 
    var textScroll = wpTextbox1.scrollTop
    var startPos = wpTextbox1.selectionStart
    var endPos = wpTextbox1.selectionEnd
    txt = wpTextbox1.value.substring(startPos, endPos)
    if (txt == '') {alert(XRomix_Tablify_FullText1); return}
    else{
 
	  processText()
      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 (document.selection && document.selection.createRange) { //IE
 
   var range = document.selection.createRange()
   txt = range.text
   if (txt == '') {alert(XRomix_Tablify_FullText1); return}
   else{
 
     processText()
	  range.text = txt
     //if (!window.opera) txt = txt.replace(/\r/g,'')
     if (range.moveStart) range.moveStart('character', - txt.length)
     range.select() 
   }
 
 }else // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку
   { alert(XRomix_Tablify_CantWork1); return }
 
 document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
 
//Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста 
function processText(){
  var col1hdr=0;
  if (confirm('Вы хотите оформить первую колонку как заголовок?')) col1hdr=1;
 
 
 
  txt = txt.replace(/^\s+|\s+$/g, '')  //Обрезаем пробелы слева и справа
   var arr1=txt.split("\n")
 
   txt='\n{| class="standard"\n'
 
   for (var i=0; i<arr1.length; i++){ 
     txt = txt+"|-\n"
     s1=arr1[i];
	   var arr2=s1.split("\t")
	   for (var j=0; j<arr2.length; j++){
	     var s2=arr2[j];
		 if ((col1hdr==1 && j==0)||i==0){
		   txt = txt+"! "+s2+"\n"
		 }else{
		   txt = txt+"| "+s2+"\n"
		 }  
	   }  
   }  
  txt = txt+"|}"
 
}	
 
  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/tablifikator.js|tablifikator.js]] - таблица из Excel/Calc";
	    }
	 }
  } 
 
}


//Преобразование ссылок в читабельный вид
//Часть кода позаимствована из 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]] - преобразование ссылок";
	    }
	 }
  } 
}