Промени

Направо към: навигация, търсене

МедияУики:Monobook.js

25 105 bytes added, 01:33, 10 юни 2006
редакция без резюме
/*
Този файл съдържа код на [[Джаваскрипт]] и се зарежда при всички потребители,
ползващи стила Монобук или негови производни
<pre>
*/
/* чрез редактиране на този файл можете да промените някои неща на Javascript за облика Monobook */ /* tooltips and access keys */ var ta = new Object();{ ta['pt-userpage'] = new Array(: ['.','Вашата потребителска страница');], ta['pt-anonuserpage'] = new Array(': ['.','Потребителската страница за адреса, от който редактирате');], ta['pt-mytalk'] = new Array(: ['n','Вашата дискусионна страница');], ta['pt-anontalk'] = new Array(: ['n','Дискусия относно редакциите от този адрес');], ta['pt-preferences'] = new Array(: ['','Вашите настройки');], ta['pt-watchlist'] = new Array(: ['l','Списък на страници, чиито промени сте избрали да наблюдавате');], ta['pt-mycontris'] = new Array(: ['y','Списък на Вашите приноси');], ta['pt-login'] = new Array(: ['o','В момента не сте влезли. Насърчаваме Ви да влезете, въпреки че не е задължително.');], ta['pt-anonlogin'] = new Array(: ['o','Насърчаваме Ви да влезете, въпреки че не е задължително.');], ta['pt-logout'] = new Array(: ['o','Излизане от {{SITENAME}}Уикипедия');], ta['ca-talk'] = new Array(: ['t','Беседа относно страницата');], ta['ca-edit'] = new Array(: ['e','Можете да редактирате страницата. Моля, използвайте бутона за предварителен преглед преди да съхраните.');], ta['ca-addsection'] = new Array(: ['+','Добавяне на коментар към страницата');], ta['ca-viewsource'] = new Array(: ['e','Страницата е защитена. Можете Може да разгледате изходния й код.');], ta['ca-history'] = new Array(: ['h','Предишни версии на страницата');], ta['ca-protect'] = new Array(: ['=','Защитаване на страницата');], ta['ca-delete'] = new Array(: ['d','Изтриване на страницата');], ta['ca-undelete'] = new Array(': ['d','Възстановяване на изтрити редакции на страницата');], ta['ca-move'] = new Array(: ['m','Преместване на страницата');], ta['ca-watchnomove'] = new Array(: ['w','Добавяне Нямате разрешение за преместване на страницата към списъка Ви за наблюдение');], ta['ca-unwatchwatch'] = new Array(: ['w','Премахване Добавяне на страницата от към списъка Ви за наблюдение');], ta['searchca-unwatch'] = new Array(: ['fw','Претърсване Премахване на {{SITENAME}}страницата от списъка Ви за наблюдение');], ta'search' : ['f','Претърсване на Уикипедия'],'p-logo'] = new Array(: ['','Началната страница');], ta['n-mainpage'] = new Array(': ['z','Началната страница');], ta['n-portal'] = new Array(: ['','Информация за проекта');], ta['n-currentevents'] = new Array(: ['','Информация за текущите събития по светаСписък на основните категории в Уикипедия');], ta['n-recentchanges'] = new Array(: ['r','Списък на последните промени в {{SITENAME}}цялото уики');], ta['n-randompage'] = new Array(: ['x','Случайна страница');], ta['n-help'] = new Array(: ['','Помощната страница');], ta['n-sitesupport'] = new Array(: ['','Подкрепете {{SITENAME}}Уикипедия');], ta['t-whatlinkshere'] = new Array(: ['j','Списък на всички страници, сочещи насам');], ta['t-recentchangeslinked'] = new Array(: ['k','Последните промени на страници, сочени от сочещи към тази страница');], ta['feed-rss'] = new Array(: ['','RSS feed за страницата');], ta['feed-atom'] = new Array(: ['','Atom feed за страницата');], ta['t-contributions'] = new Array(: ['','Показване на приносите на потребителя');], ta['t-emailuser'] = new Array(: ['','Изпращане на писмо на потребителя');], ta['t-upload'] = new Array(: ['u','Качване на файлове');], ta['t-specialpages'] = new Array(: ['q','Списък на всички специални страници');], ta['ca-nstab-main'] = new Array(: ['c','Преглед на основната страница');], ta['ca-nstab-user'] = new Array(: ['c','Преглед на потребителската страница');], ta['ca-nstab-media'] = new Array(: ['c','Преглед на медийната страница');], ta['ca-nstab-special'] = new Array(: ['','Това е специална страница, която не може да се редактира.');], ta['ca-nstab-wp'] = new Array(: ['c','Преглед на проектната страница');], ta['ca-nstab-image'] = new Array(: ['c','Преглед на страницата на файлакартинката');], ta['ca-nstab-mediawiki'] = new Array(: ['c','Преглед на системното съобщение');], ta['ca-nstab-template'] = new Array(: ['c','Преглед на шаблона');], ta['ca-nstab-help'] = new Array(: ['c','Преглед на помощната страница');], ta['ca-nstab-category'] = new Array(: ['c','Преглед на категорийната страница')]}/*чрез тази функция се показва поздравително съобщение на всеки НЕвлязъл потребител, ако: страницата НЕ е защитена страницата Е от основното именно пространство, т.е. Е статия има препращач препращачът НЕ съдържа wikipedia.org (например идва от Гугъл)взета е от [[:de:MediaWiki:Monobook.js]], с малки промени*/function externMessage() { if ( ((self.location.href + "").indexOf("/wiki/") != -1) && // дали потребителят вече не редактира (document.getElementById("pt-login")) && // дали потребителят НЕ е влязъл (document.getElementById("ca-edit")) && // дали страницата НЕ е защитена (document.getElementsByTagName("body")[0].className == "ns-0") && // дали страницата Е статия (document.referrer != "") && // дали ИМА препращач (document.referrer.search(/wikipedia\.org/) == -1) // дали препращачът НЕ съдържа wikipedia.org ) { var externMessage = document.createElement("div"); externMessage.setAttribute('id','externMessage'); // Съобщението, показвано на потребителите externMessage.innerHTML = '<b>Добре дошли</b> в Уикипедия! Можете не само да четете тази статия, но също така и да я <b><a href="/wiki/%D0%A3%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%92%D1%8A%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5" title="Повече информация за редактирането на статии в Уикипедия">редактирате и подобрите</a></b>.'; document.getElementById("bodyContent").insertBefore( externMessage, document.getElementById("contentSub") ); }}  // името на елемента за допълнителните знациvar charsElemId = "extraChars";var existChars = false; // дали знаците са добавени вече// генерира и добавя допълнителните знаци в елемента $charsElemId */function addChars() { // ако знаците вече са добавени, се връщаме if ( existChars ) { return; } var chars = [ ['ѣ', 'ѫ', 'ѭ', 'ѧ', 'ѩ', 'Ї', 'Ҁ', 'Ѹ', 'Ѡ', 'Ѻ', 'Ъ', 'І', 'Ҍ', 'Ѩ', 'Ѭ', 'Ѯ', 'Ѵ', 'Ѥ', 'Ѿ'], ['*', '~', '|', '[', ']'], ['α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'ς', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'Γ', 'Δ', 'Θ', 'Λ', 'Ξ', 'Π', 'Σ', 'Φ', 'Ψ', 'Ω'], ['∫', '∑', '∏', '√', '−', '±', '∞', '≈', '~', '∝', '≡', '≠', '≤', '≥', '×', '·', '÷', '∂', '′', '″', '∇', '∮', '⊥', '‰', '°', '∴', 'ℵ', 'ℋ', '℧', '№', '^', '¹', '²', '³', '½', '¼', '¾', '∈', '∉', '∩', '∪', '⊂', '⊃', '⊆', '⊇', '∧', '∨', 'ø', '¬', '∃', '∀', '⇒', '⇐', '⇓', '⇑', '⇔', '→', '←', '↓', '↑', '↔', '⇄', '⇆', '⇋', '⇌', 'ℕ', 'ℤ', 'ℚ', 'ℝ', 'ℂ', '∅', '⋮', '⋯'], ['™', '©', '®', '¢', '€', '¥', '£', '¤', '¿', '¡', '«', '»', '§', '¶', '†', '‡', '•', '♀', '♂', '…', '¨'], ['Á', 'á', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', 'À', 'à', 'È', 'è', 'Ì', 'ì', 'Ò', 'ò', 'Ù', 'ù', 'Â', 'â', 'Ê', 'ê', 'Î', 'î', 'Ô', 'ô', 'Û', 'û', 'Ä', 'ä', 'Ë', 'ë', 'Ï', 'ï'], ['Ö', 'ö', 'Ü', 'ü', 'ß', 'Ã', 'ã', 'Ñ', 'ñ', 'Õ', 'õ', 'Ç', 'ç', 'Ģ', 'ģ', 'Ķ', 'ķ', 'Ļ', 'ļ', 'Ņ', 'ņ', 'Ŗ', 'ŗ', 'Ş', 'ş', 'Ţ', 'ţ', 'Ć', 'ć', 'Ĺ', 'ĺ', 'Ń', 'ń', 'Ŕ', 'ŕ', 'Ś', 'ś', 'Ý', 'ý', 'Ź'], ['ź', 'Đ', 'đ', 'Ů', 'ů', 'Č', 'č', 'Ď', 'ď', 'Ľ', 'ľ', 'Ň', 'ň', 'Ř', 'ř', 'Š', 'š', 'Ť', 'ť', 'Ž', 'ž', 'Ǎ', 'ǎ', 'Ě', 'ě', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ā', 'ā', 'Ē', 'ē', 'Ī', 'ī', 'Ō', 'ō', 'Ū'], ['ū', 'ǖ', 'ǘ', 'ǚ', 'ǜ', 'Ĉ', 'ĉ', 'Ĝ', 'ĝ', 'Ĥ', 'ĥ', 'Ĵ', 'ĵ', 'Ŝ', 'ŝ', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ă', 'ă', 'Ğ', 'ğ', 'Ŭ', 'ŭ', 'Ċ', 'ċ', 'Ė', 'ė', 'Ġ', 'ġ', 'İ', 'ı', 'Ż', 'ż', 'Ą', 'ą', 'Ę', 'ę', 'Į'], ['į', 'Ų', 'ų', 'Ł', 'ł', 'Ő', 'ő', 'Ű', 'ű', 'Ŀ', 'ŀ', 'Ħ', 'ħ', 'Ð', 'ð', 'Þ', 'þ', 'Œ', 'œ', 'Æ', 'æ', 'Ø', 'ø', 'Å', 'å'] ]; var cont = ''; var len = chars.length; for (var i in chars) { for (var j in chars[i]) { cont += "<a href=\"javascript:insertTags('"+chars[i][j]+"', '', '')\" "+ 'title="Вмъкване на знака „'+chars[i][j]+'“">'+chars[i][j]+'</a> '; } if (i != len-1) { cont += '· '; } } document.getElementById(charsElemId).innerHTML = cont; existChars = true;}  /*Код за вмъкване на шаблони чрез падащо меню(по идея на [[:he:MediaWiki:Summary|еврейската Уикипедия]])*/var tpl = {// "<TEMPLATE-ID>" : ["<LEFT>", "<CONTENT>", "<RIGHT>", "<SHOWN TEXT>"],"disam" : ["'''", "Понятие", "''' може да се отнася за:\n\n* \n* \n* \n\n{"+"{пояснение}}", "Пояснение"],"todo" : ["{"+"{Обработка|", "форматиране", "}}", "Обработка"],"stub" : ["{"+"{мъниче", "", "}}", "Мъниче"],"to-disam" : ["{"+"{към пояснение|{"+"{ЗАМЕСТ:PAGENAME}}|", "{"+"{ЗАМЕСТ:PAGENAME}}", " (пояснение)}}", "Към пояснение"],"cat" : ["["+"[Категория:", "Категория", "]]", "Категория"],"cat-info" : ["{"+"{Категория инфо|", "Име на статия", "}}", "Категория инфо"],"bio-info" : ["{"+"{Биография инфо|\n име= \n| портрет= dot.png\n| описание= \n| наставка= \n| роден-дата=[[]] [[]] \n| роден-място=[[]], [[]] \n| починал-дата=[[]] [[]] \n| починал-място=[[]], [[]]\n", "", "}}", "Биография инфо"],"company-info" : ["{"+"{Компания инфо|\n име = \n| лого = dot.png\n| основаване = ?\n| град = [[]]\n| страна = [[]]\n| заети = ?\n| продукти = [[]]\n| сайт = ?\n", "", "}}", "Компания инфо"],"ext-links" : ["\n== Външни препратки ==\n\n* [http://", "сайт.бг Външна препратка", "]", "Външни препратки"],"see-also" : ["\n== Вижте също ==\n\n* ["+"[", "Име на статия", "]]", "Вижте също"],"table" : ["\n{|\n|\n|-\n|\n|}", "", "", "Таблица"],"ekip" : ["{"+"{Екип отбор|\n дом-тяло=orange\n|дом-ръкави=orange\n|дом-шорти=black\n|дом-чорапи=orange\n\n|гост-тяло=green\n|гост-ръкави=green\n|гост-шорти=black\n|гост-чорапи=green\n", "", "}}", "Екип отбор"]}; // генерира падащото меню с шаблонитеfunction makeTemplateSelectBox() { var box = document.createElement("select"); box.onchange = function() { if (this.value != "") { var el = tpl[this.value]; insertTags(el[0], el[2], el[1]); this.selectedIndex=0; } return false; }; box.appendChild( newOption("", "Вмъкване на шаблон...") ); for (var i in tpl) { box.appendChild( newOption(i, tpl[i][3]) ); } return box;} function newOption(val, text) { var o = document.createElement("option"); o.value = val; o.appendChild( document.createTextNode(text) ); return o;}  // от тези данни ще се генерират допълнителни бутони с insertTags()var customInsButtons = [ // ТЕКСТ_ОТЛЯВО ТЕКСТ_ОТДЯСНО ТЕКСТ_ПО_СРЕДАТА ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ ["#виж ["+"[", "]]", "Страница", "+команда за пренасочване", "вж"], ["<code>", "</code>", "текст", "Текст с фиксирана ширина на буквите — обикновено код", "<tt>код</tt>"], ["<sub>", "</sub>", "индекс", "+долен индекс", "a<sub>x</sub>"], ["<sup>", "</sup>", "степен", "+горен индекс", "a<sup>x</sup>"], ["&nbsp;", "", "", "+несекаем интервал", "nbsp"], ["„", "“", "текст", "+български кавички", "„“"], ["<del>", "</del>", "текст", "Отбелязване на текст като изтрит", "<del>del</del>"], ["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"], ["|", "", "", "+отвесна черта — |", "&nbsp;|&nbsp;"], ["—", "", "", "+дълга чертица — mdash", "—"], ["–", "", "", "+средна чертица — ndash", "&nbsp;–&nbsp;"], ["ѝ", "", "", "+„и“ с ударение", "ѝ"], ["", "&#768;", "", "+ударение за гласна буква (маркирайте една буква)", "удар."], ["<"+"!--", "-->", "коментар", "+коментар", "&lt;!--"], ["{"+"{ЗАМЕСТ:-)}}", "", "", "+шаблон „Усмивка“", ":-)"], ["{"+"{ЗАМЕСТ:D}}", "", "", "+шаблон „Ухилено човече“", ":-D"], ["[[en:", "]]", "en", "+английско междуики", "en:"], ["dot.png", "", "", "+dot.png — прозрачен пиксел", "dot"], ["{"+"{Уики ен|", "}}", "", "Добавяне на източник", "Изт."], ["<ref>", "</ref>", "", "Бележка под линия", "ref"]];// данни за още бутони с код по желаниеvar customMiscButtons = [ // КОД_ЗА_ИЗПЪЛНЕНИЕ ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ // уикификатора ["obrabotka(false)", "Преобразуване на някои знаци", "#"], ["obrabotka(true)", "Преобразуване на числа към БДС", "$"], // допълнителните знаци ["addChars(); toggleElemDisplay('"+charsElemId+"');", "Възможност за вмъкване на още знаци", "Още..."]]; // добавя нови бутони и други играчкиfunction setupCustomEditTools() { var toolbar = document.getElementById("toolbar"); // ако няма съществуващи бутони, няма да добавяме и тези if ( !toolbar ) { return; } toolbar.className += " buttonlinks"; var tools = document.createElement("div"); tools.id = "custombuttons"; for (var i in customInsButtons) { var el = customInsButtons[i]; var title = el[3]; if ( title.charAt(0) == "+" ) { title = "Вмъкване на " + title.substr(1); } addCustomButton(tools, {"href": "javascript:insertTags('"+el[0] +"','"+el[1]+"','"+ el[2]+"')", "title": title, "innerHTML": el[4]}); } for (var i in customMiscButtons) { var el = customMiscButtons[i]; addCustomButton(tools, {"href":"javascript:"+el[0], "title":el[1], "innerHTML":el[2]}); } // падащото меню с шаблони toolbar.appendChild( makeTemplateSelectBox() ); toolbar.appendChild(tools); // елемент за допълнителните знаци var chbox = document.createElement("div"); chbox.id = charsElemId; chbox.style.display = "none"; toolbar.appendChild(chbox);} function addCustomButton(box, item) { var b = document.createElement("a"); for (var attr in item) { b[attr] = item[attr]; } box.appendChild(b); box.appendChild( document.createTextNode(" ") );} /* скрива/показва елемент */function toggleElemDisplay(elemId) { var elem = document.getElementById(elemId); elem.style.display = elem.style.display == 'none' ? '' : 'none';} var txt; // текста, който ще се обработва от Уикификатора // BEGIN код от [[:ru:MediaWiki:Summary]], вижте [[:ru:Википедия:Викификатор]]function obrabotka(bds) { check_regexp();//Проверяем поддерживаются ли рег. выражения document.editform.wpTextbox1.focus(); var txtarea = document.editform.wpTextbox1; if(document.selection && !is_gecko)/* IE*/ { txt = " "+document.selection.createRange().text; if (txt == " ") {all_text(bds);} //Если ничего не выделено else{ zamena(bds); txt = txt.substr (1, txt.length-1); document.selection.createRange().text = txt; } } else if((txtarea.selectionStart || txtarea.selectionStart == '0')&&(navigator.productSub>20031000)) /*Gecko-браузеры старше 10.2003*/ { var startPos = txtarea.selectionStart; var endPos = txtarea.selectionEnd; var scrollTop=txtarea.scrollTop; txt = " "+(txtarea.value).substring(startPos, endPos); if (txt == " ") {all_text(bds);} //Если ничего не выделено else{ zamena(bds); txt = txt.substr (1, txt.length-1); txtarea.value = txtarea.value.substring(0, startPos) + txt + txtarea.value.substring(endPos, txtarea.value.length); txtarea.focus(); } } else if (confirm("Уикификатор ще обработи ЦЕЛИЯ текст в статията. Да продължи ли?")) { all_text(bds); // Прочие браузеры }}  function all_text(bds) { //Обрабатываем текст целиком txt = " "+document.editform.wpTextbox1.value; zamena(bds); txt = txt.substr (1, txt.length-1); document.editform.wpTextbox1.value=txt;}  function check_regexp() { //Проверяем поддерживаются ли рег. выражения if ("код".replace(/д/g, "т") != "кот"){ alert("Уикификатор не може да работи с вашия браузър");exit; } var b_ver=navigator.appVersion.substr(0, 1); if (navigator.appName=="Netscape"&&b_ver<5){ alert("Уикификатор не може да работи с браузър Netscape 4.x или по-стари версии");exit; }} function zamena(bds) { if (bds) { zamena_5ko(); return; } // Заменяем теги <b>, <strong> и <i>, <em> на ''' и '' txt = txt.replace(/\<\/?(b|strong)\>/g, "\'\'\'"); txt = txt.replace(/\<\/?(i|em)\>/g, "\'\'");  //Исключаем из обработки всё, что находится между тегами <nowiki> и </nowiki> i_nowiki=0; a_nowiki=txt.match(/\<nowiki\>(.+)\<\/nowiki\>/g) r_nowiki=/\<nowiki\>(.+)\<\/nowiki\>/; while (r_nowiki.test(txt)) { i_nowiki++; txt = txt.replace(r_nowiki, "\x03"+i_nowiki+"\x04"); }  //Исключаем из обработки всё, что находится между тегами <math> и </math> i_math=0; a_math=txt.match(/\<math\>(.+)\<\/math\>/g) r_math=/\<math\>(.+)\<\/math\>/; while (r_math.test(txt)) { i_math++; txt = txt.replace(r_math, "\x05"+i_math+"\x06"); }  //Исключаем из обработки строки, начинающиеся с пробела f_space=txt.substr (0, 1); txt = txt.substr (1, txt.length-1); i_space=0; a_space=txt.match(/^( )(.+)$/mg) r_space=/^( )(.+)$/m; while (r_space.test(txt)) { i_space++; txt = txt.replace(r_space, "\x07"+i_space+"\x08"); } txt=f_space+txt;  //Исключаем всё между [[ и ]] i_links=0; a_links=txt.match(/(\[\[)(.*?)(\]\])/g) r_links=/(\[\[)(.*?)(\]\])/; while (r_links.test(txt)) { i_links++; txt = txt.replace(r_links, "\x15"+i_links+"\x16"); }  //Исключаем из обработки весь текст в кавычках после знака "=" i_equal=0; a_equal=txt.match(/(=)(\s?)(\")(.*?)(\")/g) r_equal=/(=)(\s?)(\")(.*?)(\")/; while (r_equal.test(txt)) { i_equal++; txt = txt.replace(r_equal, "\x11"+i_equal+"\x14"); }  //Заменяем обычными кавычками сочетания << и >>. txt = txt.replace(/(\<|\>|\&[lg]t;)\1/g, "\"");  //Исключаем из обработки прочие HTML-теги ("<" и ">") i=0; a=txt.match(/<([^>]*)>/g) r=/<([^>]*)>/; while (r.test(txt)) { i++; txt = txt.replace(r, "\x01"+i+"\x02"); }  //Заменяем правильные символы на неверные, чтобы ничего не пропустить txt = txt.replace(/–/g, "-"); txt = txt.replace(/(«|»|“|”|„|\&((la|ra|bd|ld)quo|#132|#147|#148|quot);)/g, "\"");  // Заменяем "...", &hellip; и &#133; на многоточие txt = txt.replace(/(\.{3}|\&(hellip|#133);)/g, '…');  // Обработчик знака градуса и "+-" txt = txt.replace(/(\+[--])/g, "±"); txt=txt.replace(/([\s\>\(\*\"]|^)\-([0-9\.\,]+)\s?\^?\s?([FC])(?=[\s\"\.\,;\<]|$)/g, "$1-$2\u00A0\u00B0$3"); txt=txt.replace(/([\s\>\(\*\"]|^)\+([0-9\.\,]+)\s?\^?\s?([FC])(?=[\s\.\,;\<\"]|$)/g, "$1+$2\u00A0\u00B0$3"); txt=txt.replace(/([\s\>\(\*\"]|^)\±([0-9\.\,]+)\s?\^?\s?([FC])(?=[\s\.\,;\<\"]|$)/g, "$1±$2\u00A0\u00B0$3"); txt=txt.replace(/\&deg;/g, "\u00B0");  // Обработчик минуса txt=txt.replace(/([sup\>|sub\>|\s])(-)(\d)/g, "$1-$3"); txt = txt.replace(/(\d )(-)( \d)/g, "$1-$3");  // Заменяем кавычки //(") с „“ txt = txt.replace(/([\x01-(\s\|\"])(\")([^\"]{0,})([^\s\"(])(\")/g, "$1„\$3\$4“"); // Кавычки внутри кавычек if (/"/.test(txt)) { txt = txt.replace(/([\x01(\s\"])(\")([^\"]{0,})([^\s\"(])(\")/g, "\$1„\$3\$4“"); while (/(„)([^“]*)(„)/.test(txt)) txt = txt.replace(/(„)([^“]*)(„)([^“]*)(“)/g, "\$1\$2«\$4»"); }  // Заменяем " - " на тире txt = txt.replace(/(&nbsp;|\s)-{1,2} /g,'$1\u2014 '); txt = txt.replace (/^- /g,"\u2014 "); txt = txt.replace(/(\d)--(\d)/g, "$1–$2"); txt = txt.replace(/(^|\s)(\d{4})-(\d{4})($|\s|\.|,)/mg, "$1$2–$3$4"); txt = txt.replace(/(^|\s)([IVXLCDM]+)-([IVXLCDM]+)($|\s|\.|,)/img, "$1$2–$3$4"); txt = txt.replace(/--/g, "—");  // Спец-значки ©, ®, ™, § и €. txt = txt.replace(/(\((c|с)\)|\&copy;)/gi, "©"); txt = txt.replace(/(\(r\)|\&reg;)/gi, "®"); txt = txt.replace(/(\((tm|тм)\)|\&trade;)/gi, "™"); txt = txt.replace(/(\(p\)|\&sect;)/gi, "\u00A7"); txt = txt.replace (/\&euro;/gi, "€");  // Вставляем пропущенные и убираем лишние пробелы txt=txt.replace(/и т\.д\./g, "и\u00A0т\.\u00A0д\."); txt=txt.replace(/и т\.п\./g, "и\u00A0т\.\u00A0п\."); txt=txt.replace(/н\.э\./g, "н\. э\."); txt=txt.replace(/т\.е\./g, "т\.\u00A0е\."); txt=txt.replace(/т\.к\./g, "т\.\u00A0к\."); txt=txt.replace(/([А-Я]\.)([А-Я]\.)([А-Я][а-я])/g, "$1 $2 $3"); txt=txt.replace(/([А-Я]\.)([А-Я]\.)/g, "$1 $2"); txt=txt.replace(/^([#\*])([\*#]*)([\[\"\(\„\w\dа-яё])/mg, "$1$2 $3"); txt=txt.replace(/^(=+)([^\s^=])([^=]+)([^\s^=])(=+)/mg, "$1 $2$3$4 $5"); txt=txt.replace(/([а-я])(\.)([А-ЯA-Z])/g, "$1$2 $3"); txt = txt.replace(/([а-яa-z\)\»\“\"\]])(\s*)(\,)([а-яa-z\(\«\„\"\[])/g, "$1$3 $4"); txt = txt.replace(/([а-яa-z\)\»\“\"\]])(\s)([\,\;])(\s)([а-яa-z\(\«\„\"\[])/g, "$1$3 $5"); txt = txt.replace(/(\d)(\s)([%‰])/g, "$1$3");  //Убираем двойные пробелы. txt = txt.substr (1, txt.length-1); txt=txt.replace(/^(?! )(.*?)( {2,})(\S)/mg, "$1 $3"); txt=" "+txt;  //Возвращаем обратно строки, начинающиеся с пробела. i_space=0; r_space=/\x07([0-9]*)\x08/; while (r_space.test(txt)) { i_space++; txt = txt.replace(r_space, a_space[i_space-1]); }  //Возвращаем обратно всё, что было между тегами "math". i_math=0; r_math=/\x05([0-9]*)\x06/; while (r_math.test(txt)) { i_math++; txt = txt.replace(r_math, a_math[i_math-1]); }  //Возвращаем обратно всё, что было между тегами "nowiki". i_nowiki=0; r_nowiki=/\x03([0-9]*)\x04/; while (r_nowiki.test(txt)) { i_nowiki++; txt = txt.replace(r_nowiki, a_nowiki[i_nowiki-1]); }  //Возвращаем обратно HTML-теги ("<" и ">") i=0; r=/\x01([0-9]*)\x02/; while (r.test(txt)) { i++; txt = txt.replace(r, a[i-1]); }  //Возвращаем обратно текст между [[ и ]] i_links=0; r_links=/\x15([0-9]*)\x16/; while (r_links.test(txt)) { i_links++; txt = txt.replace(r_links, a_links[i_links-1]); }  //Возвращаем обратно текст в кавычках после знака "=" i_equal=0; r_equal=/\x11([0-9]*)\x14/; while (r_equal.test(txt)) { i_equal++; txt = txt.replace(r_equal, a_equal[i_equal-1]); }} // END код от [[:ru:MediaWiki:Summary]]  function zamena_5ko() { //Исключаем из обработки всё ("<" и ">") &#x463;&#1586; bgmaps и др. var r=/(?:(\b([0-1]?[0-9]|2[0-4])\.(?:00|30)\b)|(?:\<nowiki\>.+?\<\/nowiki\>)|(\<math\>.+?\<\/math\>)|(&#x?[0-9a-f]+;)|(<([^>]*)>)|(=\s?'.*?')|(=\s?".*?")|(\[\[[^\[\]]+\]\])|((bgmaps|sat)=.*$)|(\[[a-z]+:\/\/[^\]]+\])|\b[a-z0-9\._-]+@[a-z0-9\.-]+)/gmi; // Руснаците са хитри, ама ние сме по-хитри: var a_petko=txt.match(r); txt = txt.replace(r, "\x03\x04\x05");  r=/\d+,\d+,\d[\d,]*/g; var a_zlatko = txt.match(r); var i=0; while (r.test(txt)) { txt = txt.replace(r, a_zlatko[i++].replace(/,/g, '')); }  // Разделяне: r=/([=-]?[^,\.\w][1-9]\d*)(\d{3}\b)/gm; while(1) { var old = txt; txt=txt.replace(r, "$1 $2"); if(old == txt) break; }  // Разделител на хилядите: r=/(\d) (\d\d\d(?:\D|$))/gm; while(1) { var old = txt; txt=txt.replace(r, "$1&nbsp;$2"); if(old == txt) break; }  // Десетична точка: r=/(\d)\.(\d+(?:[-\D\n\r]|$))/gm; txt=txt.replace(r, "$1,$2");  // Край. // Ако е четирицифрено, се пише слято: r=/(\b\d)&nbsp;(\d\d\d(?:[^\d&]|$))/gm; txt=txt.replace(r, "$1$2");  // Всичко обратно: i=0; r=/\x03\x04\x05/; while (r.test(txt)) { txt = txt.replace(r, a_petko[i++]); }}  // взета от [[:en:MediaWiki:Monobook.js]] и основно пренаписанаfunction LinkFA() { var langBody = document.getElementById("p-lang"); if ( !langBody ) { return; } var langs = langBody.getElementsByTagName("li"); for (var i=0; i < langs.length; i++) { var lang = langs[i]; var code = lang.className.substr(10); if ( !document.getElementById(code) ) { continue; } lang.style.padding = "0 0 0 16px"; lang.style.backgroundImage = "url('http://upload.wikimedia.org/wikipedia/en/6/60/LinkFA-star.png')"; lang.style.backgroundRepeat = "no-repeat"; lang.title = "Тази статия е избрана"; }}  // BEGIN Dynamic Navigation Bars (experimental) var NavBarHide = "{{MediaWiki:hide}}";var NavBarShow = "{{MediaWiki:show}}";var displayStyles = new Object();displayStyles[NavBarHide] = "block";displayStyles[NavBarShow] = "none"; // set up max count of Navigation Bars on page,// if there are more, all will be hidden// 0 — all bars will be hidden// 1 — on pages with more than 1 bar all bars will be hiddenvar NavBarShowDefault = 1;  // shows and hides content and picture (if available) of navigation bars// @param indexNavBar the index of navigation bar to be toggledfunction toggleNavBar(indexNavBar){ var NavToggle = document.getElementById("NavToggle" + indexNavBar); var NavFrame = document.getElementById("NavFrame" + indexNavBar);  if (!NavFrame || !NavToggle) { return; }  NavToggle.firstChild.data = NavToggle.firstChild.data == NavBarHide ? NavBarShow : NavBarHide; var display = displayStyles[ NavToggle.firstChild.data ]; for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if (NavChild.nodeName == "#text") { continue; } if (NavChild.className == 'NavPic' || NavChild.className == 'NavContent') { NavChild.style.display = display; } }} // adds show/hide-button to navigation barsfunction createNavBarToggleButton(){ var indexNavBar = 0; // iterate over all < div >-elements var divs = document.getElementsByTagName("div"); for (var i=0; i < divs.length; i++) { var NavFrame = divs[i]; if (NavFrame.className != "NavFrame") { continue; } // if found a navigation bar indexNavBar++; var NavToggle = document.createElement("a"); NavToggle.className = 'NavToggle'; NavToggle.setAttribute('id', 'NavToggle' + indexNavBar); NavToggle.setAttribute('href', 'javascript:toggleNavBar(' + indexNavBar + ');');  var NavToggleText = document.createTextNode(NavBarHide); 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++) { // text nodes (#text) don't have a className if (NavFrame.childNodes[j].nodeName == "#text" || NavFrame.childNodes[j].className != "NavHead") { continue; } NavFrame.childNodes[j].appendChild(NavToggle); } NavFrame.setAttribute('id', 'NavFrame' + indexNavBar); } // if more Navigation Bars found than Default: hide all if (NavBarShowDefault < indexNavBar) { for (var i=1; i <= indexNavBar; i++) { toggleNavBar(i); } } } hookEvent("load", setupCustomEditTools);addOnloadHook(externMessage);addOnloadHook(LinkFA);addOnloadHook(createNavBarToggleButton); // END Dynamic Navigation Bars /* </pre> */

Навигация