Разлика между версии на „МедияУики:Monobook.js“
| Ред 1: | Ред 1: | ||
| + | /* | ||
| + | Този файл съдържа код на [[Джаваскрипт]] и се зарежда при всички потребители, | ||
| + | ползващи стила Монобук или негови производни | ||
| + | <pre> | ||
| + | */ | ||
| − | + | /* tooltips and access keys */ | |
| − | + | var ta = { | |
| − | + | 'pt-userpage' : ['.','Вашата потребителска страница'], | |
| − | + | 'pt-anonuserpage' : ['.','Потребителската страница за адреса, от който редактирате'], | |
| − | + | 'pt-mytalk' : ['n','Вашата дискусионна страница'], | |
| − | + | 'pt-anontalk' : ['n','Дискусия относно редакциите от този адрес'], | |
| − | + | 'pt-preferences' : ['','Вашите настройки'], | |
| − | + | 'pt-watchlist' : ['l','Списък на страници, чиито промени сте избрали да наблюдавате'], | |
| − | + | 'pt-mycontris' : ['y','Списък на Вашите приноси'], | |
| − | + | 'pt-login' : ['o','В момента не сте влезли. Насърчаваме Ви да влезете, въпреки че не е задължително.'], | |
| − | + | 'pt-anonlogin' : ['o','Насърчаваме Ви да влезете, въпреки че не е задължително.'], | |
| − | + | 'pt-logout' : ['o','Излизане от Уикипедия'], | |
| − | + | 'ca-talk' : ['t','Беседа относно страницата'], | |
| − | + | 'ca-edit' : ['e','Можете да редактирате страницата. Моля, използвайте бутона за предварителен преглед преди да съхраните.'], | |
| − | + | 'ca-addsection' : ['+','Добавяне на коментар към страницата'], | |
| − | + | 'ca-viewsource' : ['e','Страницата е защитена. Може да разгледате изходния й код.'], | |
| − | + | 'ca-history' : ['h','Предишни версии на страницата'], | |
| − | + | 'ca-protect' : ['=','Защитаване на страницата'], | |
| − | + | 'ca-delete' : ['d','Изтриване на страницата'], | |
| − | + | 'ca-undelete' : ['d','Възстановяване на изтрити редакции на страницата'], | |
| − | + | 'ca-move' : ['m','Преместване на страницата'], | |
| − | + | 'ca-nomove' : ['','Нямате разрешение за преместване на страницата'], | |
| − | + | 'ca-watch' : ['w','Добавяне на страницата към списъка Ви за наблюдение'], | |
| − | + | 'ca-unwatch' : ['w','Премахване на страницата от списъка Ви за наблюдение'], | |
| − | + | 'search' : ['f','Претърсване на Уикипедия'], | |
| − | + | 'p-logo' : ['','Началната страница'], | |
| − | + | 'n-mainpage' : ['z','Началната страница'], | |
| − | + | 'n-portal' : ['','Информация за проекта'], | |
| − | + | 'n-currentevents' : ['','Списък на основните категории в Уикипедия'], | |
| − | + | 'n-recentchanges' : ['r','Списък на последните промени в цялото уики'], | |
| − | + | 'n-randompage' : ['x','Случайна страница'], | |
| − | + | 'n-help' : ['','Помощната страница'], | |
| − | + | 'n-sitesupport' : ['','Подкрепете Уикипедия'], | |
| − | + | 't-whatlinkshere' : ['j','Списък на всички страници, сочещи насам'], | |
| − | + | 't-recentchangeslinked' : ['k','Последните промени на страници, сочещи към тази страница'], | |
| − | + | 'feed-rss' : ['','RSS feed за страницата'], | |
| − | + | 'feed-atom' : ['','Atom feed за страницата'], | |
| − | + | 't-contributions' : ['','Показване на приносите на потребителя'], | |
| − | + | 't-emailuser' : ['','Изпращане на писмо на потребителя'], | |
| − | + | 't-upload' : ['u','Качване на файлове'], | |
| − | + | 't-specialpages' : ['q','Списък на всички специални страници'], | |
| − | + | 'ca-nstab-main' : ['c','Преглед на основната страница'], | |
| − | + | 'ca-nstab-user' : ['c','Преглед на потребителската страница'], | |
| − | + | 'ca-nstab-media' : ['c','Преглед на медийната страница'], | |
| − | + | 'ca-nstab-special' : ['','Това е специална страница, която не може да се редактира.'], | |
| − | + | 'ca-nstab-wp' : ['c','Преглед на проектната страница'], | |
| − | + | 'ca-nstab-image' : ['c','Преглед на страницата на картинката'], | |
| − | + | 'ca-nstab-mediawiki' : ['c','Преглед на системното съобщение'], | |
| − | + | 'ca-nstab-template' : ['c','Преглед на шаблона'], | |
| − | + | 'ca-nstab-help' : ['c','Преглед на помощната страница'], | |
| − | + | 'ca-nstab-category' : ['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"], | ||
| + | ["„", "“", "текст", "+български кавички", "„“"], | ||
| + | ["<del>", "</del>", "текст", "Отбелязване на текст като изтрит", "<del>del</del>"], | ||
| + | ["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"], | ||
| + | ["|", "", "", "+отвесна черта — |", " | "], | ||
| + | ["—", "", "", "+дълга чертица — mdash", "—"], | ||
| + | ["–", "", "", "+средна чертица — ndash", " – "], | ||
| + | ["ѝ", "", "", "+„и“ с ударение", "ѝ"], | ||
| + | ["", "̀", "", "+ударение за гласна буква (маркирайте една буква)", "удар."], | ||
| + | ["<"+"!--", "-->", "коментар", "+коментар", "<!--"], | ||
| + | ["{"+"{ЗАМЕСТ:-)}}", "", "", "+шаблон „Усмивка“", ":-)"], | ||
| + | ["{"+"{ЗАМЕСТ: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, "\""); | ||
| + | |||
| + | // Заменяем "...", … и … на многоточие | ||
| + | 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(/\°/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(/( |\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|с)\)|\©)/gi, "©"); | ||
| + | txt = txt.replace(/(\(r\)|\®)/gi, "®"); | ||
| + | txt = txt.replace(/(\((tm|тм)\)|\™)/gi, "™"); | ||
| + | txt = txt.replace(/(\(p\)|\§)/gi, "\u00A7"); | ||
| + | txt = txt.replace (/\€/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() { | ||
| + | //Исключаем из обработки всё ("<" и ">") ѣز 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 $2"); | ||
| + | if(old == txt) break; | ||
| + | } | ||
| + | |||
| + | // Десетична точка: | ||
| + | r=/(\d)\.(\d+(?:[-\D\n\r]|$))/gm; | ||
| + | txt=txt.replace(r, "$1,$2"); | ||
| + | |||
| + | // Край. | ||
| + | // Ако е четирицифрено, се пише слято: | ||
| + | r=/(\b\d) (\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 hidden | ||
| + | var NavBarShowDefault = 1; | ||
| + | |||
| + | |||
| + | // shows and hides content and picture (if available) of navigation bars | ||
| + | // @param indexNavBar the index of navigation bar to be toggled | ||
| + | function 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 bars | ||
| + | function 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> */ | ||
Версия от 01:33, 10 юни 2006
/*
Този файл съдържа код на [[Джаваскрипт]] и се зарежда при всички потребители,
ползващи стила Монобук или негови производни
<pre>
*/
/* tooltips and access keys */
var ta = {
'pt-userpage' : ['.','Вашата потребителска страница'],
'pt-anonuserpage' : ['.','Потребителската страница за адреса, от който редактирате'],
'pt-mytalk' : ['n','Вашата дискусионна страница'],
'pt-anontalk' : ['n','Дискусия относно редакциите от този адрес'],
'pt-preferences' : ['','Вашите настройки'],
'pt-watchlist' : ['l','Списък на страници, чиито промени сте избрали да наблюдавате'],
'pt-mycontris' : ['y','Списък на Вашите приноси'],
'pt-login' : ['o','В момента не сте влезли. Насърчаваме Ви да влезете, въпреки че не е задължително.'],
'pt-anonlogin' : ['o','Насърчаваме Ви да влезете, въпреки че не е задължително.'],
'pt-logout' : ['o','Излизане от Уикипедия'],
'ca-talk' : ['t','Беседа относно страницата'],
'ca-edit' : ['e','Можете да редактирате страницата. Моля, използвайте бутона за предварителен преглед преди да съхраните.'],
'ca-addsection' : ['+','Добавяне на коментар към страницата'],
'ca-viewsource' : ['e','Страницата е защитена. Може да разгледате изходния й код.'],
'ca-history' : ['h','Предишни версии на страницата'],
'ca-protect' : ['=','Защитаване на страницата'],
'ca-delete' : ['d','Изтриване на страницата'],
'ca-undelete' : ['d','Възстановяване на изтрити редакции на страницата'],
'ca-move' : ['m','Преместване на страницата'],
'ca-nomove' : ['','Нямате разрешение за преместване на страницата'],
'ca-watch' : ['w','Добавяне на страницата към списъка Ви за наблюдение'],
'ca-unwatch' : ['w','Премахване на страницата от списъка Ви за наблюдение'],
'search' : ['f','Претърсване на Уикипедия'],
'p-logo' : ['','Началната страница'],
'n-mainpage' : ['z','Началната страница'],
'n-portal' : ['','Информация за проекта'],
'n-currentevents' : ['','Списък на основните категории в Уикипедия'],
'n-recentchanges' : ['r','Списък на последните промени в цялото уики'],
'n-randompage' : ['x','Случайна страница'],
'n-help' : ['','Помощната страница'],
'n-sitesupport' : ['','Подкрепете Уикипедия'],
't-whatlinkshere' : ['j','Списък на всички страници, сочещи насам'],
't-recentchangeslinked' : ['k','Последните промени на страници, сочещи към тази страница'],
'feed-rss' : ['','RSS feed за страницата'],
'feed-atom' : ['','Atom feed за страницата'],
't-contributions' : ['','Показване на приносите на потребителя'],
't-emailuser' : ['','Изпращане на писмо на потребителя'],
't-upload' : ['u','Качване на файлове'],
't-specialpages' : ['q','Списък на всички специални страници'],
'ca-nstab-main' : ['c','Преглед на основната страница'],
'ca-nstab-user' : ['c','Преглед на потребителската страница'],
'ca-nstab-media' : ['c','Преглед на медийната страница'],
'ca-nstab-special' : ['','Това е специална страница, която не може да се редактира.'],
'ca-nstab-wp' : ['c','Преглед на проектната страница'],
'ca-nstab-image' : ['c','Преглед на страницата на картинката'],
'ca-nstab-mediawiki' : ['c','Преглед на системното съобщение'],
'ca-nstab-template' : ['c','Преглед на шаблона'],
'ca-nstab-help' : ['c','Преглед на помощната страница'],
'ca-nstab-category' : ['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"],
["„", "“", "текст", "+български кавички", "„“"],
["<del>", "</del>", "текст", "Отбелязване на текст като изтрит", "<del>del</del>"],
["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"],
["|", "", "", "+отвесна черта — |", " | "],
["—", "", "", "+дълга чертица — mdash", "—"],
["–", "", "", "+средна чертица — ndash", " – "],
["ѝ", "", "", "+„и“ с ударение", "ѝ"],
["", "̀", "", "+ударение за гласна буква (маркирайте една буква)", "удар."],
["<"+"!--", "-->", "коментар", "+коментар", "<!--"],
["{"+"{ЗАМЕСТ:-)}}", "", "", "+шаблон „Усмивка“", ":-)"],
["{"+"{ЗАМЕСТ: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, "\"");
// Заменяем "...", … и … на многоточие
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(/\°/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(/( |\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|с)\)|\©)/gi, "©");
txt = txt.replace(/(\(r\)|\®)/gi, "®");
txt = txt.replace(/(\((tm|тм)\)|\™)/gi, "™");
txt = txt.replace(/(\(p\)|\§)/gi, "\u00A7");
txt = txt.replace (/\€/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() {
//Исключаем из обработки всё ("<" и ">") ѣز 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 $2");
if(old == txt) break;
}
// Десетична точка:
r=/(\d)\.(\d+(?:[-\D\n\r]|$))/gm;
txt=txt.replace(r, "$1,$2");
// Край.
// Ако е четирицифрено, се пише слято:
r=/(\b\d) (\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 hidden
var NavBarShowDefault = 1;
// shows and hides content and picture (if available) of navigation bars
// @param indexNavBar the index of navigation bar to be toggled
function 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 bars
function 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> */