var Peni_CantWork = 'Викифицирует года и убирает пробелы пред знаками препинания.'
var Peni_FullText = 'Сначала выделите текст.';
//Добавляет кнопку
function add_Wikifyyears_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/commons/6/6c/Button_see_also.png'
i.alt = i.title = 'MyWikify'
i.onclick = Wikifyyears
i.style.cursor = 'pointer'
toolbar.appendChild(i)
}
//Этот код выполняется в начале.
if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit'){
addOnloadHook(add_Wikifyyears_Button)
}
//Функция для оформления таблицы
function Wikifyyears(){
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(Peni_FullText); ShowHelp(); return}
else{
txt = processText(txt);
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
//alert("IE");
var range = document.selection.createRange()
txt = range.text
if (txt == '') {alert(Peni_FullText); ShowHelp(); 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(Peni_CantWork); return }
document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
//Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста
function processText(txt){
var re = /([^\[\d])([1,2][0-9]{3})([^\]\d])/g;
txt=txt.replace(re , "$1[[$2]]$3");
var re = /\s+([:\.,])/g;
txt=txt.replace(re , "$1");
var re = /([:\.,])([^\s]+)/g;
txt=txt.replace(re , "$1 $2");
var re = /\n[ \t]+([^\s]+)/g;
txt=txt.replace(re, "\n$1");
var re = /(\n{3,})/g;
txt=txt.replace(re, "\n\n");
var re = /([^ ])([\(])/g;
txt=txt.replace(re, "$1 $2");
var re = /\( /g;
txt=txt.replace(re, "(");
var re = / \)/g;
txt=txt.replace(re, ")");
return txt;
}
}