<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://encyclopedie-afn.org/2025/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-charinsert-core.js</id>
	<title>MediaWiki:Gadget-charinsert-core.js - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://encyclopedie-afn.org/2025/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-charinsert-core.js"/>
	<link rel="alternate" type="text/html" href="https://encyclopedie-afn.org/2025/index.php?title=MediaWiki:Gadget-charinsert-core.js&amp;action=history"/>
	<updated>2026-04-21T11:12:10Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://encyclopedie-afn.org/2025/index.php?title=MediaWiki:Gadget-charinsert-core.js&amp;diff=49880&amp;oldid=prev</id>
		<title>Websahib : Page créée avec « /**  * Copied from mw:User:Alex Smotrov/edittools.js, modified for use on the English Wikipedia.  *  * Configuration (to be set from Special:MyPage/common.js):  *... »</title>
		<link rel="alternate" type="text/html" href="https://encyclopedie-afn.org/2025/index.php?title=MediaWiki:Gadget-charinsert-core.js&amp;diff=49880&amp;oldid=prev"/>
		<updated>2018-05-12T13:55:53Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « /**  * Copied from &lt;a href=&quot;/2025/index.php?title=Mw:User:Alex_Smotrov/edittools.js&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Mw:User:Alex Smotrov/edittools.js (page inexistante)&quot;&gt;mw:User:Alex Smotrov/edittools.js&lt;/a&gt;, modified for use on the English Wikipedia.  *  * Configuration (to be set from &lt;a href=&quot;/Sp%C3%A9cial:Ma_page/common.js&quot; title=&quot;Spécial:Ma page/common.js&quot;&gt;Special:MyPage/common.js&lt;/a&gt;):  *... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Copied from [[mw:User:Alex Smotrov/edittools.js]], modified for use on the English Wikipedia.&lt;br /&gt;
 *&lt;br /&gt;
 * Configuration (to be set from [[Special:MyPage/common.js]]):&lt;br /&gt;
 *   window.charinsertCustom – Object. Merged into the default charinsert list. For example, setting&lt;br /&gt;
 *       this to { Symbols: &amp;#039;‽&amp;#039; } will add the interrobang to the end of the Symbols section.&lt;br /&gt;
 *   window.editToolsRecall – Boolean. Set true to create a recall switch.&lt;br /&gt;
 *   window.charinsertDontMove – Boolean. Set true to leave the box in its default position, rather&lt;br /&gt;
 *       than moving it above the edit summary.&lt;br /&gt;
 *   window.updateEditTools() – Function. Call after updating window.charinsertCustom to regenerate the&lt;br /&gt;
 *       EditTools window.&lt;br /&gt;
 */&lt;br /&gt;
/* global jQuery, mw, charinsertCustom */&lt;br /&gt;
&lt;br /&gt;
window.updateEditTools = function () {&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
jQuery( document ).ready( function ( $ ) {&lt;br /&gt;
    var EditTools = {&lt;br /&gt;
        // Entries prefixed with ␥ (U+2425 SYMBOL FOR DELETE FORM TWO) will not appear in the article namespace (namespace 0).&lt;br /&gt;
        // Please make any changes to [[MediaWiki:Edittools]] as well, however, instead of using the ␥ symbol, use {{#ifeq:{{NAMESPACE}}|{{ns:0}}| | }}.&lt;br /&gt;
        charinsert: {&lt;br /&gt;
            &amp;#039;Insert&amp;#039;: &amp;#039; – — ° ′ ″ ≈ ≠ ≤ ≥ ± − × ÷ ← → · §  ␥Sign_your_posts_on_talk_pages: ␥~~\~~  Cite_your_sources: &amp;lt;ref&amp;gt;+&amp;lt;/ref&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;Wiki markup&amp;#039;: &amp;#039;Insert:  – — ° ′ ″ ≈ ≠ ≤ ≥ ± − × ÷ ← → · § ␥~~\~~ &amp;lt;ref&amp;gt;+&amp;lt;/ref&amp;gt;  Wiki_markup:  {\{+}}  {\{\{+}}}  |  [+]  [\[+]]  [\[Category:+]]  #REDIRECT.[\[+]]  &amp;amp;nbsp;  &amp;lt;s&amp;gt;+&amp;lt;/s&amp;gt;  &amp;lt;sup&amp;gt;+&amp;lt;/sup&amp;gt;  &amp;lt;sub&amp;gt;+&amp;lt;/sub&amp;gt;  &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;  &amp;lt;pre&amp;gt;+&amp;lt;/pre&amp;gt;  &amp;lt;blockquote&amp;gt;+&amp;lt;/blockquote&amp;gt;  &amp;lt;ref.name=&amp;quot;+&amp;quot;_/&amp;gt;  {\{#tag:ref|+|group=&amp;quot;nb&amp;quot;|name=&amp;quot;&amp;quot;}}  {\{Reflist}}  &amp;lt;references./&amp;gt;  &amp;lt;includeonly&amp;gt;+&amp;lt;/includeonly&amp;gt;  &amp;lt;noinclude&amp;gt;+&amp;lt;/noinclude&amp;gt;  {\{DEFAULTSORT:+}}  &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;  &amp;lt;!--.+_--&amp;gt;  &amp;lt;span.class=&amp;quot;plainlinks&amp;quot;&amp;gt;+&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;Symbols&amp;#039;: &amp;#039;~ | ¡¿†‡↔↑↓•¶#∞  ‘+’ “+” ‹+› «+» {\{angle.bracket|+}}  ¤₳฿₵¢₡₢$₫₯€₠₣ƒ₴₭₤ℳ₥₦№₧₰£៛₨₪৳₮₩¥  ♠♣♥♦  ♭♯♮  ©®™ ◌&amp;#039;,&lt;br /&gt;
            &amp;#039;Latin&amp;#039;: &amp;#039;A a Á á À à Â â Ä ä Ǎ ǎ Ă ă Ā ā Ã ã Å å Ą ą Æ æ Ǣ ǣ  B b  C c Ć ć Ċ ċ Ĉ ĉ Č č Ç ç  D d Ď ď Đ đ Ḍ ḍ Ð ð  E e É é È è Ė ė Ê ê Ë ë Ě ě Ĕ ĕ Ē ē Ẽ ẽ Ę ę Ẹ ẹ Ɛ ɛ Ǝ ǝ Ə ə  F f  G g Ġ ġ Ĝ ĝ Ğ ğ Ģ ģ  H h Ĥ ĥ Ħ ħ Ḥ ḥ  I i İ ı Í í Ì ì Î î Ï ï Ǐ ǐ Ĭ ĭ Ī ī Ĩ ĩ Į į Ị ị  J j Ĵ ĵ  K k Ķ ķ  L l Ĺ ĺ Ŀ ŀ Ľ ľ Ļ ļ Ł ł Ḷ ḷ Ḹ ḹ  M m Ṃ ṃ  N n Ń ń Ň ň Ñ ñ Ņ ņ Ṇ ṇ Ŋ ŋ  O o Ó ó Ò ò Ô ô Ö ö Ǒ ǒ Ŏ ŏ Ō ō Õ õ Ǫ ǫ Ọ ọ Ő ő Ø ø Œ œ  Ɔ ɔ  P p  Q q  R r Ŕ ŕ Ř ř Ŗ ŗ Ṛ ṛ Ṝ ṝ  S s Ś ś Ŝ ŝ Š š Ş ş Ș ș Ṣ ṣ ß  T t Ť ť Ţ ţ Ț ț Ṭ ṭ Þ þ  U u Ú ú Ù ù Û û Ü ü Ǔ ǔ Ŭ ŭ Ū ū Ũ ũ Ů ů Ų ų Ụ ụ Ű ű Ǘ ǘ Ǜ ǜ Ǚ ǚ Ǖ ǖ  V v  W w Ŵ ŵ  X x  Y y Ý ý Ŷ ŷ Ÿ ÿ Ỹ ỹ Ȳ ȳ  Z z Ź ź Ż ż Ž ž  ß Ð ð Þ þ Ŋ ŋ Ə ə&amp;#039;,&lt;br /&gt;
            &amp;#039;Greek&amp;#039;: &amp;#039;ΆάΈέΉήΊίΌόΎύΏώ  ΑαΒβΓγΔδ  ΕεΖζΗηΘθ  ΙιΚκΛλΜμ  ΝνΞξΟοΠπ  ΡρΣσςΤτΥυ  ΦφΧχΨψΩω Ϝϝυ̯ι̯  ᾼᾳᾴᾺὰᾲᾶᾷἈἀᾈᾀἉἁᾉᾁἌἄᾌᾄἊἂᾊᾂἎἆᾎᾆἍἅᾍᾅἋἃᾋᾃἏἇᾏᾇ  ῈὲἘἐἙἑἜἔἚἒἝἕἛἓ  ῌῃῄῊὴῂῆῇἨἠᾘᾐἩἡᾙᾑἬἤᾜᾔἪἢᾚᾒἮἦᾞᾖἭἥᾝᾕἫἣᾛᾓἯἧᾟᾗ  ῚὶῖἸἰἹἱἼἴἺἲἾἶἽἵἻἳἿἷΪϊΐῒῗ  ῸὸὈὀὉὁὌὄὊὂὍὅὋὃ  ῤῬῥ  ῪὺῦὐὙὑὔὒὖὝὕὛὓὟὗΫϋΰῢῧ  ῼῳῴῺὼῲῶῷὨὠᾨᾠὩὡᾩᾡὬὤᾬᾤὪὢᾪᾢὮὦᾮᾦὭὥᾭᾥὫὣᾫᾣὯὧᾯᾧ ᾹᾱᾸᾰῙῑῘῐῩῡῨῠ {{lang|el|+}} {{lang|grc|+}}&amp;#039;,&lt;br /&gt;
            &amp;#039;Cyrillic&amp;#039;: &amp;#039;АаБбВвГг  ҐґЃѓДдЂђ  ЕеЁёЄєЖж  ЗзЅѕИиІі  ЇїЙйЈјКк  ЌќЛлЉљМм  НнЊњОоПп  РрСсТтЋћ  УуЎўФфХх  ЦцЧчЏџШш  ЩщЪъЫыЬь  ЭэЮюЯя ӘәӨөҒғҖҗ ҚқҜҝҢңҮү ҰұҲҳҸҹҺһ  ҔҕӢӣӮӯҘҙ  ҠҡҤҥҪҫӐӑ  ӒӓӔӕӖӗӰӱ  ӲӳӸӹӀ  ҞҟҦҧҨҩҬҭ  ҴҵҶҷҼҽҾҿ  ӁӂӃӄӇӈӋӌ  ӚӛӜӝӞӟӠӡ  ӤӥӦӧӪӫӴӵ  ́&amp;#039;,&lt;br /&gt;
            &amp;#039;Hebrew&amp;#039;: &amp;#039;אבגדהוזחטיכךלמםנןסעפףצץקרשת  ׳ ״  װױײ&amp;#039;,&lt;br /&gt;
            &amp;#039;Arabic&amp;#039;: &amp;#039;  Transliteration: ʾ  ā ī ū ṯ ḥ ḫ ẖ ḏ š ṣ ḍ ṭ ẓ ʿ ġ ẗ á ا ﺁ ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه ة و ي ى ء أ إ ؤ ئ&amp;#039;,&lt;br /&gt;
            &amp;#039;IPA (English)&amp;#039;: &amp;#039;ˈ ˌ  ŋ ɡ tʃ dʒ ʃ ʒ θ ð ʔ  ɑː ɒ æ aɪ aʊ ɛ eɪ ɪ iː ɔː ɔɪ oʊ ʊ uː ʌ ɜr  ə ər ᵻ ᵿ ɒ̃ æ̃  {\{IPAc-en|+}} {\{IPA-en|+}} {\{IPA|+}}  {\{angle.bracket|+}}&amp;#039;,&lt;br /&gt;
            &amp;#039;IPA&amp;#039;: &amp;#039;Consonants: ɱɳɲŋɴ : t̪ d̪ ʈɖɟɡɢʡʔ : ɸβθð  ʃʒʂʐɕʑ  çʝɣχʁ  ħʕʜʢɦɧ : ʋɹɻɥɰʍ : ʙⱱɾɽʀ  ɺ  ɫɬɮɭʎʟ : ɓɗᶑʄɠʛ  ʘǀǃǂǁ  Vowels: ɪʏɨʉɯʊ : øɘɵɤ  ə ɚ  ɛœɜɝɞʌɔ : æɶɐɑɒ  Spacing_diacritics: ˈˌːˑʼˀˤᵝᵊᶢˠʰʱʲˡⁿᵑʷᶣ˞‿˕˔  Combining_diacritics: ̚ ̪ ̺ ̻ ̼ ̬  ̊ ̥ ̞ ̝ ̘ ̙ ̽ ̟ ̠  ̈ ̤ ̹ ̜ ̍ ̩  ̆ ̯  ̃ ̰ ͡ ͜  Tone:  ̋  ́  ̄  ̀  ̏  ̌  ̂ ᷄ ᷅ ᷇ ᷆ ᷈ ᷉  ˥˦˧˨˩ꜛꜜ : ↗↘‖  extIPA: ͈ ͉ ͎ ̣ ̫ ͊ ᷽ ͇ : ˭ᵻᵿ  {\{angle.bracket|+}} {\{IPA|+}} {\{IPA.link|+}}&amp;#039;,&lt;br /&gt;
            &amp;#039;Math and logic&amp;#039;: &amp;#039;− × ÷ ⋅ ° ∗ ∘ ± ∓ ≤ ≥ ≠ ≡ ≅ ≜ ≝ ≐ ≃ ≈ ⊕ ⊗ ⇐ ⇔ ⇒ ∞ ← ↔ → ≪ ≫ ∝ √ ∤ ≀ ◅ ▻ ⋉ ⋊ ⋈ ∴ ∵ ↦ ¬ ∧ ∨ ⊻ ∀ ∃ ∈ ∉ ∋ ⊆ ⊈ ⊊ ⊂ ⊄ ⊇ ⊉ ⊋ ⊃ ⊅ ∪ ∩ ∑ ∏ ∐ ′ ∫ ∬ ∭ ∮ ∇ ∂ ∆ ∅ ℂ ℍ ℕ ℙ ℚ ℝ ℤ ℵ ⌊ ⌋ ⌈ ⌉ ⊤ ⊥ ⊢ ⊣ ⊧ □ ∠ ⟨ ⟩ &amp;lt;math&amp;gt;+&amp;lt;/math&amp;gt; {\{math|+}} {\{mvar|+}} {\{frac|+|}} {\{sfrac|+|}}&amp;#039;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        charinsertDivider: &amp;quot;\240&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
        cookieName: &amp;#039;edittoolscharsubset&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
        createEditTools: function ( placeholder ) {&lt;br /&gt;
            var sel, id;&lt;br /&gt;
            var box = document.createElement( &amp;quot;div&amp;quot; );&lt;br /&gt;
            var prevSubset = 0, curSubset = 0;&lt;br /&gt;
            box.id = &amp;quot;editpage-specialchars&amp;quot;;&lt;br /&gt;
            box.title = &amp;#039;Click on the character or tag to insert it into the edit window&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            // append user-defined sets&lt;br /&gt;
            if ( window.charinsertCustom ) {&lt;br /&gt;
                for ( id in charinsertCustom ) {&lt;br /&gt;
                    if ( !EditTools.charinsert[id] ) {&lt;br /&gt;
                        EditTools.charinsert[id] = &amp;#039;&amp;#039;;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // create drop-down select&lt;br /&gt;
            sel = document.createElement( &amp;#039;select&amp;#039; );&lt;br /&gt;
            for ( id in EditTools.charinsert ) {&lt;br /&gt;
                sel.options[sel.options.length] = new Option( id, id );&lt;br /&gt;
            }&lt;br /&gt;
            sel.selectedIndex = 0;&lt;br /&gt;
            sel.style.marginRight = &amp;#039;.3em&amp;#039;;&lt;br /&gt;
            sel.title = &amp;#039;Choose character subset&amp;#039;;&lt;br /&gt;
            sel.onchange = sel.onkeyup = selectSubset;&lt;br /&gt;
            box.appendChild( sel );&lt;br /&gt;
&lt;br /&gt;
            // create &amp;quot;recall&amp;quot; switch&lt;br /&gt;
            if ( window.editToolsRecall ) {&lt;br /&gt;
                var recall = document.createElement( &amp;#039;span&amp;#039; );&lt;br /&gt;
                recall.appendChild( document.createTextNode( &amp;#039;↕&amp;#039; ) ); // ↔&lt;br /&gt;
                recall.onclick = function() {&lt;br /&gt;
                    sel.selectedIndex = prevSubset;&lt;br /&gt;
                    selectSubset();&lt;br /&gt;
                };&lt;br /&gt;
                with ( recall.style ) {&lt;br /&gt;
                    cssFloat = styleFloat = &amp;#039;left&amp;#039;;&lt;br /&gt;
                    marginRight = &amp;#039;5px&amp;#039;;&lt;br /&gt;
                    cursor = &amp;#039;pointer&amp;#039;;&lt;br /&gt;
                }&lt;br /&gt;
                box.appendChild( recall );&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // load latest selection from cookies&lt;br /&gt;
            try {&lt;br /&gt;
                var cookieRe = new RegExp( &amp;quot;(?:^|;)\\s*&amp;quot; + EditTools.cookieName + &amp;quot;=(\\d+)\\s*(?:;|$)&amp;quot; );&lt;br /&gt;
                var m = cookieRe.exec( document.cookie );&lt;br /&gt;
                if ( m &amp;amp;&amp;amp; m.length &amp;gt; 1 &amp;amp;&amp;amp; parseInt( m[1] ) &amp;lt; sel.options.length ) {&lt;br /&gt;
                    sel.selectedIndex = parseInt( m[1] );&lt;br /&gt;
                }&lt;br /&gt;
            } catch ( err ) {&lt;br /&gt;
                // ignore&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            placeholder.parentNode.replaceChild( box, placeholder );&lt;br /&gt;
            selectSubset();&lt;br /&gt;
            return;&lt;br /&gt;
&lt;br /&gt;
            function selectSubset() {&lt;br /&gt;
                // remember previous (for &amp;quot;recall&amp;quot; button)&lt;br /&gt;
                prevSubset = curSubset;&lt;br /&gt;
                curSubset = sel.selectedIndex;&lt;br /&gt;
                //save into cookies for persistence&lt;br /&gt;
                try {&lt;br /&gt;
                    var expires = new Date();&lt;br /&gt;
                    expires.setTime( expires.getTime() + 30 * 24 * 60 * 60 * 1000 );  // + 30 days&lt;br /&gt;
                    document.cookie = EditTools.cookieName + &amp;quot;=&amp;quot; + curSubset + &amp;quot;;path=/;expires=&amp;quot; + expires.toUTCString();&lt;br /&gt;
                } catch ( err ) {&lt;br /&gt;
                    // ignore&lt;br /&gt;
                }&lt;br /&gt;
                //hide other subsets&lt;br /&gt;
                var pp = box.getElementsByTagName( &amp;#039;p&amp;#039; ) ;&lt;br /&gt;
                for ( var i = 0; i &amp;lt; pp.length; i++ ) {&lt;br /&gt;
                    pp[i].style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
                }&lt;br /&gt;
                //show/create current subset&lt;br /&gt;
                var id = sel.options[curSubset].value;&lt;br /&gt;
                var p = document.getElementById( id );&lt;br /&gt;
                if ( !p ) {&lt;br /&gt;
                    p = document.createElement( &amp;#039;p&amp;#039; );&lt;br /&gt;
                    p.className = &amp;quot;nowraplinks&amp;quot;;&lt;br /&gt;
                    p.id = id;&lt;br /&gt;
                    if ( id == &amp;#039;Arabic&amp;#039; || id == &amp;#039;Hebrew&amp;#039; ) {&lt;br /&gt;
                        p.style.fontSize = &amp;#039;120%&amp;#039;;&lt;br /&gt;
                        p.dir = &amp;#039;rtl&amp;#039;;&lt;br /&gt;
                    }&lt;br /&gt;
                    var tokens = EditTools.charinsert[id];&lt;br /&gt;
                    if ( window.charinsertCustom &amp;amp;&amp;amp; charinsertCustom[id] ) {&lt;br /&gt;
                        if ( tokens.length &amp;gt; 0 ) {&lt;br /&gt;
                            tokens += &amp;#039; &amp;#039;;&lt;br /&gt;
                        }&lt;br /&gt;
                        tokens += charinsertCustom[id];&lt;br /&gt;
                    }&lt;br /&gt;
                    EditTools.createTokens( p, tokens );&lt;br /&gt;
                    box.appendChild( p );&lt;br /&gt;
                }&lt;br /&gt;
                p.style.display = &amp;#039;inline&amp;#039;;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        createTokens: function ( paragraph, str ) {&lt;br /&gt;
            var tokens = str.split( &amp;#039; &amp;#039; ), token, i, n;&lt;br /&gt;
            for ( i = 0; i &amp;lt; tokens.length; i++ ) {&lt;br /&gt;
                token = tokens[i];&lt;br /&gt;
                n = token.indexOf( &amp;#039;+&amp;#039; );&lt;br /&gt;
                if ( token.charAt( 0 ) === &amp;#039;␥&amp;#039; ) {&lt;br /&gt;
                    if ( token.length &amp;gt; 1 &amp;amp;&amp;amp; mw.config.get( &amp;#039;wgNamespaceNumber&amp;#039; ) === 0 ) {&lt;br /&gt;
                        continue;&lt;br /&gt;
                    } else {&lt;br /&gt;
                        token = token.substring( 1 );&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                if ( token == &amp;#039;&amp;#039; || token == &amp;#039;_&amp;#039; ) {&lt;br /&gt;
                    addText( EditTools.charinsertDivider + &amp;#039; &amp;#039; );&lt;br /&gt;
                } else if ( token == &amp;#039;\n&amp;#039; ) {&lt;br /&gt;
                    paragraph.appendChild( document.createElement( &amp;#039;br&amp;#039; ) );&lt;br /&gt;
                } else if ( token == &amp;#039;___&amp;#039; ) {&lt;br /&gt;
                    paragraph.appendChild( document.createElement( &amp;#039;hr&amp;#039; ) );&lt;br /&gt;
                } else if ( token.charAt( token.length-1 ) == &amp;#039;:&amp;#039; ) { // : at the end means just text&lt;br /&gt;
                    addBold( token );&lt;br /&gt;
                } else if ( n == 0 ) { // +&amp;lt;tag&amp;gt;  -&amp;gt;   &amp;lt;tag&amp;gt;+&amp;lt;/tag&amp;gt;&lt;br /&gt;
                    addLink( token.substring( 1 ), &amp;#039;&amp;lt;/&amp;#039; + token.substring( 2 ), token.substring( 1 ) );&lt;br /&gt;
                } else if ( n &amp;gt; 0 ) { // &amp;lt;tag&amp;gt;+&amp;lt;/tag&amp;gt;&lt;br /&gt;
                    addLink( token.substring( 0, n ), token.substring( n+1 ) );&lt;br /&gt;
                } else if ( token.length &amp;gt; 2 &amp;amp;&amp;amp; token.charCodeAt( 0 ) &amp;gt; 127 ) { // a string of insertable characters&lt;br /&gt;
                    for ( var j = 0; j &amp;lt; token.length; j++ ) {&lt;br /&gt;
                        addLink( token.charAt( j ), &amp;#039;&amp;#039; );&lt;br /&gt;
                    }&lt;br /&gt;
                } else {&lt;br /&gt;
                    addLink( token, &amp;#039;&amp;#039; );&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
&lt;br /&gt;
            function addLink( tagOpen, tagClose, name ) {&lt;br /&gt;
                var handler;&lt;br /&gt;
                var dle = tagOpen.indexOf( &amp;#039;\x10&amp;#039; );&lt;br /&gt;
                if ( dle &amp;gt; 0 ) {&lt;br /&gt;
                    var path = tagOpen.substring( dle + 1 ).split( &amp;#039;.&amp;#039; );&lt;br /&gt;
                    tagOpen = tagOpen.substring( 0, dle );&lt;br /&gt;
                    handler = window;&lt;br /&gt;
                    for ( var i = 0; i &amp;lt; path.length; i++ ) {&lt;br /&gt;
                        handler = handler[path[i]];&lt;br /&gt;
                    }&lt;br /&gt;
                } else {&lt;br /&gt;
                    tagOpen = tagOpen.replace( /\./g,&amp;#039; &amp;#039; );&lt;br /&gt;
                    tagClose = tagClose ? tagClose.replace( /_/g,&amp;#039; &amp;#039; ) : &amp;#039;&amp;#039;;&lt;br /&gt;
                    handler = new Function(&lt;br /&gt;
                        &amp;quot;evt&amp;quot;,&lt;br /&gt;
                        &amp;quot;mw.toolbar.insertTags(&amp;#039;&amp;quot; + tagOpen + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + tagClose + &amp;quot;&amp;#039;, &amp;#039;&amp;#039;); evt.preventDefault(); return false;&amp;quot;&lt;br /&gt;
                    );&lt;br /&gt;
                }&lt;br /&gt;
                var a = document.createElement( &amp;#039;a&amp;#039; );&lt;br /&gt;
                name = name || tagOpen + tagClose;&lt;br /&gt;
                name = name.replace( /\\n/g,&amp;#039;&amp;#039; );&lt;br /&gt;
                a.appendChild( document.createTextNode( name ) );&lt;br /&gt;
                a.href = &amp;quot;#&amp;quot;;&lt;br /&gt;
                $( a ).click( handler );&lt;br /&gt;
                paragraph.appendChild( a );&lt;br /&gt;
                addText( &amp;#039; &amp;#039; );&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            function addBold( text ) {&lt;br /&gt;
                var b = document.createElement( &amp;#039;b&amp;#039; );&lt;br /&gt;
                b.appendChild( document.createTextNode( text.replace( /_/g,&amp;#039; &amp;#039; ) ) );&lt;br /&gt;
                paragraph.appendChild( b );&lt;br /&gt;
                addText( &amp;#039; &amp;#039; );&lt;br /&gt;
            }&lt;br /&gt;
            function addText( txt ) {&lt;br /&gt;
                paragraph.appendChild( document.createTextNode( txt ) );&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        last_active_textfield: null,&lt;br /&gt;
&lt;br /&gt;
        registerTextField: function ( evt ) {&lt;br /&gt;
            var e = evt || window.event;&lt;br /&gt;
            var node = e.target || e.srcElement;&lt;br /&gt;
            if ( !node ) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            EditTools.last_active_textfield = node.id;&lt;br /&gt;
            return true;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        getTextArea: function () {&lt;br /&gt;
            var txtarea = null;&lt;br /&gt;
            if ( EditTools.last_active_textfield &amp;amp;&amp;amp; EditTools.last_active_textfield != &amp;quot;&amp;quot; )&lt;br /&gt;
                txtarea = document.getElementById( EditTools.last_active_textfield );&lt;br /&gt;
            if ( !txtarea ) {&lt;br /&gt;
                // Fallback option: old behaviour&lt;br /&gt;
                if ( document.editform ) {&lt;br /&gt;
                    txtarea = document.editform.wpTextbox1;&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Some alternate form? Take the first one we can find&lt;br /&gt;
                    txtarea = document.getElementsByTagName( &amp;#039;textarea&amp;#039; );&lt;br /&gt;
                    if ( txtarea.length &amp;gt; 0 ) {&lt;br /&gt;
                        txtarea = txtarea[0];&lt;br /&gt;
                    } else {&lt;br /&gt;
                        txtarea = null;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            return txtarea;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        setup: function () {&lt;br /&gt;
            var placeholder;&lt;br /&gt;
            if ( $( &amp;#039;#editpage-specialchars&amp;#039; ).length ) {&lt;br /&gt;
                placeholder = $( &amp;#039;#editpage-specialchars&amp;#039; )[0];&lt;br /&gt;
            } else {&lt;br /&gt;
                placeholder = $( &amp;#039;&amp;lt;div id=&amp;quot;editpage-specialchars&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&amp;#039; ).prependTo( &amp;#039;.mw-editTools&amp;#039; )[0];&lt;br /&gt;
            }&lt;br /&gt;
            if ( !placeholder ) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            if ( !window.charinsertDontMove ) {&lt;br /&gt;
                $( &amp;#039;.editOptions&amp;#039; ).before( placeholder );&lt;br /&gt;
            }&lt;br /&gt;
            EditTools.createEditTools( placeholder );&lt;br /&gt;
            window.updateEditTools = function () {&lt;br /&gt;
                EditTools.createEditTools( $( &amp;#039;#editpage-specialchars&amp;#039; )[0] );&lt;br /&gt;
            };&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }; // end EditTools&lt;br /&gt;
&lt;br /&gt;
    EditTools.setup();&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Websahib</name></author>
	</entry>
</feed>