<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://calcwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E6%98%A5%E4%B8%8A%E5%86%B0%E6%9C%88</id>
	<title>计算器百科 - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://calcwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E6%98%A5%E4%B8%8A%E5%86%B0%E6%9C%88"/>
	<link rel="alternate" type="text/html" href="https://calcwiki.org/Special:Contributions/%E6%98%A5%E4%B8%8A%E5%86%B0%E6%9C%88"/>
	<updated>2026-04-06T08:44:02Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Calcbutton&amp;diff=8540</id>
		<title>Template:Calcbutton</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Calcbutton&amp;diff=8540"/>
		<updated>2020-04-06T09:34:29Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​fix: use &amp;lt;span&amp;gt; instead of &amp;lt;div&amp;gt; to avoid unintended paragraph break&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{不推荐使用的模板|此模板仅用于设定按键的基本样式，请使用{{Tl|Key}}来更方便地显示一个计算器按键}}&amp;lt;/noinclude&amp;gt;&amp;lt;span class=&amp;quot;calcbuttons {{{2|}}}&amp;quot; style=&amp;quot;display:inline-block; border:solid 2px #585858; border-radius: 3px; color:black; padding-left: 5px; padding-right: 5px; margin:2px;&amp;quot;&amp;gt; {{{1|{{Color|red|錯誤：未填按鈕名稱}}&amp;lt;includeonly&amp;gt;[[Category:有錯誤的模板]]&amp;lt;/includeonly&amp;gt;}}} &amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;本模板用於模擬計算器按鈕。&lt;br /&gt;
&lt;br /&gt;
使用方法：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Calcbutton|&amp;lt;按鈕名稱&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;[[分类:计算器按钮模板]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&amp;diff=8539</id>
		<title>MediaWiki:Gadget-DotsSyntaxHighlighter.js</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&amp;diff=8539"/>
		<updated>2019-07-13T04:49:31Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​以“mw.loader.load(&amp;#039;//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;#039;);”替换内容&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.load(&#039;//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E9%A6%96%E9%A1%B5&amp;diff=8538</id>
		<title>计算器百科:首页</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E9%A6%96%E9%A1%B5&amp;diff=8538"/>
		<updated>2019-07-13T04:43:39Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:首页}}__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;main-page-2015-01&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;main-page-2015-01-banner&amp;quot; class=&amp;quot;nomobile&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;main-page-2015-01-banner-logo&amp;quot;&amp;gt;&amp;lt;!-- &amp;amp;#x200B; --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;main-page-2015-01-banner-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;计算器百科&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;非营利的计算器专业知识百科&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 100%; border-spacing: 0; background: transparent; table-layout: fixed;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 40%; padding-right: 10px;&amp;quot; |&amp;lt;!-- 右侧栏开始 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 关于开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;关于计算器百科&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;计算器百科（英语：CalcWiki），是一部非营利的计算器专业知识百科全书。&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;专业性&#039;&#039;&#039;：有计算器机型、异常研究成果及计算器编程等有关计算器的诸多条目。&lt;br /&gt;
*&#039;&#039;&#039;非盈利性&#039;&#039;&#039;：其中没有任何形式的广告。&lt;br /&gt;
*&#039;&#039;&#039;开放性&#039;&#039;&#039;：多数内容以知识共享 署名-非商业性使用-相同方式共享 3.0协议发布。&lt;br /&gt;
*&#039;&#039;&#039;自由性&#039;&#039;&#039;：所有人都可以便捷地编辑、纠正百科内容。&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 关于结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 实用连结开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;实用-{zh-hans:链接;zh-hant:连结}-&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;[[File:HILLBLU meccanismo.png|67px|right|link=|alt=]]&lt;br /&gt;
*&amp;lt;big&amp;gt;不会创建新条目？请看[[Help:创建新条目|&#039;&#039;&#039;创建新条目&#039;&#039;&#039;]]&lt;br /&gt;
*想要资助计算器百科帮助我们发展？请看[[Project:捐款|&#039;&#039;&#039;捐款&#039;&#039;&#039;]]&amp;lt;/big&amp;gt;&lt;br /&gt;
*请求管理员帮助？与其他用户讨论问题？请看[[Project:聊天室|&#039;&#039;&#039;聊天室&#039;&#039;&#039;]]&lt;br /&gt;
*想要联系我们？请看[[Project:联系我们|&#039;&#039;&#039;联系我们&#039;&#039;&#039;]]&lt;br /&gt;
*查看近期的重大事件？请看[[Project:公告板/公告板|&#039;&#039;&#039;公告板&#039;&#039;&#039;]]&lt;br /&gt;
*用户需要遵守哪些准则？请看[[CW:P|&#039;&#039;&#039;计算器百科方针&#039;&#039;&#039;]]&lt;br /&gt;
*哪些网站与我们有关？请看[[Project:友情链接|&#039;&#039;&#039;友情链接&#039;&#039;&#039;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 实用连结结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 最近更改开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;最近更改&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;[[File:HILLBLU libro.svg |67px|right|link=|alt=]]&lt;br /&gt;
现有&#039;&#039;&#039;{{NUMBEROFUSERS}}&#039;&#039;&#039;位用户，其中有活跃用户&#039;&#039;&#039;{{NUMBEROFACTIVEUSERS}}&#039;&#039;&#039;位。&lt;br /&gt;
&lt;br /&gt;
{{Special:最近更改|limit=10|days=100|namespace=0}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 最近更改结束 --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 60%; padding-left: 10px;&amp;quot; |&amp;lt;!-- 左侧栏开始 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 现有条目开始 --&amp;gt;&amp;lt;div style=&amp;quot;position: relative; width: 100%; height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; left: -10px; top: -18px; width: 54px; height: 54px; display: inline-block;&amp;quot;&amp;gt;[[File:HILLBLU indici.png|54px|link=|alt=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; left: -10px; top: 5px; display: inline-block&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; height: 32px; padding: 0; border-bottom: 0; font-size: 120%; color: #fff; font-weight: bold; text-shadow: #000 1px 1px 3px;&amp;quot;&amp;gt;现有{{NUMBEROFARTICLES}}篇条目，其中有{{#expr:{{NUMBEROFARTICLES}}-{{PAGESINCAT:来源于f吧的条目}}}}篇原创条目&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; top:-55px; overflow:hidden; z-index:-5;&amp;quot;&amp;gt;[[File:Vigar-zh-wikipedia-2010-new-design.png|link=|alt=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #aaa; background: #fff; padding: 15px 10px 10px 10px;&amp;quot;&amp;gt;{{/list}}&amp;lt;div style=&amp;quot;clear: both; margin: -0.8em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- 现有条目结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 左栏结束 --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;div style=&amp;quot;width: 600px; margin: -0.8em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;!-- 撑开过窄的页面 --&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E9%A6%96%E9%A1%B5&amp;diff=8537</id>
		<title>计算器百科:首页</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E9%A6%96%E9%A1%B5&amp;diff=8537"/>
		<updated>2019-07-13T03:46:47Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:首页}}__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;计算器百科正在迁移，您现在可以查看百科条目，但是在迁移完成之前暂时无法编辑。&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;当您看到这一行时，您已经连接到了 CalcWiki 的新服务器上了。&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;main-page-2015-01&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;main-page-2015-01-banner&amp;quot; class=&amp;quot;nomobile&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;main-page-2015-01-banner-logo&amp;quot;&amp;gt;&amp;lt;!-- &amp;amp;#x200B; --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;main-page-2015-01-banner-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;计算器百科&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;非营利的计算器专业知识百科&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 100%; border-spacing: 0; background: transparent; table-layout: fixed;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 40%; padding-right: 10px;&amp;quot; |&amp;lt;!-- 右侧栏开始 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 关于开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;关于计算器百科&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;计算器百科（英语：CalcWiki），是一部非营利的计算器专业知识百科全书。&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;专业性&#039;&#039;&#039;：有计算器机型、异常研究成果及计算器编程等有关计算器的诸多条目。&lt;br /&gt;
*&#039;&#039;&#039;非盈利性&#039;&#039;&#039;：其中没有任何形式的广告。&lt;br /&gt;
*&#039;&#039;&#039;开放性&#039;&#039;&#039;：多数内容以知识共享 署名-非商业性使用-相同方式共享 3.0协议发布。&lt;br /&gt;
*&#039;&#039;&#039;自由性&#039;&#039;&#039;：所有人都可以便捷地编辑、纠正百科内容。&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 关于结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 实用连结开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;实用-{zh-hans:链接;zh-hant:连结}-&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;[[File:HILLBLU meccanismo.png|67px|right|link=|alt=]]&lt;br /&gt;
*&amp;lt;big&amp;gt;不会创建新条目？请看[[Help:创建新条目|&#039;&#039;&#039;创建新条目&#039;&#039;&#039;]]&lt;br /&gt;
*想要资助计算器百科帮助我们发展？请看[[Project:捐款|&#039;&#039;&#039;捐款&#039;&#039;&#039;]]&amp;lt;/big&amp;gt;&lt;br /&gt;
*请求管理员帮助？与其他用户讨论问题？请看[[Project:聊天室|&#039;&#039;&#039;聊天室&#039;&#039;&#039;]]&lt;br /&gt;
*想要联系我们？请看[[Project:联系我们|&#039;&#039;&#039;联系我们&#039;&#039;&#039;]]&lt;br /&gt;
*查看近期的重大事件？请看[[Project:公告板/公告板|&#039;&#039;&#039;公告板&#039;&#039;&#039;]]&lt;br /&gt;
*用户需要遵守哪些准则？请看[[CW:P|&#039;&#039;&#039;计算器百科方针&#039;&#039;&#039;]]&lt;br /&gt;
*哪些网站与我们有关？请看[[Project:友情链接|&#039;&#039;&#039;友情链接&#039;&#039;&#039;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 实用连结结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 最近更改开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;最近更改&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;[[File:HILLBLU libro.svg |67px|right|link=|alt=]]&lt;br /&gt;
现有&#039;&#039;&#039;{{NUMBEROFUSERS}}&#039;&#039;&#039;位用户，其中有活跃用户&#039;&#039;&#039;{{NUMBEROFACTIVEUSERS}}&#039;&#039;&#039;位。&lt;br /&gt;
&lt;br /&gt;
{{Special:最近更改|limit=10|days=100|namespace=0}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 最近更改结束 --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 60%; padding-left: 10px;&amp;quot; |&amp;lt;!-- 左侧栏开始 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 现有条目开始 --&amp;gt;&amp;lt;div style=&amp;quot;position: relative; width: 100%; height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; left: -10px; top: -18px; width: 54px; height: 54px; display: inline-block;&amp;quot;&amp;gt;[[File:HILLBLU indici.png|54px|link=|alt=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; left: -10px; top: 5px; display: inline-block&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; height: 32px; padding: 0; border-bottom: 0; font-size: 120%; color: #fff; font-weight: bold; text-shadow: #000 1px 1px 3px;&amp;quot;&amp;gt;现有{{NUMBEROFARTICLES}}篇条目，其中有{{#expr:{{NUMBEROFARTICLES}}-{{PAGESINCAT:来源于f吧的条目}}}}篇原创条目&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; top:-55px; overflow:hidden; z-index:-5;&amp;quot;&amp;gt;[[File:Vigar-zh-wikipedia-2010-new-design.png|link=|alt=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #aaa; background: #fff; padding: 15px 10px 10px 10px;&amp;quot;&amp;gt;{{/list}}&amp;lt;div style=&amp;quot;clear: both; margin: -0.8em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- 现有条目结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 左栏结束 --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;div style=&amp;quot;width: 600px; margin: -0.8em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;!-- 撑开过窄的页面 --&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E9%A6%96%E9%A1%B5&amp;diff=8536</id>
		<title>计算器百科:首页</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E9%A6%96%E9%A1%B5&amp;diff=8536"/>
		<updated>2019-07-11T13:23:43Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:首页}}__NOTOC__ __NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;计算器百科正在迁移，您现在可以查看百科条目，但是在迁移完成之前暂时无法编辑。&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;main-page-2015-01&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;main-page-2015-01-banner&amp;quot; class=&amp;quot;nomobile&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;main-page-2015-01-banner-logo&amp;quot;&amp;gt;&amp;lt;!-- &amp;amp;#x200B; --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;main-page-2015-01-banner-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;计算器百科&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;非营利的计算器专业知识百科&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width: 100%; border-spacing: 0; background: transparent; table-layout: fixed;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width: 40%; padding-right: 10px;&amp;quot; |&amp;lt;!-- 右侧栏开始 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 关于开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;关于计算器百科&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;计算器百科（英语：CalcWiki），是一部非营利的计算器专业知识百科全书。&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;专业性&#039;&#039;&#039;：有计算器机型、异常研究成果及计算器编程等有关计算器的诸多条目。&lt;br /&gt;
*&#039;&#039;&#039;非盈利性&#039;&#039;&#039;：其中没有任何形式的广告。&lt;br /&gt;
*&#039;&#039;&#039;开放性&#039;&#039;&#039;：多数内容以知识共享 署名-非商业性使用-相同方式共享 3.0协议发布。&lt;br /&gt;
*&#039;&#039;&#039;自由性&#039;&#039;&#039;：所有人都可以便捷地编辑、纠正百科内容。&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 关于结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 实用连结开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;实用-{zh-hans:链接;zh-hant:连结}-&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;[[File:HILLBLU meccanismo.png|67px|right|link=|alt=]]&lt;br /&gt;
*&amp;lt;big&amp;gt;不会创建新条目？请看[[Help:创建新条目|&#039;&#039;&#039;创建新条目&#039;&#039;&#039;]]&lt;br /&gt;
*想要资助计算器百科帮助我们发展？请看[[Project:捐款|&#039;&#039;&#039;捐款&#039;&#039;&#039;]]&amp;lt;/big&amp;gt;&lt;br /&gt;
*请求管理员帮助？与其他用户讨论问题？请看[[Project:聊天室|&#039;&#039;&#039;聊天室&#039;&#039;&#039;]]&lt;br /&gt;
*想要联系我们？请看[[Project:联系我们|&#039;&#039;&#039;联系我们&#039;&#039;&#039;]]&lt;br /&gt;
*查看近期的重大事件？请看[[Project:公告板/公告板|&#039;&#039;&#039;公告板&#039;&#039;&#039;]]&lt;br /&gt;
*用户需要遵守哪些准则？请看[[CW:P|&#039;&#039;&#039;计算器百科方针&#039;&#039;&#039;]]&lt;br /&gt;
*哪些网站与我们有关？请看[[Project:友情链接|&#039;&#039;&#039;友情链接&#039;&#039;&#039;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 实用连结结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 最近更改开始 --&amp;gt;&amp;lt;div style=&amp;quot;width: 100%; background: #cbe9ff; height: 31px; border-bottom: 3px solid #004e87; margin-top: 10px;&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; padding: 0;border-bottom: 0; font-size: 110%; color: #000000; font-weight: bold; text-shadow: #fff 1px 1px 3px;margin-left:3px&amp;quot;&amp;gt;最近更改&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; padding: 20px 10px 21px;&amp;quot;&amp;gt;[[File:HILLBLU libro.svg |67px|right|link=|alt=]]&lt;br /&gt;
现有&#039;&#039;&#039;{{NUMBEROFUSERS}}&#039;&#039;&#039;位用户，其中有活跃用户&#039;&#039;&#039;{{NUMBEROFACTIVEUSERS}}&#039;&#039;&#039;位。&lt;br /&gt;
&lt;br /&gt;
{{Special:最近更改|limit=10|days=100|namespace=0}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- 最近更改结束 --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 60%; padding-left: 10px;&amp;quot; |&amp;lt;!-- 左侧栏开始 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 现有条目开始 --&amp;gt;&amp;lt;div style=&amp;quot;position: relative; width: 100%; height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; left: -10px; top: -18px; width: 54px; height: 54px; display: inline-block;&amp;quot;&amp;gt;[[File:HILLBLU indici.png|54px|link=|alt=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; left: -10px; top: 5px; display: inline-block&amp;quot;&amp;gt;&amp;lt;h2 style=&amp;quot;line-height: 32px; height: 32px; padding: 0; border-bottom: 0; font-size: 120%; color: #fff; font-weight: bold; text-shadow: #000 1px 1px 3px;&amp;quot;&amp;gt;现有{{NUMBEROFARTICLES}}篇条目，其中有{{#expr:{{NUMBEROFARTICLES}}-{{PAGESINCAT:来源于f吧的条目}}}}篇原创条目&amp;lt;/h2&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; top:-55px; overflow:hidden; z-index:-5;&amp;quot;&amp;gt;[[File:Vigar-zh-wikipedia-2010-new-design.png|link=|alt=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #aaa; background: #fff; padding: 15px 10px 10px 10px;&amp;quot;&amp;gt;{{/list}}&amp;lt;div style=&amp;quot;clear: both; margin: -0.8em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- 现有条目结束 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 左栏结束 --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;div style=&amp;quot;width: 600px; margin: -0.8em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;!-- 撑开过窄的页面 --&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-Nspire%E7%B3%BB%E5%88%97&amp;diff=8527</id>
		<title>TI-Nspire系列</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-Nspire%E7%B3%BB%E5%88%97&amp;diff=8527"/>
		<updated>2019-04-26T17:10:31Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TI-Nspire系列计算器是[[德州仪器|美国德州仪器（TI）公司]]生产的当今最为强大的计算器之一，同时也是德州仪器公司目前最为强大的计算器产品系列。&lt;br /&gt;
&lt;br /&gt;
== 概述 ==&lt;br /&gt;
&lt;br /&gt;
TI-Nspire系列和之前的德州仪器[[计算器#图形计算器|图形计算器]]截然不同。TI希望计算器有着一个对于新用户来说更为友好的界面，因此TI-Nspire使用了一个相对于之前型号的产品更为接近家用电脑的界面。硬件方面，TI-Nspire改用了ARM架构的CPU,灰度屏机型速度可达75MHz（后期的OS版本开始超频CPU至120MHz），彩屏机型更是达到了132MHz。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;有关Nspire的具体硬件信息，请参见：&#039;&#039; [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
Nspire系列机型可大致分为两个版本：[[CAS|CAS]]版本和无CAS版本。无CAS版本不能执行需要计算机代数系统（[[CAS|CAS]]）的运算，比如计算不定积分，求解符号方程和导函数等等，而CAS版本机型可以完成这些运算。TI-Nspire的CAS系统使用方式和上一代机型（如[[TI-89系列|TI-89]]，[[TI-92系列#航海者200|Voyage 200]])等非常接近，并增加了书面输入方式和新的运算函数。 CAS机型的颜色与非CAS机型不同，且正面会标注出CAS，背面有着很大的突起的“CAS”字样，这使得用户很容易区分CAS版本和非CAS版本。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire仅支持TI-BASIC和Lua作为其编程语言，且不能像前一代机型那样安装[[Flash_Apps|Flash Apps]]。然而，通过系统破解程序&amp;quot;[[Ndless]]&amp;quot;,用户仍可使用C/C++/汇编语言为TI-Nspire编写应用程序，并可通过特定的应用程序实现机上编写除[[TI-BASIC]]和Lua之外的其他语言。&lt;br /&gt;
&lt;br /&gt;
在正常的情况下，关闭TI-Nspire的电源仅仅是使计算器进入休眠状态，此时计算器可以在一瞬间完成开机。然而，如果计算器的休眠时长超过了系统设置中设定的最大时长，或是电池耗尽或被移除过，TI-Nspire就需要进行冷启动。这将耗用一段不短的时间，期间用户可以看到计算器的开机画面和进度条。&lt;br /&gt;
&lt;br /&gt;
== Nspire家族 ==&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire Clickpad（CAS） ===&lt;br /&gt;
&lt;br /&gt;
[[File:TI-Nspire Clickpad Non-CAS.jpg|thumb|right|200px|TI-Nspire Clickpad，非CAS机型]] TI-Nspire Clickpad（CAS）是最早投入正式生产的TI-Nspire。其投产年份为2007年，2010年停产。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad（CAS）具有一个全方向的方向键（这个方向键就是“Clickpad”。虽然标注为4向，但在操作鼠标指针时，指针可以向任何一个手指按下的方向移动。），且键盘上带有许多绿色和灰色小豆状的字母和符号按键。（这使得TI-Nspire Clickpad有了个“绿豆”的绰号。）&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad（CAS）的键盘可以被拆下并更换为专用的[[TI-84系列|TI-84]]键盘，此时计算器内置的TI-84模拟器将启动，TI-Nspire将与前代机型TI-84无异。（然而，由于硬件上的原因，&#039;&#039;&#039;由汇编语言编写的TI-84 APP可能不能正常运行和使用。&#039;&#039;&#039;）&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad（CAS）使用4节AAA电池作为电源。在更换电池时，首先需要扳动计算器背面的开关，取下键盘，方能将电池放入电池槽。而如果在计算器开机时取下键盘，它将立刻关机。（然而，计算器启动过程中或运行[[Ndless]]程序时，不会自动关机。）&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad被允许在PSAT, SAT, SAT II, ACT, AP,和IB考试中使用。然而，请注意，&#039;&#039;&#039;CAS版本机型不能在ACT和IB考试中使用。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
非CAS机型是蓝色机身，白色边框，而CAS机型是白色机身，灰色边框。&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire Touchpad （CAS） ===&lt;br /&gt;
&lt;br /&gt;
[[File:TI-Nspire CAS Touchpad.jpg|thumb|right|200px|TI-Nspire Touchpad CAS]] TI-Nspire Touchpad （CAS）是TI-Nspire Clickpad（CAS）的下一代机型，自2010年开始生产。 TI-Nspire Touchpad（CAS）和TI-Nspire Clickpad（CAS）在硬件上并没有本质上的区别，只是Touchpad换用了一种全新的键盘。 相对Clickpad的键盘，Touchpad的键盘具有以下改动：&lt;br /&gt;
&lt;br /&gt;
*全向方向键被换为一个触控板（这个触控板就是“Touchpad”），类似于笔记本电脑的触控板，可以更快更方便地移动鼠标指针。同时，Touchpad允许用户在除绘图页面外的位置使用鼠标指针。Touchpad同时也有方向键的作用。与Clickpad不同的是，在硬件层面上，整个触控板是一个按键，Touchpad通过判断手指在触控板上的位置来判断按下的方向键是哪一个。&lt;br /&gt;
*字母键不再以“绿豆”形式排列，而是被集中到键盘下方，以ABCDEF...方式排列，而原先分布在小豆状按键上面的部分符号被放置到通过{{Key|π►}}键打开的菜单中。（这个键盘布局遭到了很多人的批评，因为和正常的计算机键盘差别太大，导致短时间内很难适应。TI将键盘设计为这种排列是为了能在SAT等考试中使用——SAT和类似的一些考试不允许使用带有QWERTY键盘布局的计算器。）&lt;br /&gt;
*{{Key|sin}}{{Key|cos}}{{Key|tan}}键被取消——这几个功能被放置在通过{{Key|trig►}}键打开的菜单中。&lt;br /&gt;
*增加了“便签本”键和{{Key|doc}}键，后者被用来完成原先Clickpad键盘上{{Key|ctrl}}+{{Key|home}}的操作。&lt;br /&gt;
&lt;br /&gt;
同时，Nspire Touchpad（CAS）增加了一个锂电池插口，可以同时使用专用锂电池和4节AAA电池，也可以单独使用其中一种供电方式。&lt;br /&gt;
&lt;br /&gt;
非CAS机型是黑色机身，白色边框，而CAS机型是黑色机身，灰色边框。（CAS机型的配色使得Nspire Touchpad CAS有了个“大黑”的绰号。）&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire Touchpad学校特供版 ====&lt;br /&gt;
&lt;br /&gt;
[[File:Ti-ez.jpg|thumb|right|200px|TI-Nspire Touchpad学校特供版]] TI-Nspire Touchpad学校特供版是学校大批量订购并借用给学生使用的产品，除颜色特殊外，硬件上和一般的TI-Nspire Touchpad没有任何区别。 学校特供版使用的配色是黑色机身，黄色边框，并且写有“School Property”字样。（德州仪器官方将这种颜色称为“校车黄”。将计算器设计成这种颜色是为了突出这种计算器是学校专用版，以便于在计算器被私自从学校带走/被盗后易于找到。此外是这种配色使得它有了个“大黄”的绰号。）&lt;br /&gt;
&lt;br /&gt;
这种学校特供版TI官方并不对外零售，然而网上仍有一些外流的学校特供版机型在进行零售。&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire CX (CAS) ===&lt;br /&gt;
&lt;br /&gt;
[[File:TI-nspire CX CAS.jpg|thumb|right|200px|TI-Nspire CX CAS]] TI-Nspire CX(CAS)是发布于2011年2月25日TI-Nspire Clickpad/Touchpad的后续产品，采用了真彩色屏幕和1.57CM的超薄机身，CPU速度加快，存储容量扩大到100MB，RAM也扩大到64MB。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX(CAS)取消了AAA电池，改为内置在机体的1060mAh（后期容量增大到1200mAh）锂电池，通过Mini-USB接口进行充电。&lt;br /&gt;
&lt;br /&gt;
键盘的布局和TI-Nspire Touchpad相同，然而键盘的制作工艺发生了改动，从导电胶式变为金属片式。同时，TI-Nspire CX的键盘不能拆卸。&lt;br /&gt;
&lt;br /&gt;
接口方面，USB接口被从顶部的正中间被移到了靠右侧，而左侧增加了一个“TI-Nspire无线导航系统”（俗称“Nspire无线网卡”）的接口。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX可在SAT, IB, AP 和 ACT考试中使用，而TI-Nspire CX CAS&#039;&#039;&#039;只能在SAT和AP考试中使用&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX非CAS版本是深蓝色机身，白色边框，CAS版本是黑色机身，灰色边框。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire CX-C(CAS) ====&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX-C(CAS)属于TI-Nspire CX(CAS)的一个衍生版本，是德州仪器面向中国市场而推出的一个特别版本。&lt;br /&gt;
&lt;br /&gt;
相比于一般的TI-Nspire CX（CAS），TI-Nspire CX-C(CAS)可以安装一个简单的电子词典功能，并配有中文的按键标记。&lt;br /&gt;
&lt;br /&gt;
硬件方面上，和普通的CX区别仅仅是NAND的信息不同。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire CM-C （CAS） ====&lt;br /&gt;
&lt;br /&gt;
[[File:TI-NspireCM-C.jpg|thumb|right|200px|TI-Nspire CM-C]] TI-Nspire CM-C（CAS）是是德州仪器面向中国市场而推出的一个TI-Nspire CX（CAS）的精简版本。&lt;br /&gt;
&lt;br /&gt;
与TI-Nspire CX（CAS）相比，TI-Nspire CM-C（CAS）的运行内存只有32MB，是TI-Nspire CX（CAS）的一半。这在一般应用中不会遇到问题，但是会使得一些[[Ndless|Ndless]]程序因内存不足而无法正常使用。&lt;br /&gt;
&lt;br /&gt;
外观上，相比于TI-Nspire CX（CAS），CM采用了更为流线型的机身和纯白色配色。同时，TI-Nspire CM-C（CAS）也带有TI-Nspire CX-C（CAS）的中文按键标记，但是不能够安装电子词典功能。&lt;br /&gt;
&lt;br /&gt;
此外，TI-Nspire CM-C（CAS）的“TI-Nspire无线导航系统”接口被取消。&lt;br /&gt;
&lt;br /&gt;
德州仪器已经停止了对TI-Nspire CM-C（CAS）的技术支持，导致其系统版本最高仅为3.2。（CX（C）的操作系统仍在更新）&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire CX II (CAS) ===&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX II 和 TI-Nspire CX II CAS 是德州仪器 2019 年发布的产品。 与上一代的 TI-Nspire CX (CAS) 系列相比， TI-Nspire CX II (CAS) 升级了更快的内存和处理器， 更新了 “扁平化” 的用户界面， 并增加了少量绘图和 TI-Basic 相关功能。&lt;br /&gt;
&lt;br /&gt;
=== 工程机 ===&lt;br /&gt;
&lt;br /&gt;
工程机是德州仪器内部用于测试TI-Nspire设计理念和系统功能的机型。&lt;br /&gt;
&lt;br /&gt;
正常情况下，这些机型在完成测试目的后就应该被销毁，然而还是有大量的工程机流入了市场。目前尚不清楚工程机流入市场的原因和外流数量。&lt;br /&gt;
&lt;br /&gt;
目前发现的工程机型号包括Phoenix，TI-XXXXXXXXXXX（绰号“德仪十一叉”）（&#039;&#039;此处XXXXXXXXXXX不指代一个字符串——该工程机本身名称就是TI后接11个X&#039;&#039;），TI-Nspire CAS+，TI-Nspire Color等。&lt;br /&gt;
&lt;br /&gt;
工程机一般使用很古老的操作系统版本（通常低于2.0），这些系统缺少很多标准系统具有的功能，而且工程机经常会有各种软件及硬件方面的故障，问题和不完备之处。因此，如果准备采购日常使用的计算器，&#039;&#039;&#039;请勿购买工程机——即使价格可能很便宜。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== 辨别工程机的方法 ====&lt;br /&gt;
&lt;br /&gt;
* 如果发现计算器型号为Phoenix，TI-XXXXXXXXXXX，TI-Nspire CAS+，TI-Nspire Color，则一定是工程机。&lt;br /&gt;
* Nspire机身背面的下方有一排序列号，类似：&lt;br /&gt;
&lt;br /&gt;
  2058000389 P-0610B&lt;br /&gt;
&lt;br /&gt;
如果里面有出现“EVT”、“DVT”等字样，则是工程机。&lt;br /&gt;
&lt;br /&gt;
* 若开机界面右上角有一个方块，则一定是工程机。&#039;&#039;&#039;（然而，工程机的开机界面右上角不一定都有一个方块）&#039;&#039;&#039;&lt;br /&gt;
* 在系统版本的显示界面中，若版本号含有&amp;quot;EVT&amp;quot; &amp;quot;DVT&amp;quot;字样，则一定是工程机。&lt;br /&gt;
* 若机身有打孔或有修复打孔的痕迹，则一定是工程机&lt;br /&gt;
* 若拆开计算器发现内部有除了屏幕排线和锂电池电源线之外的任何连接线（简称为“飞线”）则一定是工程机&lt;br /&gt;
如果您没有拆解电子设备的经历请勿擅自拆解以免造成不必要的损失！&lt;br /&gt;
&lt;br /&gt;
==== 重要注意事项 ====&lt;br /&gt;
部分工程机外观与正常的TI-Nspire无异，甚至包括机身背面的序列号，请仔细甄别。&lt;br /&gt;
如果您要在网上购买TI-Nspire机型，请务必要求卖家提供版本界面，以防上当。&lt;br /&gt;
&lt;br /&gt;
== TI-Nspire操作系统版本 ==&lt;br /&gt;
&lt;br /&gt;
目前，TI-Nspire已经历经了如下的操作系统版本：&lt;br /&gt;
&lt;br /&gt;
=== 历经的系统版本 ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! 版本&lt;br /&gt;
! 发布日期&lt;br /&gt;
! Clickpad (CAS)&lt;br /&gt;
! Touchpad (CAS)&lt;br /&gt;
! CX(-C) (CAS)&lt;br /&gt;
! CM(-C) (CAS)&lt;br /&gt;
|+&lt;br /&gt;
| 1.0.491 *&lt;br /&gt;
| 2006 年 6 月&lt;br /&gt;
| rowspan=27 | 支持&lt;br /&gt;
| rowspan=11 | 不支持&lt;br /&gt;
| rowspan=14 | 不支持&lt;br /&gt;
| rowspan=17 | 不支持&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.526 *&lt;br /&gt;
| 2006 年 9 月&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.8916 *&lt;br /&gt;
| 2006 年与 2007 年交接&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.9170 &lt;br /&gt;
| 2007 年 5 月 7 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.9253（非 CAS 机版本）&lt;br /&gt;
| （暂缺）&lt;br /&gt;
|-&lt;br /&gt;
| 1.2.2394 &lt;br /&gt;
| 2007 年 8 月 30 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.2437 &lt;br /&gt;
| 2008 年 1 月 8 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.4.11643&lt;br /&gt;
| 2008 年 7 月 9 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.6.4295 &lt;br /&gt;
| 2008 年 10 月 29 日 / 2008 年 12 月 9 日 **&lt;br /&gt;
|-&lt;br /&gt;
| 1.7.2741 &lt;br /&gt;
| 2009 年 5 月 19 日 / 2009 年 6 月 6 日 **&lt;br /&gt;
|-&lt;br /&gt;
| 1.8 (build 80) Dev *&lt;br /&gt;
| 2009 年末&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.0.1188 &lt;br /&gt;
| 2010 年 3 月 5 日&lt;br /&gt;
| rowspan =16 | 支持&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1.60 &lt;br /&gt;
| 2010 年 5 月 3 日&lt;br /&gt;
|-&lt;br /&gt;
| 2.1.0.631&lt;br /&gt;
| 2010 年 7 月 17 日&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1.1753&lt;br /&gt;
| 2011 年 4 月&lt;br /&gt;
| rowspan=22 | 支持&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.2.1791&lt;br /&gt;
| 2011 年 5 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.2.1793&lt;br /&gt;
| （暂缺）&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.0.392&lt;br /&gt;
| 2011 年 9 月 7 日&lt;br /&gt;
| rowspan=4 | 支持&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.0.1212&lt;br /&gt;
| 2012 年 6 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.0.1219&lt;br /&gt;
| 2012 年 6 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.3.1233&lt;br /&gt;
| 2012 年 12 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.4.1237&lt;br /&gt;
| （暂缺）&lt;br /&gt;
| rowspan=18 | 不支持&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 （仅供 iPad 模拟器）&lt;br /&gt;
| （暂缺）&lt;br /&gt;
|-&lt;br /&gt;
| 3.6.0.546&lt;br /&gt;
| 2013 年 12 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.6.0.550&lt;br /&gt;
| 2014 年 2 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.9.0.461&lt;br /&gt;
| 2014 年 5 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.9.0.463&lt;br /&gt;
| 2014 年 6 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.9.1.38&lt;br /&gt;
| （暂缺）&lt;br /&gt;
| rowspan=9 | 不支持&lt;br /&gt;
| rowspan=9 | 不支持&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.0.235&lt;br /&gt;
| 2015 年 3 月&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.3.29&lt;br /&gt;
| 2015 年 12 月&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.0.532 &lt;br /&gt;
| 2016 年 2 月&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.0.547 ***&lt;br /&gt;
| （未知）&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.0.702&lt;br /&gt;
| 2016 年 8 月 18日&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.0.531 ***&lt;br /&gt;
| （未知）&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.0.532&lt;br /&gt;
| 2017 年 1 月 19 日&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.0.1180&lt;br /&gt;
| 2017 年 8 月 29 日&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* 原型机版本&#039;&#039;&lt;br /&gt;
&#039;&#039;** 实际发布日期&#039;&#039;&lt;br /&gt;
&#039;&#039;*** 已知的内部版本（未对外公开的版本）&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 系统的演变过程 ===&lt;br /&gt;
[[File:Ti Nsprie OS3.6 01.jpg|thumb|right|200px|OS 3.6 CAS版本的Home界面]] &lt;br /&gt;
OS1.1：没有TI-BASIC程序功能，只有Function。运行速度非常迟缓。电量bug。&lt;br /&gt;
&lt;br /&gt;
OS1.7 出现了Program（程序）和MyLib（库）。MyLib支持用户在别的文档中调用储存在MyLib文件夹下的文件内程序。Graph（绘图）和Geometry（几何）下鼠标移动迟缓。&lt;br /&gt;
&lt;br /&gt;
OS2.0 全新的Home（主页）页面。出现了Scratchpad（便签本），{{Key|ctrl}}+{{Key|0}}即可跳出正打开的文档，到“草稿本”上进行运算和简单的作图。编程功能加强，支持对话框形式的输入输出。与此同时，系统被锁定，无法降级到OS1.7或1.1。全新的字体设计。&lt;br /&gt;
&lt;br /&gt;
OS2.1 支持中文。系统被官方超频，运行速度大幅提升。&lt;br /&gt;
&lt;br /&gt;
OS3.0 支持3D绘图，字体改为宋体，但是OS3.0.1版本存在严重BUG，后从官网删除，稳定版是OS3.0.2，OS3.0.1开始支持LUA函数。&lt;br /&gt;
&lt;br /&gt;
OS3.1 目前比较稳定的版本，支持ndless，自带了3.1.0.16 BOOT2。&lt;br /&gt;
&lt;br /&gt;
OS3.2 在3.1的基础上修正了一些BUG，优化了DISP的执行效率。同时非中文字体开始支持平滑显示。&lt;br /&gt;
&lt;br /&gt;
OS3.4 配合 Nspire iPad App 推出的操作系统版本，只在 iPad 上出现过，增加了触摸操作支持。&lt;br /&gt;
&lt;br /&gt;
OS3.6 更改了部分界面样式，修正了一些 CAS 的 BUG，并自带了3.2.4.7 BOOT2以防止降级。&lt;br /&gt;
&lt;br /&gt;
OS3.9 功能部分小修，主要还是屏蔽了Ndless 3.6和nLaunch。&lt;br /&gt;
&lt;br /&gt;
OS4.0 功能小幅变化。增加了角度模式的实时显示。屏蔽Ndless。&lt;br /&gt;
&lt;br /&gt;
OS4.2 可在选中表达式后通过按{{Key|ctrl}}+{{Key|menu}}键弹出菜单以进行表达式变换，增加了y≤f(x)，x≤f(y)，a1x²+a2x+a3≤b1y²+b2y+b3这几种新的不等式绘图方式，并增加了Get(), Send() 和 GetStr() 这几个用于控制数据通信的函数。屏蔽了Ndless 4.0。&lt;br /&gt;
&lt;br /&gt;
OS4.3 在程序编辑器中增加了与TI-Innovator开发板进行数据通信的命令菜单，方便快速输入（如Send &amp;quot;set&amp;quot;)，并新增加了一种考试模式。&lt;br /&gt;
&lt;br /&gt;
OS4.4 增加了“小部件(Widget)”功能，在不关闭当前文档的状态下即可将另一个文档的第一页插入正在编辑的文档。同时，数列绘图/列表功能支持u(n+1)和u(n+2)这两种递归表达式，并增加了逆二项分布功能。&lt;br /&gt;
&lt;br /&gt;
OS 4.5增加了DispAt和getKey命令，可以使TI-BASIC程序的输出结果显示在任意一行，以及获取用户按键的键值（{{Key|ctrl}},{{Key|shift}},{{Key|flag}}键除外）；添加了四个科学常数和六种单位转换，并添加了单位转换向导，便于输入导出单位。同时，修复了上一个版本中，输入内容长度超过257字节时发生的显示错误问题和在程序编辑器中选择多行内容时，部分文字消失的问题。&lt;br /&gt;
&lt;br /&gt;
目前TI-Nspire CM-C（CAS)最高系统版本为3.2，TI-Nspire Clickpad/Touchpad最高版本为3.9，TI-Nspire CX-（C）（CAS）最高版本为4.4.0.532。&lt;br /&gt;
&lt;br /&gt;
== 系统破解工具[[Ndless|Ndless]] ==&lt;br /&gt;
[[File:Ndless 36.jpg|thumb|right|200px|Ndless 3.6的安装器界面]] &lt;br /&gt;
Ndless是一种系统破解工具，或者被称为“越狱工具”。&lt;br /&gt;
&lt;br /&gt;
通过Ndless，TI-Nspire可以执行由汇编,C,C++编程语言编写的应用程序——而TI-Nspire的操作系统本身没有对这些编程语言的支持。同时，通过Ndless编写的程序可以进行底层硬件操作，如更改开机画面，改变设备型号，甚至引导非本机型使用的操作系统等——这些操作都是TI-BASIC和Lua无法实现的。&lt;br /&gt;
&lt;br /&gt;
Ndless的开发者是来自[http://www.tiplanet.org TI-Planet计算器论坛]的ExtendeD，后来Critor，Adriweb和Levak也加入了开发之中。&lt;br /&gt;
&lt;br /&gt;
德州仪器在不断地更新操作系统版本以及改动硬件设计以封堵那些Ndless得以利用的漏洞，而Ndless开发组也在不断地寻找新的漏洞。&lt;br /&gt;
&lt;br /&gt;
目前，Ndless支持的操作系统为1.1，1.2，1.3，1.4，1.7，2.0，2.1，3.1，3.6，3.9，4.0，4.2，4.4，4.5。其中基于3.1操作系统的版本对很多旧程序支持最好，占用资源小，但不支持Ndless新版本引入的功能。 此外是，另有一个称为“Ndless+”的特殊版本，用于工程机完成某些特殊操作(如更改NAND信息以使它能够安装正常的操作系统)。&lt;br /&gt;
&lt;br /&gt;
Ndless的官方网站为：[http://ndless.me  ndless.me]&lt;br /&gt;
&lt;br /&gt;
== 紧急救援用按键 ==&lt;br /&gt;
&lt;br /&gt;
错误地进行以下操作可能导致计算器无法启动。如果您不清楚这些按键的具体作用，请不要尝试。&lt;br /&gt;
&lt;br /&gt;
在执行这些操作之前，必须确保计算器已经完全关闭，而不是待机。对于Clickpad/Touchpad，可将电池取出片刻后放回。&lt;br /&gt;
操作时，按住表中所列的键不松手，同时按一下{{Key|on}}键开机；对于CX(-C)和CM-C，请使用尖锐物品按戳计算器背面的reset代替{{Key|on}}键。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 系统启动阶段&lt;br /&gt;
! Clickpad&lt;br /&gt;
! TI-84+ 键盘&lt;br /&gt;
! Touchpad/CM-C/CX(-C)&lt;br /&gt;
! 对应功能&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=4 | Boot&amp;amp;nbsp;1&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|B}}&lt;br /&gt;
| {{Key|GRAPH}}+{{Key|ENTER}}+{{Key|APPS}}&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|2}}&lt;br /&gt;
| 等待通过串口传输 Boot&amp;amp;nbsp;2&lt;br /&gt;
|-&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|G}}&lt;br /&gt;
| {{Key|GRAPH}}+{{Key|ENTER}}+{{Key|TAN}}&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|-}}&lt;br /&gt;
| 等待通过串口传输自检镜像（现有的镜像会被立刻删除！）&lt;br /&gt;
|-&lt;br /&gt;
| {{Key|esc}}+{{Key|menu}}+{{Key|G}}&lt;br /&gt;
| {{Key|Y＝}}+{{Key|CLEAR}}+{{Key|TAN}}&lt;br /&gt;
| {{Key|esc}}+{{Key|menu}}+{{Key|-}}&lt;br /&gt;
| 进入系统自检模式。如果系统先前被配置为开机进入自检，这样做将正常启动系统。&lt;br /&gt;
|-&lt;br /&gt;
| 无此功能&lt;br /&gt;
| 无此功能&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|1}}&lt;br /&gt;
| 等待通过串口刷写Manuf（此功能仅限硬件版本号为XXXXX-W及之后的CX(-C)(CAS)机型。）&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | Boot&amp;amp;nbsp;2&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|X}}&lt;br /&gt;
| 无此功能&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|?!►}}&lt;br /&gt;
| 等待通过串口传输自检镜像（新的镜像传入前，现有的自检不会被删除）&lt;br /&gt;
|-&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|P}}&lt;br /&gt;
| {{Key|GRAPH}}+{{Key|ENTER}}+{{Key|8}}&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|EE}}&lt;br /&gt;
| 进入急救模式。可以删除系统，删除全部用户文件或同时将两者删除。注意：Touchpad/CM-C/CX(-C)用户应按{{Key|T}}删除用户文件，而不是{{Key|2}}。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TI-Nspire外设 ==&lt;br /&gt;
&lt;br /&gt;
=== 传感器和实验托板 ===&lt;br /&gt;
&lt;br /&gt;
威尼尔公司为TI-Nspire系列计算器设计了大量的传感器。这些传感器可以通过威尼尔EasyLink USB接口和TI-Nspire进行连接，也可以通过实验托板连接。目前，TI-Nspire系列计算器已经有了超过50种传感器。&lt;br /&gt;
&lt;br /&gt;
计算器已经内置了威尼尔DataQuest应用程序以进行数据捕获和数据分析。&lt;br /&gt;
&lt;br /&gt;
实验托板是一个用于同时连接多种传感器的外设。它同时具备3个最高采样率为100000次/秒的模拟接口，以及2个数字接口，并内置32MB存储器来存储测量的数据。实验托板的电力由单独的一个锂电池提供（该电池和TI-Nspire使用的锂电池型号相同），并可通过USB充电器，和PC连接或通过专用座充进行充电。&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire无线导航系统 ===&lt;br /&gt;
&lt;br /&gt;
TI-Nspire无线导航系统是一个遵循802.11a/b/g/n协议，工作在2.4GHz/5GHz的无线通讯系统，由接收器（俗称“TI-NSpire无线网卡”）和专用AP（俗称“TI-Nspire路由器”）组成。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire无线导航系统可以分为两种:一种是为Clickpad（CAS）和Touchpad（CAS）设计的，接收器安装在计算器的背面；另一种是为CX(-C)（CAS）设计的，接收器安装在计算器的顶部。这两种无线导航系统的接收器和AP都是互不兼容的——Clickpad（CAS）和Touchpad（CAS）不能使用CX(-C)（CAS）的接收器，也不能连接到CX(-C)（CAS）的AP。反之亦然。CM-C（CAS）没有对无线导航系统的支持。&lt;br /&gt;
&lt;br /&gt;
通过TI-Nspire无线导航系统和教师软件，教师可以向连接到AP的计算器进行文件分发，课堂提问，组织快速投票，屏幕直播等教学操作，还可以同时获取所有连接到AP的计算器的屏幕截图。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire无线导航系统的接收器内带有独立的电池，充电方法和实验托板相同。&lt;br /&gt;
&lt;br /&gt;
在技术层面上，TI-Nspire无线导航系统和一般的WiFi没有区别。然而，TI-Nspire无线导航系统的接收器不能和一般的WiFi路由器连接，TI-Nspire无线导航系统的专用AP也不具备连接到Internet的功能。因此，&#039;&#039;&#039;TI-Nspire无线导航系统的接收器不能用来进行浏览网页，收发电子邮件和进行即时通讯等Internet操作。&#039;&#039;&#039;&lt;br /&gt;
=== TI-Nspire座充 ===&lt;br /&gt;
TI-Nspire座充是一个用来同时对许多台TI-Nspire进行充电，数据传输和操作系统升级的装置。&lt;br /&gt;
&lt;br /&gt;
一部TI-Nspire座充可以安放多达10部TI-Nspire，这意味着一台座充可以同时向10部TI-Nspire进行充电，数据传输和操作系统升级。&lt;br /&gt;
&lt;br /&gt;
要使用TI-Nspire座充的数据传输和操作系统升级功能，座充必须连接到电脑，且电脑上必须安装有TI-Nspire教师软件。&lt;br /&gt;
&lt;br /&gt;
在接口和电源供应足够的情况下，一部电脑最多可以连接6个座充，即60部TI-Nspire计算器。&lt;br /&gt;
&lt;br /&gt;
== 相关软件 ==&lt;br /&gt;
&lt;br /&gt;
=== PC端 ===&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire计算机连接软件 ====&lt;br /&gt;
&lt;br /&gt;
[[File:Ti cls 3.6.png|thumb|right|200px|运行在Windows 10上的TI-Nspire计算机连接软件 V3.6版本]] TI-Nspire计算机连接软件使得TI-Nspire能够连接到计算机并通过计算机管理其内存中的内容。同时，用户可以通过该软件升级计算器的操作系统版本。除此之外，它还提供在PC上保存计算器屏幕截图的功能。&lt;br /&gt;
&lt;br /&gt;
高版本的TI-Nspire计算机连接软件往往不能正确地和使用低版本系统的计算器进行连接，同时，低版本的连接软件也不能正确识别高版本的操作系统。因此，请选择适合于计算器系统的连接软件版本。&lt;br /&gt;
&lt;br /&gt;
连接软件可以在[https://education.ti.com/zh-CN/china/downloads-and-activities 德州仪器教育-下载中心]免费下载到，但是仅提供最新版本。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire学生端软件 ====&lt;br /&gt;
&lt;br /&gt;
TI-Nspire学生端软件可以视为将TI-Nspire模拟器和TI-Nspire计算机连接软件结合而成的一款软件。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire学生端软件由于具备了模拟器的功能，因此在PC上即可得到和TI-Nspire实体机相同的计算和文档编辑功能。（然而这种模拟并不是硬件级的模拟，用户不能进行更新其操作系统，使用系统破解程序Ndless或进行串口调试等操作。）同时，用户可以利用该模拟器，为TI-Nspire制作文档和编写TI-BASIC/Lua程序并传输到计算器，就像在使用另一台TI-Nspire一样，也可以将文件从计算器传输到PC。&lt;br /&gt;
&lt;br /&gt;
和真实的计算器一样，TI-Nspire学生端软件分为CAS版和非CAS版，内建的模拟器分别为TI-Nspire CX CAS模拟器和TI-Nspire CX模拟器。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire学生端软件是付费的，您可以免费下载，但如果不购买序列号，就仅能试用90天。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire教师端软件 ====&lt;br /&gt;
&lt;br /&gt;
TI-Nspire教师端软件具有学生端软件的全部功能。除此之外，它具有让TI-Nspire直接退出考试模式（&#039;&#039;后述&#039;&#039;），通过TI-Nspire座充同时向大量TI-Nspire计算器传输文件和升级计算器操作系统，以及通过TI-Nspire无线导航系统进行文件分发，课堂提问，组织快速投票，屏幕直播等教学操作的功能。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire教师端软件也分为CAS版和非CAS版，同样也是一个付费软件。&lt;br /&gt;
&lt;br /&gt;
==== 第三方模拟器 ====&lt;br /&gt;
&lt;br /&gt;
第三方模拟器（非德州仪器开发）能够提供硬件级的设备模拟，因此您能够进行更新其操作系统，使用系统破解程序Ndless或进行串口调试等操作，很适合进行Ndless程序的调试。&lt;br /&gt;
&lt;br /&gt;
常用的第三方模拟器包括[[KArmTI]]，[[Firebird]]和[[Ndless]] SDK中带有的模拟器。&lt;br /&gt;
&lt;br /&gt;
要使用这些模拟器，您通常需要自行准备OS,boot1，boot2和manuf文件。OS文件可从[https://education.ti.com/zh-CN/china/downloads-and-activities 德州仪器教育-下载中心]得到，然而boot1，boot2和manuf则需要自行寻找下载地址或从实体计算器中提取。此外，您可能需要调节程序的配置才能正常地进行模拟。&lt;br /&gt;
&lt;br /&gt;
=== iOS端 ===&lt;br /&gt;
&lt;br /&gt;
德州仪器官方已经开发了TI-Nspire模拟器的iOS版本，您可以在您的iOS设备上随时随地通过TI-Nspire模拟器进行数学演算，制作文档和编写TI-BASIC/Lua程序。&lt;br /&gt;
&lt;br /&gt;
和TI-Nspire学生端/教师端软件相同的地方是：&lt;br /&gt;
&lt;br /&gt;
*它也分为CAS版和非CAS版。&lt;br /&gt;
*它同样也是一个付费软件，然而不提供试用。然而，如果您的第三方软件助手中提供了这款软件的免费下载，或您得到了这款软件的安装包并对iOS设备进行了越狱，则可以将其免费地安装到iOS设备上并使用。&lt;br /&gt;
*它的模拟同样是非硬件级的。&lt;br /&gt;
&lt;br /&gt;
=== Android端 ===&lt;br /&gt;
&lt;br /&gt;
德州仪器官方并未开发Android系统适用的TI-Nspire模拟器，然而Android设备上仍然有第三方开发的模拟器可用。&lt;br /&gt;
&lt;br /&gt;
现在可用的第三方模拟器包括[[Firebird]]和[[NspirDroid]]。&lt;br /&gt;
&lt;br /&gt;
这些模拟器仍将提供硬件级的模拟。在使用这些模拟器时，您仍然需要自备OS,boot1,boot2和manuf文件。&lt;br /&gt;
&lt;br /&gt;
=== 计算器端 ===&lt;br /&gt;
&lt;br /&gt;
德州仪器在计算器中附带了两个库：linalgcas（在非CAS机型中，使用的是linalg，比CAS版缺少一些功能）和numtheory，作为计算器功能的一个补充。这两个库文件是包含在操作系统中的，用户可以将它们删除，然而一旦更新计算器的操作系统，它们就会自动恢复。&lt;br /&gt;
&lt;br /&gt;
linalgcas和linalg提供了很多线性代数运算功能，其中很多是系统自身没有的，另外一些是系统自身运算功能的增强。&lt;br /&gt;
&lt;br /&gt;
numtheory提供了一些与数论有关的运算。&lt;br /&gt;
&lt;br /&gt;
德州仪器自始至终都没有提供这两个库的中文版。然而，现在linalgcas已经有非官方的汉化版本。&lt;br /&gt;
== 考试模式 ==&lt;br /&gt;
TI-Nspire计算器有一个被称为“考试模式”的功能。在进行诸如SAT等考试时，考生需将计算器调节至考试模式。这样做的目的在于防止考生在机内存储文档和其他程序来进行作弊，以及禁用那些计算器上的不允许在考试中使用的功能。&lt;br /&gt;
=== 如何进入考试模式 ===&lt;br /&gt;
==== 通过组合键进入考试模式 ====&lt;br /&gt;
要通过组合键进入考试模式，首先需要将计算器关机（进入待机模式或彻底关闭电源均可），然后执行如下的按键操作：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 型号&lt;br /&gt;
! 按键操作&lt;br /&gt;
|-&lt;br /&gt;
| Clickpad（CAS）&lt;br /&gt;
| {{Key|esc}}+{{Key|home}}+{{Key|on}}&lt;br /&gt;
|-&lt;br /&gt;
| Touchpad（CAS）/ CM-C（CAS）/ CX(-C)（CAS）&lt;br /&gt;
| {{Key|esc}}+{{Key|on}}&lt;br /&gt;
|}&lt;br /&gt;
随后计算器将开机并弹出“进入考试模式”的对话框，此时可以选定要在考试模式中禁用哪些功能。&lt;br /&gt;
&lt;br /&gt;
如果您的计算器版本为OS 4.3或以上，还可使用增强型考试模式：首先需要将计算器关机，然后同时按下{{Key|+}},{{key|Enter}}和{{key|on}}。这种考试模式和普通的考试模式不同之处在于，它将禁用计算器的编程功能。&lt;br /&gt;
&lt;br /&gt;
在点击“确定”后，计算器将重新启动并进入考试模式。&lt;br /&gt;
==== 通过其他TI-Nspire进入考试模式 ====&lt;br /&gt;
在一部已经进入了考试模式的TI-Nspire上新建一个文档，然后按{{Key|doc}}键（在Clickpad机型上应按下{{Key|ctrl}}+{{Key|home}}键），选择“按键测试-传输按下测验模式”。此时该计算器上将弹出一个对话框，显示该计算器的哪些功能已被禁用。&lt;br /&gt;
&lt;br /&gt;
此时将另一部TI-Nspire通过Mini-USB连接线连接至该机，并点击对话框中的“传输”按钮。与这部计算器相连的另一部计算器将重启并进入考试模式，且该计算器上被禁用的功能在与之相连的计算器上也会被禁用。&lt;br /&gt;
=== 考试模式的特性 ===&lt;br /&gt;
在进入考试模式后，计算器每次开机都会显示“考试模式”的对话框，并显示哪些功能已经被禁用了。&lt;br /&gt;
&lt;br /&gt;
考试模式中，计算器的功能会受到如下限制：&lt;br /&gt;
*计算器的部分功能可能被禁用——具体取决于“进入考试模式”对话框中的设定。&lt;br /&gt;
*无法打开机内的文件——机内的用户文件均会被隐藏起来。&lt;br /&gt;
*“便签本”中预存的数据将被清空。&lt;br /&gt;
此外是，在考试模式中，计算器顶端的LED灯会闪烁以表明计算器处在考试模式。&lt;br /&gt;
&lt;br /&gt;
即便是取出电池或按戳计算器背面的Reset孔，也不能退出考试模式。要退出考试模式，必须通过特定的方法。&lt;br /&gt;
&lt;br /&gt;
=== 如何退出考试模式 ===&lt;br /&gt;
==== 通过PC退出考试模式 ====&lt;br /&gt;
1.打开PC上的“记事本”程序（或其他文本编辑软件），随意地键入一些内容（任意长度，任意内容均可）。&lt;br /&gt;
&lt;br /&gt;
2.将这一文本保存为&#039;&#039;Exit Test Mode.tns&#039;&#039;。&#039;&#039;&#039;注意：这个文件名是区分大小写的。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3.将计算器与PC连接，打开TI-Nspire计算机连接软件（或学生软件/教师软件），将这个文件传输到计算器中的Press-to-Test文件夹。&lt;br /&gt;
&lt;br /&gt;
4.计算器将重启并退出考试模式。所有用户文件将会被恢复，所有被禁用的功能会重新启用，LED也将熄灭。&lt;br /&gt;
==== 通过其他TI-Nspire退出考试模式 ====&lt;br /&gt;
1.将另一部TI-Nspire通过Mini-USB连接线连接至欲退出考试模式的计算器。&lt;br /&gt;
&lt;br /&gt;
2.在欲退出考试模式的TI-Nspire上新建一个文档，然后按{{Key|doc}}键（在Clickpad机型上应按下{{Key|ctrl}}+{{Key|home}}键），选择“按键测试-退出测验模式”。&lt;br /&gt;
&lt;br /&gt;
3.该机将重启并退出考试模式。&lt;br /&gt;
&lt;br /&gt;
==== 通过TI-Nspire无线导航系统退出考试模式 ====&lt;br /&gt;
通过TI-Nspire无线导航系统和教师端软件，可以向计算器“广播”退出考试模式的信号，从而使大量计算器同时退出考试模式。&lt;br /&gt;
&lt;br /&gt;
== TI-Nspire 底座引脚定义 ==&lt;br /&gt;
&lt;br /&gt;
参见主条目：[[TI-Nspire底座引脚定义]]&lt;br /&gt;
&lt;br /&gt;
{{TI-Calcs}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=TI-Nspire%E7%B3%BB%E5%88%97&amp;diff=8526</id>
		<title>TI-Nspire系列</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=TI-Nspire%E7%B3%BB%E5%88%97&amp;diff=8526"/>
		<updated>2019-04-26T17:01:53Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TI-Nspire系列计算器是[[德州仪器|美国德州仪器（TI）公司]]生产的当今最为强大的计算器之一，同时也是德州仪器公司目前最为强大的计算器产品系列。&lt;br /&gt;
&lt;br /&gt;
== 概述 ==&lt;br /&gt;
&lt;br /&gt;
TI-Nspire系列和之前的德州仪器[[计算器#图形计算器|图形计算器]]截然不同。TI希望计算器有着一个对于新用户来说更为友好的界面，因此TI-Nspire使用了一个相对于之前型号的产品更为接近家用电脑的界面。硬件方面，TI-Nspire改用了ARM架构的CPU,灰度屏机型速度可达75MHz（后期的OS版本开始超频CPU至120MHz），彩屏机型更是达到了132MHz。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;有关Nspire的具体硬件信息，请参见：&#039;&#039; [[TI图形计算器对比]]&lt;br /&gt;
&lt;br /&gt;
Nspire系列机型可大致分为两个版本：[[CAS|CAS]]版本和无CAS版本。无CAS版本不能执行需要计算机代数系统（[[CAS|CAS]]）的运算，比如计算不定积分，求解符号方程和导函数等等，而CAS版本机型可以完成这些运算。TI-Nspire的CAS系统使用方式和上一代机型（如[[TI-89系列|TI-89]]，[[TI-92系列#航海者200|Voyage 200]])等非常接近，并增加了书面输入方式和新的运算函数。 CAS机型的颜色与非CAS机型不同，且正面会标注出CAS，背面有着很大的突起的“CAS”字样，这使得用户很容易区分CAS版本和非CAS版本。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire仅支持TI-BASIC和Lua作为其编程语言，且不能像前一代机型那样安装[[Flash_Apps|Flash Apps]]。然而，通过系统破解程序&amp;quot;[[Ndless]]&amp;quot;,用户仍可使用C/C++/汇编语言为TI-Nspire编写应用程序，并可通过特定的应用程序实现机上编写除[[TI-BASIC]]和Lua之外的其他语言。&lt;br /&gt;
&lt;br /&gt;
在正常的情况下，关闭TI-Nspire的电源仅仅是使计算器进入休眠状态，此时计算器可以在一瞬间完成开机。然而，如果计算器的休眠时长超过了系统设置中设定的最大时长，或是电池耗尽或被移除过，TI-Nspire就需要进行冷启动。这将耗用一段不短的时间，期间用户可以看到计算器的开机画面和进度条。&lt;br /&gt;
&lt;br /&gt;
== Nspire家族 ==&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire Clickpad（CAS） ===&lt;br /&gt;
&lt;br /&gt;
[[File:TI-Nspire Clickpad Non-CAS.jpg|thumb|right|200px|TI-Nspire Clickpad，非CAS机型]] TI-Nspire Clickpad（CAS）是最早投入正式生产的TI-Nspire。其投产年份为2007年，2010年停产。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad（CAS）具有一个全方向的方向键（这个方向键就是“Clickpad”。虽然标注为4向，但在操作鼠标指针时，指针可以向任何一个手指按下的方向移动。），且键盘上带有许多绿色和灰色小豆状的字母和符号按键。（这使得TI-Nspire Clickpad有了个“绿豆”的绰号。）&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad（CAS）的键盘可以被拆下并更换为专用的[[TI-84系列|TI-84]]键盘，此时计算器内置的TI-84模拟器将启动，TI-Nspire将与前代机型TI-84无异。（然而，由于硬件上的原因，&#039;&#039;&#039;由汇编语言编写的TI-84 APP可能不能正常运行和使用。&#039;&#039;&#039;）&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad（CAS）使用4节AAA电池作为电源。在更换电池时，首先需要扳动计算器背面的开关，取下键盘，方能将电池放入电池槽。而如果在计算器开机时取下键盘，它将立刻关机。（然而，计算器启动过程中或运行[[Ndless]]程序时，不会自动关机。）&lt;br /&gt;
&lt;br /&gt;
TI-Nspire Clickpad被允许在PSAT, SAT, SAT II, ACT, AP,和IB考试中使用。然而，请注意，&#039;&#039;&#039;CAS版本机型不能在ACT和IB考试中使用。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
非CAS机型是蓝色机身，白色边框，而CAS机型是白色机身，灰色边框。&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire Touchpad （CAS） ===&lt;br /&gt;
&lt;br /&gt;
[[File:TI-Nspire CAS Touchpad.jpg|thumb|right|200px|TI-Nspire Touchpad CAS]] TI-Nspire Touchpad （CAS）是TI-Nspire Clickpad（CAS）的下一代机型，自2010年开始生产。 TI-Nspire Touchpad（CAS）和TI-Nspire Clickpad（CAS）在硬件上并没有本质上的区别，只是Touchpad换用了一种全新的键盘。 相对Clickpad的键盘，Touchpad的键盘具有以下改动：&lt;br /&gt;
&lt;br /&gt;
*全向方向键被换为一个触控板（这个触控板就是“Touchpad”），类似于笔记本电脑的触控板，可以更快更方便地移动鼠标指针。同时，Touchpad允许用户在除绘图页面外的位置使用鼠标指针。Touchpad同时也有方向键的作用。与Clickpad不同的是，在硬件层面上，整个触控板是一个按键，Touchpad通过判断手指在触控板上的位置来判断按下的方向键是哪一个。&lt;br /&gt;
*字母键不再以“绿豆”形式排列，而是被集中到键盘下方，以ABCDEF...方式排列，而原先分布在小豆状按键上面的部分符号被放置到通过{{Key|π►}}键打开的菜单中。（这个键盘布局遭到了很多人的批评，因为和正常的计算机键盘差别太大，导致短时间内很难适应。TI将键盘设计为这种排列是为了能在SAT等考试中使用——SAT和类似的一些考试不允许使用带有QWERTY键盘布局的计算器。）&lt;br /&gt;
*{{Key|sin}}{{Key|cos}}{{Key|tan}}键被取消——这几个功能被放置在通过{{Key|trig►}}键打开的菜单中。&lt;br /&gt;
*增加了“便签本”键和{{Key|doc}}键，后者被用来完成原先Clickpad键盘上{{Key|ctrl}}+{{Key|home}}的操作。&lt;br /&gt;
&lt;br /&gt;
同时，Nspire Touchpad（CAS）增加了一个锂电池插口，可以同时使用专用锂电池和4节AAA电池，也可以单独使用其中一种供电方式。&lt;br /&gt;
&lt;br /&gt;
非CAS机型是黑色机身，白色边框，而CAS机型是黑色机身，灰色边框。（CAS机型的配色使得Nspire Touchpad CAS有了个“大黑”的绰号。）&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire Touchpad学校特供版 ====&lt;br /&gt;
&lt;br /&gt;
[[File:Ti-ez.jpg|thumb|right|200px|TI-Nspire Touchpad学校特供版]] TI-Nspire Touchpad学校特供版是学校大批量订购并借用给学生使用的产品，除颜色特殊外，硬件上和一般的TI-Nspire Touchpad没有任何区别。 学校特供版使用的配色是黑色机身，黄色边框，并且写有“School Property”字样。（德州仪器官方将这种颜色称为“校车黄”。将计算器设计成这种颜色是为了突出这种计算器是学校专用版，以便于在计算器被私自从学校带走/被盗后易于找到。此外是这种配色使得它有了个“大黄”的绰号。）&lt;br /&gt;
&lt;br /&gt;
这种学校特供版TI官方并不对外零售，然而网上仍有一些外流的学校特供版机型在进行零售。&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire CX (CAS) ===&lt;br /&gt;
&lt;br /&gt;
[[File:TI-nspire CX CAS.jpg|thumb|right|200px|TI-Nspire CX CAS]] TI-Nspire CX(CAS)是发布于2011年2月25日TI-Nspire Clickpad/Touchpad的后续产品，采用了真彩色屏幕和1.57CM的超薄机身，CPU速度加快，存储容量扩大到100MB，RAM也扩大到64MB。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX(CAS)取消了AAA电池，改为内置在机体的1060mAh（后期容量增大到1200mAh）锂电池，通过Mini-USB接口进行充电。&lt;br /&gt;
&lt;br /&gt;
键盘的布局和TI-Nspire Touchpad相同，然而键盘的制作工艺发生了改动，从导电胶式变为金属片式。同时，TI-Nspire CX的键盘不能拆卸。&lt;br /&gt;
&lt;br /&gt;
接口方面，USB接口被从顶部的正中间被移到了靠右侧，而左侧增加了一个“TI-Nspire无线导航系统”（俗称“Nspire无线网卡”）的接口。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX可在SAT, IB, AP 和 ACT考试中使用，而TI-Nspire CX CAS&#039;&#039;&#039;只能在SAT和AP考试中使用&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX非CAS版本是深蓝色机身，白色边框，CAS版本是黑色机身，灰色边框。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire CX-C(CAS) ====&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX-C(CAS)属于TI-Nspire CX(CAS)的一个衍生版本，是德州仪器面向中国市场而推出的一个特别版本。&lt;br /&gt;
&lt;br /&gt;
相比于一般的TI-Nspire CX（CAS），TI-Nspire CX-C(CAS)可以安装一个简单的电子词典功能，并配有中文的按键标记。&lt;br /&gt;
&lt;br /&gt;
硬件方面上，和普通的CX区别仅仅是NAND的信息不同。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire CM-C （CAS） ====&lt;br /&gt;
&lt;br /&gt;
[[File:TI-NspireCM-C.jpg|thumb|right|200px|TI-Nspire CM-C]] TI-Nspire CM-C（CAS）是是德州仪器面向中国市场而推出的一个TI-Nspire CX（CAS）的精简版本。&lt;br /&gt;
&lt;br /&gt;
与TI-Nspire CX（CAS）相比，TI-Nspire CM-C（CAS）的运行内存只有32MB，是TI-Nspire CX（CAS）的一半。这在一般应用中不会遇到问题，但是会使得一些[[Ndless|Ndless]]程序因内存不足而无法正常使用。&lt;br /&gt;
&lt;br /&gt;
外观上，相比于TI-Nspire CX（CAS），CM采用了更为流线型的机身和纯白色配色。同时，TI-Nspire CM-C（CAS）也带有TI-Nspire CX-C（CAS）的中文按键标记，但是不能够安装电子词典功能。&lt;br /&gt;
&lt;br /&gt;
此外，TI-Nspire CM-C（CAS）的“TI-Nspire无线导航系统”接口被取消。&lt;br /&gt;
&lt;br /&gt;
德州仪器已经停止了对TI-Nspire CM-C（CAS）的技术支持，导致其系统版本最高仅为3.2。（CX（C）的操作系统仍在更新）&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire CX II (CAS) ===&lt;br /&gt;
&lt;br /&gt;
TI-Nspire CX II 和 TI-Nspire CX II CAS 是德州仪器 2019 年发布的产品。 与上一代的 TI-Nspire CX (CAS) 系列相比， TI-Nspire CX II (CAS) 升级了更快的处理器， 更新了 “扁平化” 的用户界面， 并增加了少量绘图和 TI-Basic 相关功能。&lt;br /&gt;
&lt;br /&gt;
=== 工程机 ===&lt;br /&gt;
&lt;br /&gt;
工程机是德州仪器内部用于测试TI-Nspire设计理念和系统功能的机型。&lt;br /&gt;
&lt;br /&gt;
正常情况下，这些机型在完成测试目的后就应该被销毁，然而还是有大量的工程机流入了市场。目前尚不清楚工程机流入市场的原因和外流数量。&lt;br /&gt;
&lt;br /&gt;
目前发现的工程机型号包括Phoenix，TI-XXXXXXXXXXX（绰号“德仪十一叉”）（&#039;&#039;此处XXXXXXXXXXX不指代一个字符串——该工程机本身名称就是TI后接11个X&#039;&#039;），TI-Nspire CAS+，TI-Nspire Color等。&lt;br /&gt;
&lt;br /&gt;
工程机一般使用很古老的操作系统版本（通常低于2.0），这些系统缺少很多标准系统具有的功能，而且工程机经常会有各种软件及硬件方面的故障，问题和不完备之处。因此，如果准备采购日常使用的计算器，&#039;&#039;&#039;请勿购买工程机——即使价格可能很便宜。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== 辨别工程机的方法 ====&lt;br /&gt;
&lt;br /&gt;
* 如果发现计算器型号为Phoenix，TI-XXXXXXXXXXX，TI-Nspire CAS+，TI-Nspire Color，则一定是工程机。&lt;br /&gt;
* Nspire机身背面的下方有一排序列号，类似：&lt;br /&gt;
&lt;br /&gt;
  2058000389 P-0610B&lt;br /&gt;
&lt;br /&gt;
如果里面有出现“EVT”、“DVT”等字样，则是工程机。&lt;br /&gt;
&lt;br /&gt;
* 若开机界面右上角有一个方块，则一定是工程机。&#039;&#039;&#039;（然而，工程机的开机界面右上角不一定都有一个方块）&#039;&#039;&#039;&lt;br /&gt;
* 在系统版本的显示界面中，若版本号含有&amp;quot;EVT&amp;quot; &amp;quot;DVT&amp;quot;字样，则一定是工程机。&lt;br /&gt;
* 若机身有打孔或有修复打孔的痕迹，则一定是工程机&lt;br /&gt;
* 若拆开计算器发现内部有除了屏幕排线和锂电池电源线之外的任何连接线（简称为“飞线”）则一定是工程机&lt;br /&gt;
如果您没有拆解电子设备的经历请勿擅自拆解以免造成不必要的损失！&lt;br /&gt;
&lt;br /&gt;
==== 重要注意事项 ====&lt;br /&gt;
部分工程机外观与正常的TI-Nspire无异，甚至包括机身背面的序列号，请仔细甄别。&lt;br /&gt;
如果您要在网上购买TI-Nspire机型，请务必要求卖家提供版本界面，以防上当。&lt;br /&gt;
&lt;br /&gt;
== TI-Nspire操作系统版本 ==&lt;br /&gt;
&lt;br /&gt;
目前，TI-Nspire已经历经了如下的操作系统版本：&lt;br /&gt;
&lt;br /&gt;
=== 历经的系统版本 ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! 版本&lt;br /&gt;
! 发布日期&lt;br /&gt;
! Clickpad (CAS)&lt;br /&gt;
! Touchpad (CAS)&lt;br /&gt;
! CX(-C) (CAS)&lt;br /&gt;
! CM(-C) (CAS)&lt;br /&gt;
|+&lt;br /&gt;
| 1.0.491 *&lt;br /&gt;
| 2006 年 6 月&lt;br /&gt;
| rowspan=27 | 支持&lt;br /&gt;
| rowspan=11 | 不支持&lt;br /&gt;
| rowspan=14 | 不支持&lt;br /&gt;
| rowspan=17 | 不支持&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.526 *&lt;br /&gt;
| 2006 年 9 月&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.8916 *&lt;br /&gt;
| 2006 年与 2007 年交接&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.9170 &lt;br /&gt;
| 2007 年 5 月 7 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.9253（非 CAS 机版本）&lt;br /&gt;
| （暂缺）&lt;br /&gt;
|-&lt;br /&gt;
| 1.2.2394 &lt;br /&gt;
| 2007 年 8 月 30 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.2437 &lt;br /&gt;
| 2008 年 1 月 8 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.4.11643&lt;br /&gt;
| 2008 年 7 月 9 日&lt;br /&gt;
|-&lt;br /&gt;
| 1.6.4295 &lt;br /&gt;
| 2008 年 10 月 29 日 / 2008 年 12 月 9 日 **&lt;br /&gt;
|-&lt;br /&gt;
| 1.7.2741 &lt;br /&gt;
| 2009 年 5 月 19 日 / 2009 年 6 月 6 日 **&lt;br /&gt;
|-&lt;br /&gt;
| 1.8 (build 80) Dev *&lt;br /&gt;
| 2009 年末&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.0.1188 &lt;br /&gt;
| 2010 年 3 月 5 日&lt;br /&gt;
| rowspan =16 | 支持&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1.60 &lt;br /&gt;
| 2010 年 5 月 3 日&lt;br /&gt;
|-&lt;br /&gt;
| 2.1.0.631&lt;br /&gt;
| 2010 年 7 月 17 日&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1.1753&lt;br /&gt;
| 2011 年 4 月&lt;br /&gt;
| rowspan=22 | 支持&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.2.1791&lt;br /&gt;
| 2011 年 5 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.2.1793&lt;br /&gt;
| （暂缺）&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.0.392&lt;br /&gt;
| 2011 年 9 月 7 日&lt;br /&gt;
| rowspan=4 | 支持&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.0.1212&lt;br /&gt;
| 2012 年 6 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.0.1219&lt;br /&gt;
| 2012 年 6 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.3.1233&lt;br /&gt;
| 2012 年 12 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.4.1237&lt;br /&gt;
| （暂缺）&lt;br /&gt;
| rowspan=18 | 不支持&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 （仅供 iPad 模拟器）&lt;br /&gt;
| （暂缺）&lt;br /&gt;
|-&lt;br /&gt;
| 3.6.0.546&lt;br /&gt;
| 2013 年 12 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.6.0.550&lt;br /&gt;
| 2014 年 2 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.9.0.461&lt;br /&gt;
| 2014 年 5 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.9.0.463&lt;br /&gt;
| 2014 年 6 月&lt;br /&gt;
|-&lt;br /&gt;
| 3.9.1.38&lt;br /&gt;
| （暂缺）&lt;br /&gt;
| rowspan=9 | 不支持&lt;br /&gt;
| rowspan=9 | 不支持&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.0.235&lt;br /&gt;
| 2015 年 3 月&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.3.29&lt;br /&gt;
| 2015 年 12 月&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.0.532 &lt;br /&gt;
| 2016 年 2 月&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.0.547 ***&lt;br /&gt;
| （未知）&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.0.702&lt;br /&gt;
| 2016 年 8 月 18日&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.0.531 ***&lt;br /&gt;
| （未知）&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.0.532&lt;br /&gt;
| 2017 年 1 月 19 日&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.0.1180&lt;br /&gt;
| 2017 年 8 月 29 日&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* 原型机版本&#039;&#039;&lt;br /&gt;
&#039;&#039;** 实际发布日期&#039;&#039;&lt;br /&gt;
&#039;&#039;*** 已知的内部版本（未对外公开的版本）&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 系统的演变过程 ===&lt;br /&gt;
[[File:Ti Nsprie OS3.6 01.jpg|thumb|right|200px|OS 3.6 CAS版本的Home界面]] &lt;br /&gt;
OS1.1：没有TI-BASIC程序功能，只有Function。运行速度非常迟缓。电量bug。&lt;br /&gt;
&lt;br /&gt;
OS1.7 出现了Program（程序）和MyLib（库）。MyLib支持用户在别的文档中调用储存在MyLib文件夹下的文件内程序。Graph（绘图）和Geometry（几何）下鼠标移动迟缓。&lt;br /&gt;
&lt;br /&gt;
OS2.0 全新的Home（主页）页面。出现了Scratchpad（便签本），{{Key|ctrl}}+{{Key|0}}即可跳出正打开的文档，到“草稿本”上进行运算和简单的作图。编程功能加强，支持对话框形式的输入输出。与此同时，系统被锁定，无法降级到OS1.7或1.1。全新的字体设计。&lt;br /&gt;
&lt;br /&gt;
OS2.1 支持中文。系统被官方超频，运行速度大幅提升。&lt;br /&gt;
&lt;br /&gt;
OS3.0 支持3D绘图，字体改为宋体，但是OS3.0.1版本存在严重BUG，后从官网删除，稳定版是OS3.0.2，OS3.0.1开始支持LUA函数。&lt;br /&gt;
&lt;br /&gt;
OS3.1 目前比较稳定的版本，支持ndless，自带了3.1.0.16 BOOT2。&lt;br /&gt;
&lt;br /&gt;
OS3.2 在3.1的基础上修正了一些BUG，优化了DISP的执行效率。同时非中文字体开始支持平滑显示。&lt;br /&gt;
&lt;br /&gt;
OS3.4 配合 Nspire iPad App 推出的操作系统版本，只在 iPad 上出现过，增加了触摸操作支持。&lt;br /&gt;
&lt;br /&gt;
OS3.6 更改了部分界面样式，修正了一些 CAS 的 BUG，并自带了3.2.4.7 BOOT2以防止降级。&lt;br /&gt;
&lt;br /&gt;
OS3.9 功能部分小修，主要还是屏蔽了Ndless 3.6和nLaunch。&lt;br /&gt;
&lt;br /&gt;
OS4.0 功能小幅变化。增加了角度模式的实时显示。屏蔽Ndless。&lt;br /&gt;
&lt;br /&gt;
OS4.2 可在选中表达式后通过按{{Key|ctrl}}+{{Key|menu}}键弹出菜单以进行表达式变换，增加了y≤f(x)，x≤f(y)，a1x²+a2x+a3≤b1y²+b2y+b3这几种新的不等式绘图方式，并增加了Get(), Send() 和 GetStr() 这几个用于控制数据通信的函数。屏蔽了Ndless 4.0。&lt;br /&gt;
&lt;br /&gt;
OS4.3 在程序编辑器中增加了与TI-Innovator开发板进行数据通信的命令菜单，方便快速输入（如Send &amp;quot;set&amp;quot;)，并新增加了一种考试模式。&lt;br /&gt;
&lt;br /&gt;
OS4.4 增加了“小部件(Widget)”功能，在不关闭当前文档的状态下即可将另一个文档的第一页插入正在编辑的文档。同时，数列绘图/列表功能支持u(n+1)和u(n+2)这两种递归表达式，并增加了逆二项分布功能。&lt;br /&gt;
&lt;br /&gt;
OS 4.5增加了DispAt和getKey命令，可以使TI-BASIC程序的输出结果显示在任意一行，以及获取用户按键的键值（{{Key|ctrl}},{{Key|shift}},{{Key|flag}}键除外）；添加了四个科学常数和六种单位转换，并添加了单位转换向导，便于输入导出单位。同时，修复了上一个版本中，输入内容长度超过257字节时发生的显示错误问题和在程序编辑器中选择多行内容时，部分文字消失的问题。&lt;br /&gt;
&lt;br /&gt;
目前TI-Nspire CM-C（CAS)最高系统版本为3.2，TI-Nspire Clickpad/Touchpad最高版本为3.9，TI-Nspire CX-（C）（CAS）最高版本为4.4.0.532。&lt;br /&gt;
&lt;br /&gt;
== 系统破解工具[[Ndless|Ndless]] ==&lt;br /&gt;
[[File:Ndless 36.jpg|thumb|right|200px|Ndless 3.6的安装器界面]] &lt;br /&gt;
Ndless是一种系统破解工具，或者被称为“越狱工具”。&lt;br /&gt;
&lt;br /&gt;
通过Ndless，TI-Nspire可以执行由汇编,C,C++编程语言编写的应用程序——而TI-Nspire的操作系统本身没有对这些编程语言的支持。同时，通过Ndless编写的程序可以进行底层硬件操作，如更改开机画面，改变设备型号，甚至引导非本机型使用的操作系统等——这些操作都是TI-BASIC和Lua无法实现的。&lt;br /&gt;
&lt;br /&gt;
Ndless的开发者是来自[http://www.tiplanet.org TI-Planet计算器论坛]的ExtendeD，后来Critor，Adriweb和Levak也加入了开发之中。&lt;br /&gt;
&lt;br /&gt;
德州仪器在不断地更新操作系统版本以及改动硬件设计以封堵那些Ndless得以利用的漏洞，而Ndless开发组也在不断地寻找新的漏洞。&lt;br /&gt;
&lt;br /&gt;
目前，Ndless支持的操作系统为1.1，1.2，1.3，1.4，1.7，2.0，2.1，3.1，3.6，3.9，4.0，4.2，4.4，4.5。其中基于3.1操作系统的版本对很多旧程序支持最好，占用资源小，但不支持Ndless新版本引入的功能。 此外是，另有一个称为“Ndless+”的特殊版本，用于工程机完成某些特殊操作(如更改NAND信息以使它能够安装正常的操作系统)。&lt;br /&gt;
&lt;br /&gt;
Ndless的官方网站为：[http://ndless.me  ndless.me]&lt;br /&gt;
&lt;br /&gt;
== 紧急救援用按键 ==&lt;br /&gt;
&lt;br /&gt;
错误地进行以下操作可能导致计算器无法启动。如果您不清楚这些按键的具体作用，请不要尝试。&lt;br /&gt;
&lt;br /&gt;
在执行这些操作之前，必须确保计算器已经完全关闭，而不是待机。对于Clickpad/Touchpad，可将电池取出片刻后放回。&lt;br /&gt;
操作时，按住表中所列的键不松手，同时按一下{{Key|on}}键开机；对于CX(-C)和CM-C，请使用尖锐物品按戳计算器背面的reset代替{{Key|on}}键。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 系统启动阶段&lt;br /&gt;
! Clickpad&lt;br /&gt;
! TI-84+ 键盘&lt;br /&gt;
! Touchpad/CM-C/CX(-C)&lt;br /&gt;
! 对应功能&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=4 | Boot&amp;amp;nbsp;1&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|B}}&lt;br /&gt;
| {{Key|GRAPH}}+{{Key|ENTER}}+{{Key|APPS}}&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|2}}&lt;br /&gt;
| 等待通过串口传输 Boot&amp;amp;nbsp;2&lt;br /&gt;
|-&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|G}}&lt;br /&gt;
| {{Key|GRAPH}}+{{Key|ENTER}}+{{Key|TAN}}&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|-}}&lt;br /&gt;
| 等待通过串口传输自检镜像（现有的镜像会被立刻删除！）&lt;br /&gt;
|-&lt;br /&gt;
| {{Key|esc}}+{{Key|menu}}+{{Key|G}}&lt;br /&gt;
| {{Key|Y＝}}+{{Key|CLEAR}}+{{Key|TAN}}&lt;br /&gt;
| {{Key|esc}}+{{Key|menu}}+{{Key|-}}&lt;br /&gt;
| 进入系统自检模式。如果系统先前被配置为开机进入自检，这样做将正常启动系统。&lt;br /&gt;
|-&lt;br /&gt;
| 无此功能&lt;br /&gt;
| 无此功能&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|1}}&lt;br /&gt;
| 等待通过串口刷写Manuf（此功能仅限硬件版本号为XXXXX-W及之后的CX(-C)(CAS)机型。）&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | Boot&amp;amp;nbsp;2&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|X}}&lt;br /&gt;
| 无此功能&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|?!►}}&lt;br /&gt;
| 等待通过串口传输自检镜像（新的镜像传入前，现有的自检不会被删除）&lt;br /&gt;
|-&lt;br /&gt;
| {{Key|home}}+{{Key|enter}}+{{Key|P}}&lt;br /&gt;
| {{Key|GRAPH}}+{{Key|ENTER}}+{{Key|8}}&lt;br /&gt;
| {{Key|doc}}+{{Key|enter}}+{{Key|EE}}&lt;br /&gt;
| 进入急救模式。可以删除系统，删除全部用户文件或同时将两者删除。注意：Touchpad/CM-C/CX(-C)用户应按{{Key|T}}删除用户文件，而不是{{Key|2}}。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TI-Nspire外设 ==&lt;br /&gt;
&lt;br /&gt;
=== 传感器和实验托板 ===&lt;br /&gt;
&lt;br /&gt;
威尼尔公司为TI-Nspire系列计算器设计了大量的传感器。这些传感器可以通过威尼尔EasyLink USB接口和TI-Nspire进行连接，也可以通过实验托板连接。目前，TI-Nspire系列计算器已经有了超过50种传感器。&lt;br /&gt;
&lt;br /&gt;
计算器已经内置了威尼尔DataQuest应用程序以进行数据捕获和数据分析。&lt;br /&gt;
&lt;br /&gt;
实验托板是一个用于同时连接多种传感器的外设。它同时具备3个最高采样率为100000次/秒的模拟接口，以及2个数字接口，并内置32MB存储器来存储测量的数据。实验托板的电力由单独的一个锂电池提供（该电池和TI-Nspire使用的锂电池型号相同），并可通过USB充电器，和PC连接或通过专用座充进行充电。&lt;br /&gt;
&lt;br /&gt;
=== TI-Nspire无线导航系统 ===&lt;br /&gt;
&lt;br /&gt;
TI-Nspire无线导航系统是一个遵循802.11a/b/g/n协议，工作在2.4GHz/5GHz的无线通讯系统，由接收器（俗称“TI-NSpire无线网卡”）和专用AP（俗称“TI-Nspire路由器”）组成。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire无线导航系统可以分为两种:一种是为Clickpad（CAS）和Touchpad（CAS）设计的，接收器安装在计算器的背面；另一种是为CX(-C)（CAS）设计的，接收器安装在计算器的顶部。这两种无线导航系统的接收器和AP都是互不兼容的——Clickpad（CAS）和Touchpad（CAS）不能使用CX(-C)（CAS）的接收器，也不能连接到CX(-C)（CAS）的AP。反之亦然。CM-C（CAS）没有对无线导航系统的支持。&lt;br /&gt;
&lt;br /&gt;
通过TI-Nspire无线导航系统和教师软件，教师可以向连接到AP的计算器进行文件分发，课堂提问，组织快速投票，屏幕直播等教学操作，还可以同时获取所有连接到AP的计算器的屏幕截图。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire无线导航系统的接收器内带有独立的电池，充电方法和实验托板相同。&lt;br /&gt;
&lt;br /&gt;
在技术层面上，TI-Nspire无线导航系统和一般的WiFi没有区别。然而，TI-Nspire无线导航系统的接收器不能和一般的WiFi路由器连接，TI-Nspire无线导航系统的专用AP也不具备连接到Internet的功能。因此，&#039;&#039;&#039;TI-Nspire无线导航系统的接收器不能用来进行浏览网页，收发电子邮件和进行即时通讯等Internet操作。&#039;&#039;&#039;&lt;br /&gt;
=== TI-Nspire座充 ===&lt;br /&gt;
TI-Nspire座充是一个用来同时对许多台TI-Nspire进行充电，数据传输和操作系统升级的装置。&lt;br /&gt;
&lt;br /&gt;
一部TI-Nspire座充可以安放多达10部TI-Nspire，这意味着一台座充可以同时向10部TI-Nspire进行充电，数据传输和操作系统升级。&lt;br /&gt;
&lt;br /&gt;
要使用TI-Nspire座充的数据传输和操作系统升级功能，座充必须连接到电脑，且电脑上必须安装有TI-Nspire教师软件。&lt;br /&gt;
&lt;br /&gt;
在接口和电源供应足够的情况下，一部电脑最多可以连接6个座充，即60部TI-Nspire计算器。&lt;br /&gt;
&lt;br /&gt;
== 相关软件 ==&lt;br /&gt;
&lt;br /&gt;
=== PC端 ===&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire计算机连接软件 ====&lt;br /&gt;
&lt;br /&gt;
[[File:Ti cls 3.6.png|thumb|right|200px|运行在Windows 10上的TI-Nspire计算机连接软件 V3.6版本]] TI-Nspire计算机连接软件使得TI-Nspire能够连接到计算机并通过计算机管理其内存中的内容。同时，用户可以通过该软件升级计算器的操作系统版本。除此之外，它还提供在PC上保存计算器屏幕截图的功能。&lt;br /&gt;
&lt;br /&gt;
高版本的TI-Nspire计算机连接软件往往不能正确地和使用低版本系统的计算器进行连接，同时，低版本的连接软件也不能正确识别高版本的操作系统。因此，请选择适合于计算器系统的连接软件版本。&lt;br /&gt;
&lt;br /&gt;
连接软件可以在[https://education.ti.com/zh-CN/china/downloads-and-activities 德州仪器教育-下载中心]免费下载到，但是仅提供最新版本。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire学生端软件 ====&lt;br /&gt;
&lt;br /&gt;
TI-Nspire学生端软件可以视为将TI-Nspire模拟器和TI-Nspire计算机连接软件结合而成的一款软件。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire学生端软件由于具备了模拟器的功能，因此在PC上即可得到和TI-Nspire实体机相同的计算和文档编辑功能。（然而这种模拟并不是硬件级的模拟，用户不能进行更新其操作系统，使用系统破解程序Ndless或进行串口调试等操作。）同时，用户可以利用该模拟器，为TI-Nspire制作文档和编写TI-BASIC/Lua程序并传输到计算器，就像在使用另一台TI-Nspire一样，也可以将文件从计算器传输到PC。&lt;br /&gt;
&lt;br /&gt;
和真实的计算器一样，TI-Nspire学生端软件分为CAS版和非CAS版，内建的模拟器分别为TI-Nspire CX CAS模拟器和TI-Nspire CX模拟器。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire学生端软件是付费的，您可以免费下载，但如果不购买序列号，就仅能试用90天。&lt;br /&gt;
&lt;br /&gt;
==== TI-Nspire教师端软件 ====&lt;br /&gt;
&lt;br /&gt;
TI-Nspire教师端软件具有学生端软件的全部功能。除此之外，它具有让TI-Nspire直接退出考试模式（&#039;&#039;后述&#039;&#039;），通过TI-Nspire座充同时向大量TI-Nspire计算器传输文件和升级计算器操作系统，以及通过TI-Nspire无线导航系统进行文件分发，课堂提问，组织快速投票，屏幕直播等教学操作的功能。&lt;br /&gt;
&lt;br /&gt;
TI-Nspire教师端软件也分为CAS版和非CAS版，同样也是一个付费软件。&lt;br /&gt;
&lt;br /&gt;
==== 第三方模拟器 ====&lt;br /&gt;
&lt;br /&gt;
第三方模拟器（非德州仪器开发）能够提供硬件级的设备模拟，因此您能够进行更新其操作系统，使用系统破解程序Ndless或进行串口调试等操作，很适合进行Ndless程序的调试。&lt;br /&gt;
&lt;br /&gt;
常用的第三方模拟器包括[[KArmTI]]，[[Firebird]]和[[Ndless]] SDK中带有的模拟器。&lt;br /&gt;
&lt;br /&gt;
要使用这些模拟器，您通常需要自行准备OS,boot1，boot2和manuf文件。OS文件可从[https://education.ti.com/zh-CN/china/downloads-and-activities 德州仪器教育-下载中心]得到，然而boot1，boot2和manuf则需要自行寻找下载地址或从实体计算器中提取。此外，您可能需要调节程序的配置才能正常地进行模拟。&lt;br /&gt;
&lt;br /&gt;
=== iOS端 ===&lt;br /&gt;
&lt;br /&gt;
德州仪器官方已经开发了TI-Nspire模拟器的iOS版本，您可以在您的iOS设备上随时随地通过TI-Nspire模拟器进行数学演算，制作文档和编写TI-BASIC/Lua程序。&lt;br /&gt;
&lt;br /&gt;
和TI-Nspire学生端/教师端软件相同的地方是：&lt;br /&gt;
&lt;br /&gt;
*它也分为CAS版和非CAS版。&lt;br /&gt;
*它同样也是一个付费软件，然而不提供试用。然而，如果您的第三方软件助手中提供了这款软件的免费下载，或您得到了这款软件的安装包并对iOS设备进行了越狱，则可以将其免费地安装到iOS设备上并使用。&lt;br /&gt;
*它的模拟同样是非硬件级的。&lt;br /&gt;
&lt;br /&gt;
=== Android端 ===&lt;br /&gt;
&lt;br /&gt;
德州仪器官方并未开发Android系统适用的TI-Nspire模拟器，然而Android设备上仍然有第三方开发的模拟器可用。&lt;br /&gt;
&lt;br /&gt;
现在可用的第三方模拟器包括[[Firebird]]和[[NspirDroid]]。&lt;br /&gt;
&lt;br /&gt;
这些模拟器仍将提供硬件级的模拟。在使用这些模拟器时，您仍然需要自备OS,boot1,boot2和manuf文件。&lt;br /&gt;
&lt;br /&gt;
=== 计算器端 ===&lt;br /&gt;
&lt;br /&gt;
德州仪器在计算器中附带了两个库：linalgcas（在非CAS机型中，使用的是linalg，比CAS版缺少一些功能）和numtheory，作为计算器功能的一个补充。这两个库文件是包含在操作系统中的，用户可以将它们删除，然而一旦更新计算器的操作系统，它们就会自动恢复。&lt;br /&gt;
&lt;br /&gt;
linalgcas和linalg提供了很多线性代数运算功能，其中很多是系统自身没有的，另外一些是系统自身运算功能的增强。&lt;br /&gt;
&lt;br /&gt;
numtheory提供了一些与数论有关的运算。&lt;br /&gt;
&lt;br /&gt;
德州仪器自始至终都没有提供这两个库的中文版。然而，现在linalgcas已经有非官方的汉化版本。&lt;br /&gt;
== 考试模式 ==&lt;br /&gt;
TI-Nspire计算器有一个被称为“考试模式”的功能。在进行诸如SAT等考试时，考生需将计算器调节至考试模式。这样做的目的在于防止考生在机内存储文档和其他程序来进行作弊，以及禁用那些计算器上的不允许在考试中使用的功能。&lt;br /&gt;
=== 如何进入考试模式 ===&lt;br /&gt;
==== 通过组合键进入考试模式 ====&lt;br /&gt;
要通过组合键进入考试模式，首先需要将计算器关机（进入待机模式或彻底关闭电源均可），然后执行如下的按键操作：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 型号&lt;br /&gt;
! 按键操作&lt;br /&gt;
|-&lt;br /&gt;
| Clickpad（CAS）&lt;br /&gt;
| {{Key|esc}}+{{Key|home}}+{{Key|on}}&lt;br /&gt;
|-&lt;br /&gt;
| Touchpad（CAS）/ CM-C（CAS）/ CX(-C)（CAS）&lt;br /&gt;
| {{Key|esc}}+{{Key|on}}&lt;br /&gt;
|}&lt;br /&gt;
随后计算器将开机并弹出“进入考试模式”的对话框，此时可以选定要在考试模式中禁用哪些功能。&lt;br /&gt;
&lt;br /&gt;
如果您的计算器版本为OS 4.3或以上，还可使用增强型考试模式：首先需要将计算器关机，然后同时按下{{Key|+}},{{key|Enter}}和{{key|on}}。这种考试模式和普通的考试模式不同之处在于，它将禁用计算器的编程功能。&lt;br /&gt;
&lt;br /&gt;
在点击“确定”后，计算器将重新启动并进入考试模式。&lt;br /&gt;
==== 通过其他TI-Nspire进入考试模式 ====&lt;br /&gt;
在一部已经进入了考试模式的TI-Nspire上新建一个文档，然后按{{Key|doc}}键（在Clickpad机型上应按下{{Key|ctrl}}+{{Key|home}}键），选择“按键测试-传输按下测验模式”。此时该计算器上将弹出一个对话框，显示该计算器的哪些功能已被禁用。&lt;br /&gt;
&lt;br /&gt;
此时将另一部TI-Nspire通过Mini-USB连接线连接至该机，并点击对话框中的“传输”按钮。与这部计算器相连的另一部计算器将重启并进入考试模式，且该计算器上被禁用的功能在与之相连的计算器上也会被禁用。&lt;br /&gt;
=== 考试模式的特性 ===&lt;br /&gt;
在进入考试模式后，计算器每次开机都会显示“考试模式”的对话框，并显示哪些功能已经被禁用了。&lt;br /&gt;
&lt;br /&gt;
考试模式中，计算器的功能会受到如下限制：&lt;br /&gt;
*计算器的部分功能可能被禁用——具体取决于“进入考试模式”对话框中的设定。&lt;br /&gt;
*无法打开机内的文件——机内的用户文件均会被隐藏起来。&lt;br /&gt;
*“便签本”中预存的数据将被清空。&lt;br /&gt;
此外是，在考试模式中，计算器顶端的LED灯会闪烁以表明计算器处在考试模式。&lt;br /&gt;
&lt;br /&gt;
即便是取出电池或按戳计算器背面的Reset孔，也不能退出考试模式。要退出考试模式，必须通过特定的方法。&lt;br /&gt;
&lt;br /&gt;
=== 如何退出考试模式 ===&lt;br /&gt;
==== 通过PC退出考试模式 ====&lt;br /&gt;
1.打开PC上的“记事本”程序（或其他文本编辑软件），随意地键入一些内容（任意长度，任意内容均可）。&lt;br /&gt;
&lt;br /&gt;
2.将这一文本保存为&#039;&#039;Exit Test Mode.tns&#039;&#039;。&#039;&#039;&#039;注意：这个文件名是区分大小写的。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3.将计算器与PC连接，打开TI-Nspire计算机连接软件（或学生软件/教师软件），将这个文件传输到计算器中的Press-to-Test文件夹。&lt;br /&gt;
&lt;br /&gt;
4.计算器将重启并退出考试模式。所有用户文件将会被恢复，所有被禁用的功能会重新启用，LED也将熄灭。&lt;br /&gt;
==== 通过其他TI-Nspire退出考试模式 ====&lt;br /&gt;
1.将另一部TI-Nspire通过Mini-USB连接线连接至欲退出考试模式的计算器。&lt;br /&gt;
&lt;br /&gt;
2.在欲退出考试模式的TI-Nspire上新建一个文档，然后按{{Key|doc}}键（在Clickpad机型上应按下{{Key|ctrl}}+{{Key|home}}键），选择“按键测试-退出测验模式”。&lt;br /&gt;
&lt;br /&gt;
3.该机将重启并退出考试模式。&lt;br /&gt;
&lt;br /&gt;
==== 通过TI-Nspire无线导航系统退出考试模式 ====&lt;br /&gt;
通过TI-Nspire无线导航系统和教师端软件，可以向计算器“广播”退出考试模式的信号，从而使大量计算器同时退出考试模式。&lt;br /&gt;
&lt;br /&gt;
== TI-Nspire 底座引脚定义 ==&lt;br /&gt;
&lt;br /&gt;
参见主条目：[[TI-Nspire底座引脚定义]]&lt;br /&gt;
&lt;br /&gt;
{{TI-Calcs}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8470</id>
		<title>User talk:920831658</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8470"/>
		<updated>2017-12-04T04:20:20Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 关于 {{tl|Key}} 的问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 我这里已经更换了更高速的网络，先前在用户页里面提到的词条图片问题将很快被解决。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年4月10日 (日) 14:07 (CST)920831658&lt;br /&gt;
&lt;br /&gt;
== 有關圖庫問題 ==&lt;br /&gt;
&lt;br /&gt;
在[[Special:diff/6973]]中，[[:Category:沙盒]]這個分類下的圖片在該分類中都已縮略圖的形式展現，這個能會很好的替代&amp;lt;nowiki&amp;gt;&amp;lt;gallery&amp;gt;&amp;lt;/nowiki&amp;gt;。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月17日 (二) 19:25 (CST)&lt;br /&gt;
&lt;br /&gt;
明白。不过这样更改图片的分类会不会造成检索和管理的问题？[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年5月20日 (五) 21:05 (CST)&lt;br /&gt;
:目前我是沒看到有什麼問題。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月20日 (五) 21:38 (CST)&lt;br /&gt;
&lt;br /&gt;
== 推薦使用有序列表，而不是手動列表 ==&lt;br /&gt;
&lt;br /&gt;
920831658，您好，&lt;br /&gt;
&lt;br /&gt;
我注意到了您在您所創建的條目中多次使用的手動列表，就像這樣：&lt;br /&gt;
 1.aaaaaa&lt;br /&gt;
 2.xxxxxxx&lt;br /&gt;
這樣做雖然方便，但是不利於整個百科的統一，建議您使用以下方法替代：&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 代碼 !! 效果&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&amp;lt;/pre&amp;gt; ||&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&lt;br /&gt;
|}&lt;br /&gt;
如果您有能力，也希望您使用有序列表改善其他條目，謝謝。&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 19:17 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}}  已发现此问题并着手改正。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
:說好的簽名呢？--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 22:09 (CST)&lt;br /&gt;
&lt;br /&gt;
抱歉，忘记了 :( [[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
== 关于 {{tl|Key}} 的问题 ==&lt;br /&gt;
&lt;br /&gt;
“其中的部分设置会使得按键0~9，+-×÷显示为一大串错误信息” 请问是什么设置项目呢？能不能给一下具体的设置和具体问题的页面呢？&lt;br /&gt;
另外 “LaTeX源（用于文字浏览器）” 这个选项显示的不是错误信息，而是显示 LaTeX 源代码，是让使用纯文本浏览器的用户可以查看 LaTeX 源代码以脑解 LaTeX 用的。 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年11月29日 (三) 23:46 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}}受影响的设置项是参数设置-显示-数学公式-PNG图片。错误信息为红色加粗的“&#039;&#039;&#039;解析失败 (PNG转换失败；检查latex和dvipng（或dvips + gs + convert）是否正确安装): 0&#039;&#039;&#039;”（对于&amp;lt;nowiki&amp;gt;{{Key|0}}而言&amp;lt;/nowiki&amp;gt;)。&lt;br /&gt;
&lt;br /&gt;
以前曾就png显示的问题进行过讨论，但讨论的结果是此问题短时间内不会修复。为避免新的编辑受到&amp;lt;nowiki&amp;gt;{{Key}}&amp;lt;/nowiki&amp;gt;的影响，故作此提示。实际上这个问题也会影响到其他数学公式的显示。&lt;br /&gt;
&lt;br /&gt;
[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2017年12月3日 (日) 22:56 (CST)&lt;br /&gt;
&lt;br /&gt;
* 我刚测试，这个问题现在应该已经解决了，能否修改一下设置试试？如果问题还存在，能不能提供一下具体的问题页面。谢谢。 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年12月3日 (日) 23:14 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}} LaTeX和mathML已经正常工作。png图片仍有问题。全部引用了&amp;lt;nowiki&amp;gt;{{Key}}&amp;lt;/nowiki&amp;gt;的页面都有此问题。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2017年12月3日 (日) 23:37 (CST)&lt;br /&gt;
&lt;br /&gt;
* 现在应该修好了。能否再确认一下呢？ --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年12月4日 (一) 12:20 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8468</id>
		<title>User talk:920831658</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8468"/>
		<updated>2017-12-03T15:14:33Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 关于 {{Key}} 的问题 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 我这里已经更换了更高速的网络，先前在用户页里面提到的词条图片问题将很快被解决。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年4月10日 (日) 14:07 (CST)920831658&lt;br /&gt;
&lt;br /&gt;
== 有關圖庫問題 ==&lt;br /&gt;
&lt;br /&gt;
在[[Special:diff/6973]]中，[[:Category:沙盒]]這個分類下的圖片在該分類中都已縮略圖的形式展現，這個能會很好的替代&amp;lt;nowiki&amp;gt;&amp;lt;gallery&amp;gt;&amp;lt;/nowiki&amp;gt;。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月17日 (二) 19:25 (CST)&lt;br /&gt;
&lt;br /&gt;
明白。不过这样更改图片的分类会不会造成检索和管理的问题？[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年5月20日 (五) 21:05 (CST)&lt;br /&gt;
:目前我是沒看到有什麼問題。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月20日 (五) 21:38 (CST)&lt;br /&gt;
&lt;br /&gt;
== 推薦使用有序列表，而不是手動列表 ==&lt;br /&gt;
&lt;br /&gt;
920831658，您好，&lt;br /&gt;
&lt;br /&gt;
我注意到了您在您所創建的條目中多次使用的手動列表，就像這樣：&lt;br /&gt;
 1.aaaaaa&lt;br /&gt;
 2.xxxxxxx&lt;br /&gt;
這樣做雖然方便，但是不利於整個百科的統一，建議您使用以下方法替代：&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 代碼 !! 效果&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&amp;lt;/pre&amp;gt; ||&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&lt;br /&gt;
|}&lt;br /&gt;
如果您有能力，也希望您使用有序列表改善其他條目，謝謝。&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 19:17 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}}  已发现此问题并着手改正。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
:說好的簽名呢？--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 22:09 (CST)&lt;br /&gt;
&lt;br /&gt;
抱歉，忘记了 :( [[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
== 关于 {{tl|Key}} 的问题 ==&lt;br /&gt;
&lt;br /&gt;
“其中的部分设置会使得按键0~9，+-×÷显示为一大串错误信息” 请问是什么设置项目呢？能不能给一下具体的设置和具体问题的页面呢？&lt;br /&gt;
另外 “LaTeX源（用于文字浏览器）” 这个选项显示的不是错误信息，而是显示 LaTeX 源代码，是让使用纯文本浏览器的用户可以查看 LaTeX 源代码以脑解 LaTeX 用的。 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年11月29日 (三) 23:46 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}}受影响的设置项是参数设置-显示-数学公式-PNG图片。错误信息为红色加粗的“&#039;&#039;&#039;解析失败 (PNG转换失败；检查latex和dvipng（或dvips + gs + convert）是否正确安装): 0&#039;&#039;&#039;”（对于&amp;lt;nowiki&amp;gt;{{Key|0}}而言&amp;lt;/nowiki&amp;gt;)。&lt;br /&gt;
&lt;br /&gt;
以前曾就png显示的问题进行过讨论，但讨论的结果是此问题短时间内不会修复。为避免新的编辑受到&amp;lt;nowiki&amp;gt;{{Key}}&amp;lt;/nowiki&amp;gt;的影响，故作此提示。实际上这个问题也会影响到其他数学公式的显示。&lt;br /&gt;
&lt;br /&gt;
[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2017年12月3日 (日) 22:56 (CST)&lt;br /&gt;
&lt;br /&gt;
* 我刚测试，这个问题现在应该已经解决了，能否修改一下设置试试？如果问题还存在，能不能提供一下具体的问题页面。谢谢。 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年12月3日 (日) 23:14 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8467</id>
		<title>User talk:920831658</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8467"/>
		<updated>2017-12-03T15:14:14Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 关于 {{Key}} 的问题 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 我这里已经更换了更高速的网络，先前在用户页里面提到的词条图片问题将很快被解决。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年4月10日 (日) 14:07 (CST)920831658&lt;br /&gt;
&lt;br /&gt;
== 有關圖庫問題 ==&lt;br /&gt;
&lt;br /&gt;
在[[Special:diff/6973]]中，[[:Category:沙盒]]這個分類下的圖片在該分類中都已縮略圖的形式展現，這個能會很好的替代&amp;lt;nowiki&amp;gt;&amp;lt;gallery&amp;gt;&amp;lt;/nowiki&amp;gt;。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月17日 (二) 19:25 (CST)&lt;br /&gt;
&lt;br /&gt;
明白。不过这样更改图片的分类会不会造成检索和管理的问题？[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年5月20日 (五) 21:05 (CST)&lt;br /&gt;
:目前我是沒看到有什麼問題。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月20日 (五) 21:38 (CST)&lt;br /&gt;
&lt;br /&gt;
== 推薦使用有序列表，而不是手動列表 ==&lt;br /&gt;
&lt;br /&gt;
920831658，您好，&lt;br /&gt;
&lt;br /&gt;
我注意到了您在您所創建的條目中多次使用的手動列表，就像這樣：&lt;br /&gt;
 1.aaaaaa&lt;br /&gt;
 2.xxxxxxx&lt;br /&gt;
這樣做雖然方便，但是不利於整個百科的統一，建議您使用以下方法替代：&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 代碼 !! 效果&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&amp;lt;/pre&amp;gt; ||&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&lt;br /&gt;
|}&lt;br /&gt;
如果您有能力，也希望您使用有序列表改善其他條目，謝謝。&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 19:17 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}}  已发现此问题并着手改正。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
:說好的簽名呢？--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 22:09 (CST)&lt;br /&gt;
&lt;br /&gt;
抱歉，忘记了 :( [[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
== 关于 {{tl|Key}} 的问题 ==&lt;br /&gt;
&lt;br /&gt;
“其中的部分设置会使得按键0~9，+-×÷显示为一大串错误信息” 请问是什么设置项目呢？能不能给一下具体的设置和具体问题的页面呢？&lt;br /&gt;
另外 “LaTeX源（用于文字浏览器）” 这个选项显示的不是错误信息，而是显示 LaTeX 源代码，是让使用纯文本浏览器的用户可以查看 LaTeX 源代码以脑解 LaTeX 用的。 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年11月29日 (三) 23:46 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}}受影响的设置项是参数设置-显示-数学公式-PNG图片。错误信息为红色加粗的“&#039;&#039;&#039;解析失败 (PNG转换失败；检查latex和dvipng（或dvips + gs + convert）是否正确安装): 0&#039;&#039;&#039;”（对于&amp;lt;nowiki&amp;gt;{{Key|0}}而言&amp;lt;/nowiki&amp;gt;)。&lt;br /&gt;
&lt;br /&gt;
以前曾就png显示的问题进行过讨论，但讨论的结果是此问题短时间内不会修复。为避免新的编辑受到&amp;lt;nowiki&amp;gt;{{Key}}&amp;lt;/nowiki&amp;gt;的影响，故作此提示。实际上这个问题也会影响到其他数学公式的显示。&lt;br /&gt;
&lt;br /&gt;
[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2017年12月3日 (日) 22:56 (CST)&lt;br /&gt;
&lt;br /&gt;
# 我刚测试，这个问题现在应该已经解决了，能否修改一下设置试试？如果问题还存在，能不能提供一下具体的问题页面。谢谢。 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年12月3日 (日) 23:14 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8464</id>
		<title>User talk:920831658</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User_talk:920831658&amp;diff=8464"/>
		<updated>2017-11-29T15:46:02Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 关于 {{tl|Key}} 的问题 */ 新章节&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 我这里已经更换了更高速的网络，先前在用户页里面提到的词条图片问题将很快被解决。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年4月10日 (日) 14:07 (CST)920831658&lt;br /&gt;
&lt;br /&gt;
== 有關圖庫問題 ==&lt;br /&gt;
&lt;br /&gt;
在[[Special:diff/6973]]中，[[:Category:沙盒]]這個分類下的圖片在該分類中都已縮略圖的形式展現，這個能會很好的替代&amp;lt;nowiki&amp;gt;&amp;lt;gallery&amp;gt;&amp;lt;/nowiki&amp;gt;。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月17日 (二) 19:25 (CST)&lt;br /&gt;
&lt;br /&gt;
明白。不过这样更改图片的分类会不会造成检索和管理的问题？[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年5月20日 (五) 21:05 (CST)&lt;br /&gt;
:目前我是沒看到有什麼問題。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt;          &amp;lt;span style=&amp;quot;box-shadow:0 0 30px #6640FF;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;給我留言&#039;&#039;&#039;-{」}-]]-{「}-歡迎加入 &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;-{」}-&amp;lt;/span&amp;gt; 2016年5月20日 (五) 21:38 (CST)&lt;br /&gt;
&lt;br /&gt;
== 推薦使用有序列表，而不是手動列表 ==&lt;br /&gt;
&lt;br /&gt;
920831658，您好，&lt;br /&gt;
&lt;br /&gt;
我注意到了您在您所創建的條目中多次使用的手動列表，就像這樣：&lt;br /&gt;
 1.aaaaaa&lt;br /&gt;
 2.xxxxxxx&lt;br /&gt;
這樣做雖然方便，但是不利於整個百科的統一，建議您使用以下方法替代：&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 代碼 !! 效果&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&amp;lt;/pre&amp;gt; ||&lt;br /&gt;
#這就是有序列表&lt;br /&gt;
#每一個＃都會自動生成一個新的數字&lt;br /&gt;
##多個＃連用可以有子列表&lt;br /&gt;
###就像這樣&lt;br /&gt;
##多智能呀！&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#*诶？#*可以連用的！&lt;br /&gt;
#*就像這樣&lt;br /&gt;
#**多少個都行&lt;br /&gt;
#現在還能回到第一層&lt;br /&gt;
#如果這一行我不想顯示數值，那麼我可以這樣&lt;br /&gt;
&lt;br /&gt;
#這是第一行&lt;br /&gt;
#:這行沒有數字&lt;br /&gt;
#這就成了第二行，數字編號會連起來&lt;br /&gt;
|}&lt;br /&gt;
如果您有能力，也希望您使用有序列表改善其他條目，謝謝。&lt;br /&gt;
&lt;br /&gt;
--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 19:17 (CST)&lt;br /&gt;
&lt;br /&gt;
{{V|R}}  已发现此问题并着手改正。[[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
:說好的簽名呢？--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年6月1日 (三) 22:09 (CST)&lt;br /&gt;
&lt;br /&gt;
抱歉，忘记了 :( [[User:920831658|920831658]]（[[User talk:920831658|讨论]]） 2016年6月1日 (三) 22:27 (CST)&lt;br /&gt;
&lt;br /&gt;
== 关于 {{tl|Key}} 的问题 ==&lt;br /&gt;
&lt;br /&gt;
“其中的部分设置会使得按键0~9，+-×÷显示为一大串错误信息” 请问是什么设置项目呢？能不能给一下具体的设置和具体问题的页面呢？&lt;br /&gt;
另外 “LaTeX源（用于文字浏览器）” 这个选项显示的不是错误信息，而是显示 LaTeX 源代码，是让使用纯文本浏览器的用户可以查看 LaTeX 源代码以脑解 LaTeX 用的。 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年11月29日 (三) 23:46 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Welcome&amp;diff=8455</id>
		<title>Template:Welcome</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Welcome&amp;diff=8455"/>
		<updated>2017-10-19T15:24:00Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​fix: remove unnecessary encode // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #fdffe7; border: 1px solid #fceb92;vertical-align: middle; padding: 3px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;您好 {{BASEPAGENAME}}，欢迎加入计算器百科！&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
您现已成功注册[[计算器百科:关于|计算器百科]]帐户，用户名为“{{BASEPAGENAME}}”。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
在您[[Special:用户登录|登陆]]后，在大部分条目点击“编辑”按钮即可编辑页面。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
您可以[https://calcwiki.org/index.php?title=User:{{BASEPAGENAMEE}}&amp;amp;action=edit 创建您的用户页面]，以便更好地让其他用戶更好了解您。&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
建議您在正式開始之前，仔細閱讀[[CW:P|計算器百科的基本方針]]，以便對計算器百科的運行方式有所了解。&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
如果您在编辑过程中遇到了问题，或是想要请求管理员帮助，您可以在[[Project:Chat|聊天室]]发言以获得帮助。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;祝您在计算器百科编辑愉快！&amp;lt;/strong&amp;gt;&lt;br /&gt;
*欢迎您的用户：{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{doc}}[[Category:计算器百科基础模板]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:Welcome&amp;diff=8453</id>
		<title>Template:Welcome</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:Welcome&amp;diff=8453"/>
		<updated>2017-10-19T15:22:37Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​fix: edit link error on username with space // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #fdffe7; border: 1px solid #fceb92;vertical-align: middle; padding: 3px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;您好 {{BASEPAGENAMEE}}，欢迎加入计算器百科！&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
您现已成功注册[[计算器百科:关于|计算器百科]]帐户，用户名为“{{BASEPAGENAMEE}}”。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
在您[[Special:用户登录|登陆]]后，在大部分条目点击“编辑”按钮即可编辑页面。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
您可以[https://calcwiki.org/index.php?title=User:{{BASEPAGENAMEE}}&amp;amp;action=edit 创建您的用户页面]，以便更好地让其他用戶更好了解您。&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
建議您在正式開始之前，仔細閱讀[[CW:P|計算器百科的基本方針]]，以便對計算器百科的運行方式有所了解。&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
如果您在编辑过程中遇到了问题，或是想要请求管理员帮助，您可以在[[Project:Chat|聊天室]]发言以获得帮助。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;祝您在计算器百科编辑愉快！&amp;lt;/strong&amp;gt;&lt;br /&gt;
*欢迎您的用户：{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{doc}}[[Category:计算器百科基础模板]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8430</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8430"/>
		<updated>2017-08-24T14:58:12Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=}}&lt;br /&gt;
&amp;lt;!-- 请在此行下面进行测试。不要删除此提示语和上面的沙盒顶部模板。 --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\operatorname{d}\!y\over\operatorname{d}\!x} x^x = x^x (\ln(2)+1) &amp;lt;/math&amp;gt;&lt;br /&gt;
b&lt;br /&gt;
c&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8429</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8429"/>
		<updated>2017-08-24T14:44:17Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=}}&lt;br /&gt;
&amp;lt;!-- 请在此行下面进行测试。不要删除此提示语和上面的沙盒顶部模板。 --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\operatorname{d}\!y\over\operatorname{d}\!x} x^x = x^x (\ln(2)+1) &amp;lt;/math&amp;gt;&lt;br /&gt;
b&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8428</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8428"/>
		<updated>2017-08-24T14:40:10Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=}}&lt;br /&gt;
&amp;lt;!-- 请在此行下面进行测试。不要删除此提示语和上面的沙盒顶部模板。 --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\operatorname{d}\!y\over\operatorname{d}\!x} x^x = x^x (\ln(2)+1) &amp;lt;/math&amp;gt;&lt;br /&gt;
a&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8427</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8427"/>
		<updated>2017-08-24T14:22:51Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=}}&lt;br /&gt;
&amp;lt;!-- 请在此行下面进行测试。不要删除此提示语和上面的沙盒顶部模板。 --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;{\operatorname{d}\!y\over\operatorname{d}\!x} x^x = x^x (\ln(2)+1) &amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&amp;diff=8404</id>
		<title>MediaWiki:Gadget-DotsSyntaxHighlighter.js</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=MediaWiki:Gadget-DotsSyntaxHighlighter.js&amp;diff=8404"/>
		<updated>2017-06-24T15:48:16Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​origin server will offline now, change to here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;!function(){&amp;quot;use strict&amp;quot;;function e(e){return new RegExp(&amp;quot;(&amp;quot;+e+&amp;quot;)\n*|&amp;quot;+b,&amp;quot;gm&amp;quot;)}function t(e){return new RegExp(&amp;quot;(&amp;lt;/&amp;quot;+e+&amp;quot;&amp;gt;)\n*|&amp;quot;+x,&amp;quot;gm&amp;quot;)}function i(){function t(e,t){t!=a&amp;amp;&amp;amp;(C+=&amp;quot;&#039;}#s&amp;quot;+x,b?(C+=&amp;quot;:before{&amp;quot;,b=!1):(C+=&amp;quot;:after{&amp;quot;,b=!0,++x),t&amp;amp;&amp;amp;(C+=&amp;quot;background-color:&amp;quot;+t+&amp;quot;;&amp;quot;),C+=&amp;quot;content:&#039;&amp;quot;,a=t),C+=e}function o(i,n,r,a){var g;for(n.lastIndex=l;g=n.exec(s);n.lastIndex=l){if(g[1])return t(s.substring(l,n.lastIndex),i),void(l=n.lastIndex);var h=n.lastIndex-g[0].length;switch(h&amp;gt;l&amp;amp;&amp;amp;t(s.substring(l,h),i),l=n.lastIndex,g[0].charAt(0)){case&amp;quot;[&amp;quot;:&amp;quot;[&amp;quot;==g[0].charAt(1)?(t(&amp;quot;[[&amp;quot;,syntaxHighlighterConfig.wikilinkColor||i),o(syntaxHighlighterConfig.wikilinkColor||i,H)):(t(g[0],syntaxHighlighterConfig.externalLinkColor||i),o(syntaxHighlighterConfig.externalLinkColor||i,v));break;case&amp;quot;{&amp;quot;:&amp;quot;{&amp;quot;==g[0].charAt(1)?3==g[0].length?(t(&amp;quot;{{{&amp;quot;,syntaxHighlighterConfig.parameterColor||i),o(syntaxHighlighterConfig.parameterColor||i,k)):(t(&amp;quot;{{&amp;quot;,syntaxHighlighterConfig.templateColor||i),o(syntaxHighlighterConfig.templateColor||i,E)):(t(&amp;quot;{|&amp;quot;,syntaxHighlighterConfig.tableColor||i),o(syntaxHighlighterConfig.tableColor||i,z));break;case&amp;quot;&amp;lt;&amp;quot;:if(&amp;quot;!&amp;quot;==g[0].charAt(1)){t(g[0],syntaxHighlighterConfig.commentColor||i);break}var u=s.indexOf(&amp;quot;&amp;gt;&amp;quot;,l)+1;if(0==u){t(&amp;quot;&amp;lt;&amp;quot;,i),l=l-g[0].length+1;break}if(&amp;quot;/&amp;quot;==s.charAt(u-2))t(s.substring(l-g[0].length,u),syntaxHighlighterConfig.tagColor||i),l=u;else{var d=g[0].substring(1);if(f.test(d)){var m=&amp;quot;&amp;lt;/&amp;quot;+d+&amp;quot;&amp;gt;&amp;quot;,c=s.indexOf(m,l);-1==c?c=s.length:c+=m.length,t(s.substring(l-g[0].length,c),syntaxHighlighterConfig.tagColor||i),l=c}else p.test(d)?(t(s.substring(l-g[0].length,u),syntaxHighlighterConfig.tagColor||i),l=u,o(syntaxHighlighterConfig.tagColor||i,L[d])):(t(s.substring(l-g[0].length,u),syntaxHighlighterConfig.tagColor||i),l=u,T[d]||(T[d]=e(&amp;quot;&amp;lt;/&amp;quot;+d+&amp;quot;&amp;gt;&amp;quot;)),o(syntaxHighlighterConfig.tagColor||i,T[d]))}break;case&amp;quot;=&amp;quot;:/[^=]=+$/.test(s.substring(l,s.indexOf(&amp;quot;\n&amp;quot;,l)))?(t(&amp;quot;=&amp;quot;,syntaxHighlighterConfig.headingColor||i),o(syntaxHighlighterConfig.headingColor||i,S)):t(&amp;quot;=&amp;quot;,i);break;case&amp;quot;*&amp;quot;:case&amp;quot;#&amp;quot;:case&amp;quot;:&amp;quot;:t(g[0],syntaxHighlighterConfig.listOrIndentColor||i);break;case&amp;quot;;&amp;quot;:t(&amp;quot;;&amp;quot;,syntaxHighlighterConfig.headingColor||i),o(syntaxHighlighterConfig.headingColor||i,S);break;case&amp;quot;-&amp;quot;:t(g[0],syntaxHighlighterConfig.hrColor||i);break;case&amp;quot;\\&amp;quot;:if(t(g[0],syntaxHighlighterConfig.boldOrItalicColor||i),6==g[0].length)if(r){if(!a)return;r=!1}else a?r=!0:o(syntaxHighlighterConfig.boldOrItalicColor||i,w,!0,!1);else if(a){if(!r)return;a=!1}else r?a=!0:o(syntaxHighlighterConfig.boldOrItalicColor||i,w,!1,!0);break;case&amp;quot;&amp;amp;&amp;quot;:t(g[0],syntaxHighlighterConfig.entityColor||i);break;case&amp;quot;~&amp;quot;:t(g[0],syntaxHighlighterConfig.signatureColor||i);break;default:t(g[0],syntaxHighlighterConfig.externalLinkColor||i)}}}d=h.value;var a,s=d.replace(/[&#039;\\]/g,&amp;quot;\\$&amp;amp;&amp;quot;)+&amp;quot;\n&amp;quot;,l=0,C=&amp;quot;&amp;quot;,x=0,b=!0,$=Date.now();o(&amp;quot;&amp;quot;,w),l&amp;lt;s.length&amp;amp;&amp;amp;t(s.substring(l),&amp;quot;&amp;quot;);var F=Date.now();if(F-$&amp;gt;syntaxHighlighterConfig.timeout){clearInterval(m),h.removeEventListener(&amp;quot;input&amp;quot;,i),h.removeEventListener(&amp;quot;scroll&amp;quot;,n),h.removeEventListener(&amp;quot;scroll&amp;quot;,r),c.disconnect(),u.nodeValue=&amp;quot;&amp;quot;;var I={ca:&#039;S\&#039;ha desactivat el remarcar de sintaxi en aquesta pàgina perquè ha trigat massa temps. El temps màxim permès per a remarcar és $1ms, i el vostre ordinador ha trigat $2ms. Proveu tancar algunes pestanyes i programes i fer clic en &amp;quot;Mostra la previsualització&amp;quot; o &amp;quot;Mostra els canvis&amp;quot;. Si no funciona això, proveu un altre navegador web, i si això no funciona, proveu un ordinador més ràpid.&#039;,de:&#039;Die Syntaxhervorhebung wurde auf dieser Seite deaktiviert, da diese zu lange gedauert hat. Die maximal erlaubte Zeit zur Hervorhebung beträgt $1ms und dein Computer benötigte $2ms. Versuche einige Tabs und Programme zu schließen und klicke &amp;quot;Vorschau zeigen&amp;quot; oder &amp;quot;Änderungen zeigen&amp;quot;. Wenn das nicht funktioniert, probiere einen anderen Webbrowser und wenn immer noch nicht, probiere einen schnelleren Computer.&#039;,el:&amp;quot;Η έμφαση σύνταξης έχει απενεργοποιηθεί σε αυτήν τη σελίδα γιατί αργούσε πολύ. Ο μέγιστος επιτρεπτός χρόνος για την έμφαση σύνταξης είναι $1ms και ο υπολογιστής σας έκανε $2ms. Δοκιμάστε να κλείσετε μερικές καρτέλες και προγράμματα και να κάνετε κλικ στην «Εμφάνιση προεπισκόπησης» ή στην «Εμφάνιση αλλαγών». Αν αυτό δεν δουλέψει, δοκιμάστε έναν διαφορετικό περιηγητή και αν ούτε αυτό δουλέψει, δοκιμάστε έναν ταχύτερο υπολογιστή.&amp;quot;,en:&#039;Syntax highlighting on this page was disabled because it took too long. The maximum allowed highlighting time is $1ms, and your computer took $2ms. Try closing some tabs and programs and clicking &amp;quot;Show preview&amp;quot; or &amp;quot;Show changes&amp;quot;. If that doesn\&#039;t work, try a different web browser, and if that doesn\&#039;t work, try a faster computer.&#039;,es:&#039;Se desactivó el resaltar de sintaxis en esta página porque tardó demasiado. El tiempo máximo permitido para resaltar es $1ms, y tu ordenador tardó $2ms. Prueba cerrar algunas pestañas y programas y hacer clic en &amp;quot;Mostrar previsualización&amp;quot; o &amp;quot;Mostrar cambios&amp;quot;. Si no funciona esto, prueba otro navegador web, y si eso no funciona, prueba un ordenador más rápido.&#039;,fa:&amp;quot;از آنجایی که زمان زیادی صرف آن می‌شد، برجسته‌سازی نحو در این صفحه غیرفعال شده است. بیشینهٔ زمان برجسته‌سازی برای ابزار $1ms تعریف شده در حالی که رایانهٔ شما $2ms زمان نیاز داشت. می‌توانید بستن برخی سربرگ‌ها و برنامه‌ها و سپس کلیک‌کردن دکمهٔ «پیش‌نمایش» یا «نمایش تغییرات» را بیازمایید. اگر جواب نداد مرورگر دیگری را امتحان کنید؛ و اگر باز هم جواب نداد، رایانهٔ سریع‌تری را بیازمایید.&amp;quot;,fr:&#039;La coloration syntaxique a été désactivée sur cette page en raison d\&#039;un temps de chargement trop important ($2ms). Le temps maximum autorisé est $1ms. Vous pouvez essayer de fermer certains onglets et programmes et cliquez sur &amp;quot;Prévisualisation&amp;quot; ou &amp;quot;Voir mes modifications&amp;quot;. Si cela ne fonctionne pas, essayez un autre navigateur web, et si cela ne fonctionne toujours pas, essayez un ordinateur plus rapide.&#039;,io:&#039;Sintaxo-hailaitar en ca pagino esis nekapabligata pro ke konsumis tro multa tempo. La maxima permisata hailaitala tempo es $1ms, e tua ordinatro konsumis $2ms. Probez klozar kelka tabi e programi e kliktar &amp;quot;Previdar&amp;quot; o &amp;quot;Montrez chanji&amp;quot;. Se to ne funcionas, probez altra brauzero, e se to ne funcionas, probez plu rapida ordinatro.&#039;,pt:&#039;O marcador de sintaxe foi desativado nesta pagina porque demorou demais. O tempo máximo permitido para marcar e $1ms, e seu computador demorou $2ms. Tenta sair de alguns programas e clique em &amp;quot;Mostrar previsão&amp;quot; ou &amp;quot;Mostrar alterações&amp;quot;. Se isso não funciona, tenta usar uma outra navegador web, e se ainda não funciona, procura um computador mais rápido.&#039;,ru:&amp;quot;Подсветка синтаксиса на этой странице была отключена, так как она очень длинная. Максимально допустимое время отклика - $1мс, а ваш компьютер использует $2мс. Попробуйте закрыть несколько вкладок и программ, затем щёлкнуть по кнопке «Предварительный просмотр» или «Внесённые изменения». Если гаджет по-прежнему не работает, попробуйте использовать другой браузер, и если он также не работает, то попробуйте использовать более быстрый компьютер.&amp;quot;},A=mw.config.get(&amp;quot;wgUserLanguage&amp;quot;);return I=I[A]||I[A.substring(0,A.indexOf(&amp;quot;-&amp;quot;))]||I.en,h.style.backgroundColor=&amp;quot;&amp;quot;,h.style.marginTop=g.style.marginTop,g.removeAttribute(&amp;quot;dir&amp;quot;),g.removeAttribute(&amp;quot;lang&amp;quot;),g.setAttribute(&amp;quot;style&amp;quot;,&amp;quot;color:red; font-size:small&amp;quot;),void(g.textContent=I.replace(&amp;quot;$1&amp;quot;,syntaxHighlighterConfig.timeout).replace(&amp;quot;$2&amp;quot;,F-$))}if(x&amp;gt;y){var O=document.createDocumentFragment();do O.appendChild(document.createElement(&amp;quot;span&amp;quot;)).id=&amp;quot;s&amp;quot;+ ++y;while(x&amp;gt;y);g.appendChild(O)}u.nodeValue=C.substring(2).replace(/\n/g,&amp;quot;\\A &amp;quot;)+&amp;quot;&#039;}&amp;quot;}function n(){g.scrollLeft=h.scrollLeft}function r(){g.scrollTop=h.scrollTop}function o(){g.dir=h.dir}function a(){h.value!=d&amp;amp;&amp;amp;i(),h.scrollLeft!=g.scrollLeft&amp;amp;&amp;amp;n(),h.scrollTop!=g.scrollTop&amp;amp;&amp;amp;r(),h.offsetHeight!=g.offsetHeight&amp;amp;&amp;amp;(g.style.height=h.offsetHeight+&amp;quot;px&amp;quot;)}function s(){function e(e,t){if(&amp;quot;undefined&amp;quot;==typeof syntaxHighlighterConfig[e]&amp;amp;&amp;amp;(syntaxHighlighterConfig[e]=syntaxHighlighterSiteConfig[e]),&amp;quot;normal&amp;quot;==syntaxHighlighterConfig[e])syntaxHighlighterConfig[e]=t;else{if(&amp;quot;undefined&amp;quot;!=typeof syntaxHighlighterConfig[e])return;syntaxHighlighterConfig[e]=&amp;quot;undefined&amp;quot;!=typeof syntaxHighlighterConfig.defaultColor?syntaxHighlighterConfig.defaultColor:t}}function s(e){return new RegExp(&amp;quot;^(?:&amp;quot;+e.map(function(e){return e.replace(/([\\{}()|.?*+\-\^$\[\]])/g,&amp;quot;\\$1&amp;quot;)}).join(&amp;quot;|&amp;quot;)+&amp;quot;)$&amp;quot;)}window.syntaxHighlighterSiteConfig=window.syntaxHighlighterSiteConfig||{},window.syntaxHighlighterConfig=window.syntaxHighlighterConfig||{},e(&amp;quot;boldOrItalicColor&amp;quot;,&amp;quot;#EEE&amp;quot;),e(&amp;quot;commentColor&amp;quot;,&amp;quot;#EFE&amp;quot;),e(&amp;quot;entityColor&amp;quot;,&amp;quot;#DFD&amp;quot;),e(&amp;quot;externalLinkColor&amp;quot;,&amp;quot;#EFF&amp;quot;),e(&amp;quot;headingColor&amp;quot;,&amp;quot;#EEE&amp;quot;),e(&amp;quot;hrColor&amp;quot;,&amp;quot;#EEE&amp;quot;),e(&amp;quot;listOrIndentColor&amp;quot;,&amp;quot;#EFE&amp;quot;),e(&amp;quot;parameterColor&amp;quot;,&amp;quot;#FC6&amp;quot;),e(&amp;quot;signatureColor&amp;quot;,&amp;quot;#FC6&amp;quot;),e(&amp;quot;tagColor&amp;quot;,&amp;quot;#FEF&amp;quot;),e(&amp;quot;tableColor&amp;quot;,&amp;quot;#FFC&amp;quot;),e(&amp;quot;templateColor&amp;quot;,&amp;quot;#FFC&amp;quot;),e(&amp;quot;wikilinkColor&amp;quot;,&amp;quot;#EEF&amp;quot;),syntaxHighlighterConfig.nowikiTags=syntaxHighlighterConfig.nowikiTags||syntaxHighlighterSiteConfig.nowikiTags||[&amp;quot;nowiki&amp;quot;,&amp;quot;pre&amp;quot;],syntaxHighlighterConfig.sourceTags=syntaxHighlighterConfig.sourceTags||syntaxHighlighterSiteConfig.sourceTags||[&amp;quot;math&amp;quot;,&amp;quot;syntaxhighlight&amp;quot;,&amp;quot;source&amp;quot;,&amp;quot;timeline&amp;quot;,&amp;quot;hiero&amp;quot;],syntaxHighlighterConfig.timeout=syntaxHighlighterConfig.timeout||syntaxHighlighterSiteConfig.timeout||50,p=s(syntaxHighlighterConfig.nowikiTags),f=s(syntaxHighlighterConfig.sourceTags),syntaxHighlighterConfig.nowikiTags.forEach(function(e){L[e]=t(e)}),g=document.createElement(&amp;quot;div&amp;quot;),h=document.getElementById(&amp;quot;wpTextbox1&amp;quot;);var l=document.createElement(&amp;quot;style&amp;quot;);u=l.appendChild(document.createTextNode(&amp;quot;&amp;quot;));var d=window.getComputedStyle(h);g.dir=h.dir,g.lang=h.lang,g.style.backgroundColor=d.backgroundColor,g.style.border=&amp;quot;1px solid transparent&amp;quot;,g.style.boxSizing=&amp;quot;border-box&amp;quot;,g.style.clear=d.clear,g.style.color=&amp;quot;transparent&amp;quot;,g.style.fontFamily=d.fontFamily,g.style.fontSize=d.fontSize,g.style.lineHeight=&amp;quot;normal&amp;quot;,g.style.marginBottom=&amp;quot;0&amp;quot;,g.style.marginLeft=&amp;quot;0&amp;quot;,g.style.marginRight=&amp;quot;0&amp;quot;,g.style.marginTop=d.marginTop,g.style.overflowX=&amp;quot;auto&amp;quot;,g.style.overflowY=&amp;quot;scroll&amp;quot;,g.style.resize=&amp;quot;vertical&amp;quot;==d.resize||&amp;quot;both&amp;quot;==d.resize?&amp;quot;vertical&amp;quot;:&amp;quot;none&amp;quot;,g.style.tabSize=d.tabSize,g.style.whiteSpace=&amp;quot;pre-wrap&amp;quot;,g.style.width=&amp;quot;100%&amp;quot;,g.style.wordWrap=&amp;quot;normal&amp;quot;,h.style.backgroundColor=&amp;quot;transparent&amp;quot;,h.style.border=&amp;quot;1px inset gray&amp;quot;,h.style.boxSizing=&amp;quot;border-box&amp;quot;,h.style.fontSize=d.fontSize,h.style.lineHeight=&amp;quot;normal&amp;quot;,h.style.left=&amp;quot;0&amp;quot;,h.style.marginBottom=d.marginBottom,h.style.marginLeft=&amp;quot;0&amp;quot;,h.style.marginRight=&amp;quot;0&amp;quot;,h.style.overflowX=&amp;quot;auto&amp;quot;,h.style.overflowY=&amp;quot;scroll&amp;quot;,h.style.padding=&amp;quot;0&amp;quot;,h.style.resize=g.style.resize,h.style.top=&amp;quot;0&amp;quot;,h.style.width=&amp;quot;100%&amp;quot;,h.style.wordWrap=&amp;quot;normal&amp;quot;,g.style.height=h.offsetHeight+&amp;quot;px&amp;quot;,h.style.height=g.style.height,h.style.marginTop=-h.offsetHeight+&amp;quot;px&amp;quot;,h.parentNode.insertBefore(g,h),document.head.appendChild(l),h.addEventListener(&amp;quot;input&amp;quot;,i),h.addEventListener(&amp;quot;scroll&amp;quot;,n),h.addEventListener(&amp;quot;scroll&amp;quot;,r),c=new MutationObserver(o),c.observe(h,{attributes:!0}),m=setInterval(a,500),i()}function l(){setTimeout(s,0)}var g,h,u,d,m,c,f,p,y=-1,C=mw.config.get(&amp;quot;wgUrlProtocols&amp;quot;),x=&amp;quot;&amp;amp;(?:(?:n(?:bsp|dash)|m(?:dash|inus)|lt|e[mn]sp|thinsp|amp|quot|gt|shy|zwn?j|lrm|rlm|Alpha|Beta|Epsilon|Zeta|Eta|Iota|Kappa|[Mm]u|micro|Nu|[Oo]micron|[Rr]ho|Tau|Upsilon|Chi)|#x[0-9a-fA-F]+);\n*&amp;quot;,b=&amp;quot;\\[(?:\\[|(?:&amp;quot;+C+&amp;quot;))|\\{(?:\\{\\{?|\\|)|&amp;lt;(?:[:A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�][:\\wÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�-\\.·̀-ͯ‿-‿-⁀]*(?=/?&amp;gt;| |\n)|!--[^]*?--&amp;gt;\n*)|(?:&amp;quot;+C.replace(&amp;quot;|\\/\\/&amp;quot;,&amp;quot;&amp;quot;)+&amp;quot;)[^\\s\&amp;quot;&amp;lt;&amp;gt;[\\]{-}]*[^\\s\&amp;quot;,\\.:;&amp;lt;&amp;gt;[\\]{-}]\n*|^(?:=|[*#:;]+\n*|-{4,}\n*)|\\\\&#039;\\\\&#039;(?:\\\\&#039;)?|~{3,5}\n*|&amp;quot;+x,w=new RegExp(b,&amp;quot;gm&amp;quot;),H=e(&amp;quot;]][a-zA-Z]*&amp;quot;),v=e(&amp;quot;]&amp;quot;),k=e(&amp;quot;}}}&amp;quot;),E=e(&amp;quot;}}&amp;quot;),z=e(&amp;quot;\\|}&amp;quot;),S=e(&amp;quot;\n&amp;quot;),T={},L={},F=mw.config.get(&amp;quot;wgAction&amp;quot;),I=$.client.profile().layout;&amp;quot;edit&amp;quot;!=F&amp;amp;&amp;amp;&amp;quot;submit&amp;quot;!=F||&amp;quot;wikitext&amp;quot;!=mw.config.get(&amp;quot;wgPageContentModel&amp;quot;)||&amp;quot;trident&amp;quot;==I||&amp;quot;edge&amp;quot;==I||(&amp;quot;complete&amp;quot;==document.readyState?l():$(window).load(l))}();&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8401</id>
		<title>计算器百科:公告板/公告</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8401"/>
		<updated>2017-06-04T06:58:52Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{公告板|4|歡迎使用{{tl|第一次计算器异常搬运新帖模板}}搬運更多異常研究成果。}}&lt;br /&gt;
{{公告板|1| [http://calcwiki.org Calcwiki.org 域名]现已经可用。}}&lt;br /&gt;
{{公告板|1| [[计算器百科:首页|计算器百科]] 已更换到新服务器，现应可以正常使用，如果您遇到任何问题，请与 [[User:春上冰月|春上冰月]] 联系或者把问题提报到Calcwiki成员交流群(369287702) 。}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8400</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8400"/>
		<updated>2017-06-04T06:38:49Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=}}&lt;br /&gt;
&amp;lt;!-- 请在此行下面进行测试。不要删除此提示语和上面的沙盒顶部模板。 --&amp;gt;&lt;br /&gt;
新服务器测试&lt;br /&gt;
&lt;br /&gt;
Wiki Commons&lt;br /&gt;
&lt;br /&gt;
[[File:HP Prime.jpg|500px]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8399</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8399"/>
		<updated>2017-06-04T06:38:11Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=}}&lt;br /&gt;
&amp;lt;!-- 请在此行下面进行测试。不要删除此提示语和上面的沙盒顶部模板。 --&amp;gt;&lt;br /&gt;
新服务器测试&lt;br /&gt;
&lt;br /&gt;
Wiki Commons&lt;br /&gt;
[[File:HP Prime.jpg|100px]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8398</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8398"/>
		<updated>2017-06-04T06:36:29Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=}}&lt;br /&gt;
&amp;lt;!-- 请在此行下面进行测试。不要删除此提示语和上面的沙盒顶部模板。 --&amp;gt;&lt;br /&gt;
新服务器测试&lt;br /&gt;
&lt;br /&gt;
Wiki Commons&lt;br /&gt;
[[File:Elliðaey_(Breiðafjörður)_Iceland_M74A1908.jpg]]&lt;br /&gt;
[[File:HP Prime.jpg]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8390</id>
		<title>计算器百科:公告板/公告</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8390"/>
		<updated>2017-06-04T01:17:08Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{公告板|4|歡迎使用{{tl|第一次计算器异常搬运新帖模板}}搬運更多異常研究成果。}}&lt;br /&gt;
{{公告板|1| [http://calcwiki.org Calcwiki.org 域名]现已经可用。}}&lt;br /&gt;
{{公告板|1| 为了更快地访问维基共享资源内容，[[计算器百科:首页|计算器百科]] 即将搬运到位于香港的服务器，期间将关闭编辑功能，带来不便还望谅解。}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8352</id>
		<title>计算器百科:聊天室</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8352"/>
		<updated>2017-04-17T15:47:59Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 希望支持LaTeX或者其他的数学字符输入 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{/header}}&lt;br /&gt;
&lt;br /&gt;
== 这个页面引用的模板是不是有问题？ ==&lt;br /&gt;
&lt;br /&gt;
[[991CNX_异常应用/闪屏#贡献者]]&lt;br /&gt;
我不知道这个地方该怎么修复，哪位帮我处理一下，谢谢&lt;br /&gt;
--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 20:55 (CST)&lt;br /&gt;
:估计是当时这个模版我没做好还在调试，看历史引用替换掉那个模版就好了，具体原因过几天我去调查，另外最好能协助整理一下代码。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:36 (CST)&lt;br /&gt;
::另外一个条目也存在相同问题，我也解决了。关于这些问题，没有调查出有关原因，但相同问题应该不会再次发生了。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月6日 (四) 12:30 (CST)&lt;br /&gt;
&lt;br /&gt;
== 本维基能否申请机器人权限？ ==&lt;br /&gt;
&lt;br /&gt;
我打算写一个机器人，添加一些必要的重定向，例如 [[TI-89]] -&amp;gt; [[TI-89系列]]。--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 21:03 (CST)&lt;br /&gt;
可以 [[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2016年10月2日 (日) 23:01 (CST)&lt;br /&gt;
:大概是可以的，我个人认为机器人代码还是要任何方式公布或者定期经过检查的。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:39 (CST)&lt;br /&gt;
&lt;br /&gt;
== 建议启用主要命名空间的子页面功能 ==&lt;br /&gt;
&lt;br /&gt;
这样可以为教程等页面提供一个更好的导航上下文，也可保持页面整洁 [[User:Dousha99|Dousha99]]（[[User Talk:Dousha99|讨论]]） 全城高考2017 2017年2月11日 (六) 21:15 (CST)&lt;br /&gt;
&lt;br /&gt;
* 我们已经收到你的建议，即将启用此功能，你看看下启用了吗[[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2017年2月12日 (日) 15:46 (CST)&lt;br /&gt;
** 功能已经启用，最近有点忙抱歉。。 ---[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年2月13日 (一) 18:55 (CST)&lt;br /&gt;
&lt;br /&gt;
=希望支持LaTeX或者其他的数学字符输入=&lt;br /&gt;
&lt;br /&gt;
如题&lt;br /&gt;
（由于国内原因，这wiki系统实在不会用……）&lt;br /&gt;
BaiduID:fx-911cnx&lt;br /&gt;
[[User:Baiming|Baiming]]（[[User talk:Baiming|讨论]]） 2017年4月16日 (日) 13:14 (CST)&lt;br /&gt;
&lt;br /&gt;
*LaTeX 输入数学公式是支持的，你可以将 LaTeX 代码夹在 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 标签中 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年4月17日 (一) 23:42 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8351</id>
		<title>计算器百科:聊天室</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8351"/>
		<updated>2017-04-17T15:42:50Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 希望支持LaTeX或者其他的数学字符输入 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{/header}}&lt;br /&gt;
&lt;br /&gt;
== 这个页面引用的模板是不是有问题？ ==&lt;br /&gt;
&lt;br /&gt;
[[991CNX_异常应用/闪屏#贡献者]]&lt;br /&gt;
我不知道这个地方该怎么修复，哪位帮我处理一下，谢谢&lt;br /&gt;
--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 20:55 (CST)&lt;br /&gt;
:估计是当时这个模版我没做好还在调试，看历史引用替换掉那个模版就好了，具体原因过几天我去调查，另外最好能协助整理一下代码。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:36 (CST)&lt;br /&gt;
::另外一个条目也存在相同问题，我也解决了。关于这些问题，没有调查出有关原因，但相同问题应该不会再次发生了。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月6日 (四) 12:30 (CST)&lt;br /&gt;
&lt;br /&gt;
== 本维基能否申请机器人权限？ ==&lt;br /&gt;
&lt;br /&gt;
我打算写一个机器人，添加一些必要的重定向，例如 [[TI-89]] -&amp;gt; [[TI-89系列]]。--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 21:03 (CST)&lt;br /&gt;
可以 [[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2016年10月2日 (日) 23:01 (CST)&lt;br /&gt;
:大概是可以的，我个人认为机器人代码还是要任何方式公布或者定期经过检查的。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:39 (CST)&lt;br /&gt;
&lt;br /&gt;
== 建议启用主要命名空间的子页面功能 ==&lt;br /&gt;
&lt;br /&gt;
这样可以为教程等页面提供一个更好的导航上下文，也可保持页面整洁 [[User:Dousha99|Dousha99]]（[[User Talk:Dousha99|讨论]]） 全城高考2017 2017年2月11日 (六) 21:15 (CST)&lt;br /&gt;
&lt;br /&gt;
* 我们已经收到你的建议，即将启用此功能，你看看下启用了吗[[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2017年2月12日 (日) 15:46 (CST)&lt;br /&gt;
** 功能已经启用，最近有点忙抱歉。。 ---[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年2月13日 (一) 18:55 (CST)&lt;br /&gt;
&lt;br /&gt;
=希望支持LaTeX或者其他的数学字符输入=&lt;br /&gt;
&lt;br /&gt;
如题&lt;br /&gt;
（由于国内原因，这wiki系统实在不会用……）&lt;br /&gt;
BaiduID:fx-911cnx&lt;br /&gt;
[[User:Baiming|Baiming]]（[[User talk:Baiming|讨论]]） 2017年4月16日 (日) 13:14 (CST)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;\LaTeX&amp;lt;/math&amp;gt; 输入数学公式是支持的，你可以将 LaTeX 代码夹在 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 标签中 --[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年4月17日 (一) 23:42 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8350</id>
		<title>计算器百科:聊天室</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8350"/>
		<updated>2017-04-17T15:41:45Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 希望支持LaTeX或者其他的数学字符输入 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{/header}}&lt;br /&gt;
&lt;br /&gt;
== 这个页面引用的模板是不是有问题？ ==&lt;br /&gt;
&lt;br /&gt;
[[991CNX_异常应用/闪屏#贡献者]]&lt;br /&gt;
我不知道这个地方该怎么修复，哪位帮我处理一下，谢谢&lt;br /&gt;
--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 20:55 (CST)&lt;br /&gt;
:估计是当时这个模版我没做好还在调试，看历史引用替换掉那个模版就好了，具体原因过几天我去调查，另外最好能协助整理一下代码。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:36 (CST)&lt;br /&gt;
::另外一个条目也存在相同问题，我也解决了。关于这些问题，没有调查出有关原因，但相同问题应该不会再次发生了。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月6日 (四) 12:30 (CST)&lt;br /&gt;
&lt;br /&gt;
== 本维基能否申请机器人权限？ ==&lt;br /&gt;
&lt;br /&gt;
我打算写一个机器人，添加一些必要的重定向，例如 [[TI-89]] -&amp;gt; [[TI-89系列]]。--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 21:03 (CST)&lt;br /&gt;
可以 [[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2016年10月2日 (日) 23:01 (CST)&lt;br /&gt;
:大概是可以的，我个人认为机器人代码还是要任何方式公布或者定期经过检查的。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:39 (CST)&lt;br /&gt;
&lt;br /&gt;
== 建议启用主要命名空间的子页面功能 ==&lt;br /&gt;
&lt;br /&gt;
这样可以为教程等页面提供一个更好的导航上下文，也可保持页面整洁 [[User:Dousha99|Dousha99]]（[[User Talk:Dousha99|讨论]]） 全城高考2017 2017年2月11日 (六) 21:15 (CST)&lt;br /&gt;
&lt;br /&gt;
* 我们已经收到你的建议，即将启用此功能，你看看下启用了吗[[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2017年2月12日 (日) 15:46 (CST)&lt;br /&gt;
** 功能已经启用，最近有点忙抱歉。。 ---[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年2月13日 (一) 18:55 (CST)&lt;br /&gt;
&lt;br /&gt;
=希望支持LaTeX或者其他的数学字符输入=&lt;br /&gt;
&lt;br /&gt;
如题&lt;br /&gt;
（由于国内原因，这wiki系统实在不会用……）&lt;br /&gt;
BaiduID:fx-911cnx&lt;br /&gt;
[[User:Baiming|Baiming]]（[[User talk:Baiming|讨论]]） 2017年4月16日 (日) 13:14 (CST)&lt;br /&gt;
&lt;br /&gt;
*LaTeX 输入数学公式是支持的，你可以将 LaTeX 代码夹在 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 标签中&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:User_alt_acct_master&amp;diff=8334</id>
		<title>Template:User alt acct master</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:User_alt_acct_master&amp;diff=8334"/>
		<updated>2017-02-17T10:27:12Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{userbox&lt;br /&gt;
| border-c = #8888aa&lt;br /&gt;
| id       = [[File:System-users.svg|45px]]&lt;br /&gt;
| id-c     = #F8EABA&lt;br /&gt;
| info     = 此用戶在遵守[[Wikipedia:傀儡#被容許使用多重帳號的行為|方針]]的前提下擁有{{{1|多}}}個计算器百科帳號。&lt;br /&gt;
| info-c   = #F8EABA&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{brClear}}使用方法：&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;User alt acct master|&#039;&#039;&#039;帳號數目&#039;&#039;&#039;}}&lt;br /&gt;
「帳號數目」是選填欄位。&lt;br /&gt;
&lt;br /&gt;
相關模板：&lt;br /&gt;
* {{tl|User alternate acct}}&lt;br /&gt;
* {{tl|User alternate acct name}}&lt;br /&gt;
&lt;br /&gt;
[[Category:社区用户框模板|Alt Acct Master]]&lt;br /&gt;
[[Category:多重帳號模板|{{PAGENAME}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8307</id>
		<title>计算器百科:聊天室</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8307"/>
		<updated>2017-02-13T10:55:09Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 建议启用主要命名空间的子页面功能 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{/header}}&lt;br /&gt;
&lt;br /&gt;
== 这个页面引用的模板是不是有问题？ ==&lt;br /&gt;
&lt;br /&gt;
[[991CNX_异常应用/闪屏#贡献者]]&lt;br /&gt;
我不知道这个地方该怎么修复，哪位帮我处理一下，谢谢&lt;br /&gt;
--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 20:55 (CST)&lt;br /&gt;
:估计是当时这个模版我没做好还在调试，看历史引用替换掉那个模版就好了，具体原因过几天我去调查，另外最好能协助整理一下代码。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:36 (CST)&lt;br /&gt;
::另外一个条目也存在相同问题，我也解决了。关于这些问题，没有调查出有关原因，但相同问题应该不会再次发生了。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月6日 (四) 12:30 (CST)&lt;br /&gt;
&lt;br /&gt;
== 本维基能否申请机器人权限？ ==&lt;br /&gt;
&lt;br /&gt;
我打算写一个机器人，添加一些必要的重定向，例如 [[TI-89]] -&amp;gt; [[TI-89系列]]。--[[User:Arnie97|Arnie97]]（[[User talk:Arnie97|讨论]]） 2016年10月2日 (日) 21:03 (CST)&lt;br /&gt;
可以 [[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2016年10月2日 (日) 23:01 (CST)&lt;br /&gt;
:大概是可以的，我个人认为机器人代码还是要任何方式公布或者定期经过检查的。--&amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt; 2016年10月2日 (日) 23:39 (CST)&lt;br /&gt;
&lt;br /&gt;
== 建议启用主要命名空间的子页面功能 ==&lt;br /&gt;
&lt;br /&gt;
这样可以为教程等页面提供一个更好的导航上下文，也可保持页面整洁 [[User:Dousha99|Dousha99]]（[[User Talk:Dousha99|讨论]]） 全城高考2017 2017年2月11日 (六) 21:15 (CST)&lt;br /&gt;
&lt;br /&gt;
* 我们已经收到你的建议，即将启用此功能，你看看下启用了吗[[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2017年2月12日 (日) 15:46 (CST)&lt;br /&gt;
** 功能已经启用，最近有点忙抱歉。。 ---[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年2月13日 (一) 18:55 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8279</id>
		<title>计算器百科:公告板/公告</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8279"/>
		<updated>2017-02-06T06:07:05Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{公告板|4|歡迎使用{{tl|第一次计算器异常搬运新帖模板}}搬運更多異常研究成果。}}&lt;br /&gt;
{{公告板|1| [http://calcwiki.org Calcwiki.org 域名]现已经可用。}}&lt;br /&gt;
{{公告板|1| 由于不可抗拒力原因，[[计算器百科:首页|计算器百科]]站点搬运暂时取消，上传文件功能现在已经恢复。}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8277</id>
		<title>计算器百科:公告板/公告</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8277"/>
		<updated>2017-02-02T02:48:40Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​备案因素推迟一点时间 // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{公告板|4|歡迎使用{{tl|第一次计算器异常搬运新帖模板}}搬運更多異常研究成果。}}&lt;br /&gt;
{{公告板|1| [http://calcwiki.org Calcwiki.org 域名]现已经可用。}}&lt;br /&gt;
{{公告板|1| [[计算器百科:首页|计算器百科]]预计将在一个星期内进行站点搬运，届时编辑功能将被禁用。当前文件上传功能已禁用，如需上传文件建议使用[[Wikipedia:zh:WP:维基共享资源|维基共享资源]]或者等待站点搬运完成后上传，带来的不便之处还望谅解。}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8276</id>
		<title>计算器百科:公告板/公告</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8276"/>
		<updated>2017-02-02T02:12:32Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{公告板|4|歡迎使用{{tl|第一次计算器异常搬运新帖模板}}搬運更多異常研究成果。}}&lt;br /&gt;
{{公告板|1| [http://calcwiki.org Calcwiki.org 域名]现已经可用。}}&lt;br /&gt;
{{公告板|1| [[计算器百科:首页|计算器百科]]预计将在2月3日进行站点搬运，届时编辑功能将被禁用。当前文件上传功能已禁用，如需上传文件建议使用[[Wikipedia:zh:WP:维基共享资源|维基共享资源]]或者等待站点搬运完成后上传，带来的不便之处还望谅解。}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8275</id>
		<title>计算器百科:公告板/公告</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8275"/>
		<updated>2017-02-02T02:09:43Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{公告板|4|歡迎使用{{tl|第一次计算器异常搬运新帖模板}}搬運更多異常研究成果。}}&lt;br /&gt;
{{公告板|1| [http://calcwiki.org Calcwiki.org 域名]现已经可用。}}&lt;br /&gt;
{{公告板|1| [[计算器百科:首页|计算器百科]]预计将在2月3日进行站点搬运，届时编辑功能将被禁用。当前文件上传功能已禁用，如需上传文件建议使用[[cnwp:WP:维基共享资源]]或者等待站点搬运完成后上传，带来的不便之处还望谅解。}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=User_talk:Arnie97&amp;diff=8270</id>
		<title>User talk:Arnie97</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=User_talk:Arnie97&amp;diff=8270"/>
		<updated>2017-01-11T12:34:27Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​授予初级善意推定通知 // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #fdffe7; border: 1px solid #fceb92;vertical-align: middle; padding: 3px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;您好 {{BASEPAGENAME}}，欢迎加入计算器百科！&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
您现已成功注册[[计算器百科:关于|计算器百科]]帐户，用户名为“{{BASEPAGENAME}}”。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
在您[[Special:用户登录|登陆]]后，在大部分条目点击“编辑”按钮即可编辑页面。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
您可以[https://calcwiki.org/index.php?title=User:{{BASEPAGENAME}}&amp;amp;action=edit 创建您的用户页面]，以便更好地让其他用戶更好了解您。&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
建議您在正式開始之前，仔細閱讀[[CW:P|計算器百科的基本方針]]，以便對計算器百科的運行方式有所了解。&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
如果您在编辑过程中遇到了问题，或是想要请求管理员帮助，您可以在[[Project:Chat|聊天室]]发言以获得帮助。&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;祝您在计算器百科编辑愉快！&amp;lt;/strong&amp;gt;&lt;br /&gt;
*欢迎您的用户：{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- &amp;lt;span class=&amp;quot;Qsign1&amp;quot;&amp;gt;&#039;&#039;&#039;Q&#039;&#039;&#039;in&#039;&#039;&#039;y&#039;&#039;&#039;ongr&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;Qsign2&amp;quot;&amp;gt;[[User talk:Qinyongr|留言]]&amp;lt;/span&amp;gt; &amp;lt;sub&amp;gt;8·35&amp;lt;/sub&amp;gt;&amp;lt;/div&amp;gt; 2016年8月5日 (五) 12:49 (CST)&lt;br /&gt;
&lt;br /&gt;
== 致新初級善意推定用戶 ==&lt;br /&gt;
&lt;br /&gt;
[[File:Calcwiki_AGF.svg|right|150px]]&lt;br /&gt;
&#039;&#039;&#039;您好，Arnie97。經過行政員和[[Project:管理员|管理员]]的討論，现授予您成為[[User:Qinyongr/計算器百科:初級善意推定|初級善意推定]]用戶。 &#039;&#039;&#039;这将允许您：&lt;br /&gt;
*使自己的编辑自动标记为已巡查 &amp;lt;code&amp;gt;(autopatrol)&amp;lt;/code&amp;gt;。&lt;br /&gt;
*执行触发验证码的操作时无需验证 &amp;lt;code&amp;gt;(skipcaptcha)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;請&#039;&#039;&#039;您在自己的用户页放置{{tl|User AGF}}，一个标识阁下是初級善意推定用戶的用户框。&lt;br /&gt;
&lt;br /&gt;
此权限的授予，是因为我们认为是一名&#039;&#039;&#039;可信赖&#039;&#039;&#039;用户。这一权限并不会对您的编辑产生影响，此权限仅旨在减少您和管理员的工作量。您編輯時不會被要求輸入驗證碼，您建立的页面会被自动标记为“已巡查”。&lt;br /&gt;
&lt;br /&gt;
若您（最好永不发生）有滥用权限的嫌疑，您的权限會被&#039;&#039;&#039;剥夺&#039;&#039;&#039;，甚至遭到&#039;&#039;&#039;封禁&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
若您希望自己辞去职务，请至[[Project:申請|申請]]提出申请。&lt;br /&gt;
&lt;br /&gt;
如果有任何问题，欢迎在我的讨论页或是在&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://webchat.freenode.net/?channels=calcwiki IRC 頻道 #Calcwiki]&amp;lt;/span&amp;gt;中提出。&lt;br /&gt;
&lt;br /&gt;
祝您编辑愉快！--[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2017年1月11日 (三) 20:34 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=MediaWiki:Gadget-wikEd.js&amp;diff=8258</id>
		<title>MediaWiki:Gadget-wikEd.js</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=MediaWiki:Gadget-wikEd.js&amp;diff=8258"/>
		<updated>2016-12-21T04:49:33Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​直接内置到这里因为之前用于镜像的服务器即将被重装系统。。。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//  _________________________________________________________________________________________&lt;br /&gt;
// |                                                                                         |&lt;br /&gt;
// |                    === WARNING: GLOBAL GADGET FILE ===                                  |&lt;br /&gt;
// |                  Changes to this page affect many users.                                |&lt;br /&gt;
// | Please discuss changes on the talk page or on [[Wikipedia_talk:Gadget]] before editing. |&lt;br /&gt;
// |_________________________________________________________________________________________|&lt;br /&gt;
//&lt;br /&gt;
// Imports [[User:Cacycle/wikEd.js]]&lt;br /&gt;
// wikEd is a full-featured in-browser editor for Wikipedia, see [[User:Cacycle/wikEd]]&lt;br /&gt;
&lt;br /&gt;
// disable loading for IE, not needed, but might save a few milliseconds&lt;br /&gt;
// install [[Wikipedia:User:Cacycle/wikEd]] in-browser text editor&lt;br /&gt;
// importScriptURI(&#039;//en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js&#039;&lt;br /&gt;
// + &#039;&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
// 从国内服务器载入wikEd.js&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// JSHint options&lt;br /&gt;
/* jshint -W004, -W100, newcap: false, browser: true, jquery: true, sub: true, bitwise: true, curly: true, evil: true, forin: true, freeze: true, globalstrict: true, immed: true, latedef: true, loopfunc: true, quotmark: single, strict: true, undef: true */&lt;br /&gt;
/* global GM_getValue, GM_setValue, GM_xmlhttpRequest, console */&lt;br /&gt;
&lt;br /&gt;
// turn on ECMAScript 5 strict mode&lt;br /&gt;
&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
// define global object&lt;br /&gt;
var wikEd; if (wikEd === undefined) { wikEd = {}; }&lt;br /&gt;
&lt;br /&gt;
wikEd.Meta = function () {/*&lt;br /&gt;
// ==UserScript==&lt;br /&gt;
// @name        wikEd&lt;br /&gt;
// @version     0.9.147a&lt;br /&gt;
// @date        August 8, 2016&lt;br /&gt;
// @namespace   https://en.wikipedia.org/wiki/User:Cacycle/&lt;br /&gt;
// @description A full-featured in-browser editor for Wikipedia and other MediaWikis&lt;br /&gt;
// @include     *&lt;br /&gt;
// @homepage    https://en.wikipedia.org/wiki/User:Cacycle/wikEd&lt;br /&gt;
// @source      https://en.wikipedia.org/wiki/User:Cacycle/wikEd.js&lt;br /&gt;
// @author      Cacycle (https://en.wikipedia.org/wiki/User:Cacycle)&lt;br /&gt;
// @license     Released into the public domain&lt;br /&gt;
// @grant       GM_getValue&lt;br /&gt;
// @grant       GM_xmlhttpRequest&lt;br /&gt;
// ==/UserScript==&lt;br /&gt;
&lt;br /&gt;
wikEd is a full-featured edit page text editor for regular to advanced users on Wikipedia and other MediaWikis.&lt;br /&gt;
wikEd features syntax highlighting, reference, template, and code folding,&lt;br /&gt;
on-page Show preview and Show changes, and advanced search and replace functions.&lt;br /&gt;
wikEd works under all web browsers except Internet Explorer.&lt;br /&gt;
This code has to be saved as UTF-8 in your editor to preserve Unicode characters like ♥ (heart symbol).&lt;br /&gt;
&lt;br /&gt;
*/};&lt;br /&gt;
&lt;br /&gt;
// define global objects&lt;br /&gt;
var wikEdConfig;&lt;br /&gt;
var wikEdText;&lt;br /&gt;
var WED;&lt;br /&gt;
var WikEdDiff;&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// start of user configurable variables&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InitGlobalsConfigs: initialize user configurable variables&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InitGlobalConfigs = function () {&lt;br /&gt;
&lt;br /&gt;
	// user readable texts, copy changes to https://en.wikipedia.org/wiki/User:Cacycle/wikEd_international_en.js, also defined in wikEdDiff.js&lt;br /&gt;
	if (wikEd.config.text === undefined) { wikEd.config.text = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitText: define built-in user interface texts&lt;br /&gt;
	wikEd.InitText = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.text, {&lt;br /&gt;
&lt;br /&gt;
			// logo&lt;br /&gt;
			&#039;wikEdLogo alt&#039;:               &#039;wikEd&#039;,&lt;br /&gt;
			&#039;wikEdLogo title&#039;:             &#039;wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable&#039;,&lt;br /&gt;
			&#039;wikEdLogo error alt&#039;:         &#039;wikEd error&#039;,&lt;br /&gt;
			&#039;wikEdLogo error title&#039;:       &#039;Loading error - wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable&#039;,&lt;br /&gt;
			&#039;wikEdLogo browser alt&#039;:       &#039;(wikEd)&#039;,&lt;br /&gt;
			&#039;wikEdLogo browser title&#039;:     &#039;Browser not supported - wikEd {wikEdProgramVersion} ({wikEdProgramDate})&#039;,&lt;br /&gt;
			&#039;wikEdLogo incompatible alt&#039;:  &#039;(wikEd)&#039;,&lt;br /&gt;
			&#039;wikEdLogo incompatible title&#039;: &#039;Incompatible script, gadget, or add-on: {wikEdParameter} - wikEd {wikEdProgramVersion} ({wikEdProgramDate})&#039;,&lt;br /&gt;
			&#039;wikEdLogo disabled alt&#039;:      &#039;(wikEd)&#039;,&lt;br /&gt;
			&#039;wikEdLogo disabled title&#039;:    &#039;Disabled - wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to enable&#039;,&lt;br /&gt;
			&#039;wikEdLogo testVersion alt&#039;:   &#039;wikEd_dev&#039;,&lt;br /&gt;
			&#039;wikEdLogo testVersion title&#039;: &#039;wikEd_dev (unstable test version) {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable&#039;,&lt;br /&gt;
&lt;br /&gt;
			// top jumper&lt;br /&gt;
			&#039;wikEdScrollToEdit4 alt&#039;:      &#039;Scroll to edit&#039;,&lt;br /&gt;
			&#039;wikEdScrollToEdit4 title&#039;:    &#039;Scroll to edit field&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button bar grip titles&lt;br /&gt;
			&#039;wikEdGripFormat title&#039;:       &#039;Formatting buttons (click to hide or show)&#039;,&lt;br /&gt;
			&#039;wikEdGripTextify title&#039;:      &#039;Textify and wikify buttons (click to hide or show)&#039;,&lt;br /&gt;
			&#039;wikEdGripCustom1 title&#039;:      &#039;Custom buttons (click to hide or show)&#039;,&lt;br /&gt;
			&#039;wikEdGripFind title&#039;:         &#039;Find buttons (click to hide or show)&#039;,&lt;br /&gt;
			&#039;wikEdGripFix title&#039;:          &#039;Fixing buttons (click to hide or show)&#039;,&lt;br /&gt;
			&#039;wikEdGripCustom2 title&#039;:      &#039;Custom buttons (click to hide or show)&#039;,&lt;br /&gt;
			&#039;wikEdGripControl title&#039;:      &#039;wikEd control buttons (click to hide or show)&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button bar background titles&lt;br /&gt;
			&#039;wikEdBarFormat title&#039;:        &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarTextify title&#039;:       &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarCustom1 title&#039;:       &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarFind title&#039;:          &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarFix title&#039;:           &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarCustom2 title&#039;:       &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarControl title&#039;:       &#039;wikEd {wikEdProgramVersion} ({wikEdProgramDate})&#039;,&lt;br /&gt;
			&#039;wikEdBarPreview title&#039;:       &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarPreview2 title&#039;:      &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarJump title&#039;:          &#039;&#039;,&lt;br /&gt;
			&#039;wikEdBarPasted title&#039;:        &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// formatting buttons, top row&lt;br /&gt;
			&#039;wikEdUndo alt&#039;:               &#039;Undo&#039;,&lt;br /&gt;
			&#039;wikEdUndo title&#039;:             &#039;Undo&#039;,&lt;br /&gt;
			&#039;wikEdRedo alt&#039;:               &#039;Redo&#039;,&lt;br /&gt;
			&#039;wikEdRedo title&#039;:             &#039;Redo&#039;,&lt;br /&gt;
			&#039;wikEdBold alt&#039;:               &#039;Bold&#039;,&lt;br /&gt;
			&#039;wikEdBold title&#039;:             &#039;Bold text&#039;,&lt;br /&gt;
			&#039;wikEdItalic alt&#039;:             &#039;Italic&#039;,&lt;br /&gt;
			&#039;wikEdItalic title&#039;:           &#039;Italic text&#039;,&lt;br /&gt;
			&#039;wikEdUnderline alt&#039;:          &#039;Underline&#039;,&lt;br /&gt;
			&#039;wikEdUnderline title&#039;:        &#039;Underline text&#039;,&lt;br /&gt;
			&#039;wikEdStrikethrough alt&#039;:      &#039;Strikethrough&#039;,&lt;br /&gt;
			&#039;wikEdStrikethrough title&#039;:    &#039;Strikethrough text&#039;,&lt;br /&gt;
			&#039;wikEdNowiki alt&#039;:             &#039;Nowiki&#039;,&lt;br /&gt;
			&#039;wikEdNowiki title&#039;:           &#039;Nowiki markup text&#039;,&lt;br /&gt;
			&#039;wikEdSuperscript alt&#039;:        &#039;Superscript&#039;,&lt;br /&gt;
			&#039;wikEdSuperscript title&#039;:      &#039;Superscript text&#039;,&lt;br /&gt;
			&#039;wikEdSubscript alt&#039;:          &#039;Subscript&#039;,&lt;br /&gt;
			&#039;wikEdSubscript title&#039;:        &#039;Subscript text&#039;,&lt;br /&gt;
			&#039;wikEdRef alt&#039;:                &#039;Ref&#039;,&lt;br /&gt;
			&#039;wikEdRef title&#039;:              &#039;In-text reference (shift-click: named tag)&#039;,&lt;br /&gt;
			&#039;wikEdCase alt&#039;:               &#039;Case&#039;,&lt;br /&gt;
			&#039;wikEdCase title&#039;:             &#039;Toggle between lowercase, uppercase first, and uppercase&#039;,&lt;br /&gt;
			&#039;wikEdSort alt&#039;:               &#039;Sort&#039;,&lt;br /&gt;
			&#039;wikEdSort title&#039;:             &#039;Sort alphabetically&#039;,&lt;br /&gt;
			&#039;wikEdRedirect alt&#039;:           &#039;Redirect&#039;,&lt;br /&gt;
			&#039;wikEdRedirect title&#039;:         &#039;Create redirect, deletes whole text&#039;,&lt;br /&gt;
			&#039;wikEdUndoAll alt&#039;:            &#039;Undo all&#039;,&lt;br /&gt;
			&#039;wikEdUndoAll title&#039;:          &#039;Undo all changes&#039;,&lt;br /&gt;
			&#039;wikEdRedoAll alt&#039;:            &#039;Redo all&#039;,&lt;br /&gt;
			&#039;wikEdRedoAll title&#039;:          &#039;Redo all changes&#039;,&lt;br /&gt;
&lt;br /&gt;
			// formatting buttons, bottom row&lt;br /&gt;
			&#039;wikEdWikiLink alt&#039;:           &#039;Link&#039;,&lt;br /&gt;
			&#039;wikEdWikiLink title&#039;:         &#039;Wiki link&#039;,&lt;br /&gt;
			&#039;wikEdWebLink alt&#039;:            &#039;Weblink&#039;,&lt;br /&gt;
			&#039;wikEdWebLink title&#039;:          &#039;External weblink&#039;,&lt;br /&gt;
			&#039;wikEdHeading alt&#039;:            &#039;Heading&#039;,&lt;br /&gt;
			&#039;wikEdHeading title&#039;:          &#039;Increase heading levels (shift-click: decrease)&#039;,&lt;br /&gt;
			&#039;wikEdBulletList alt&#039;:         &#039;Bullet list&#039;,&lt;br /&gt;
			&#039;wikEdBulletList title&#039;:       &#039;Increase bulleted list level (shift-click: decrease)&#039;,&lt;br /&gt;
			&#039;wikEdNumberList alt&#039;:         &#039;Number list&#039;,&lt;br /&gt;
			&#039;wikEdNumberList title&#039;:       &#039;Increase numbered list level (shift-click: decrease)&#039;,&lt;br /&gt;
			&#039;wikEdIndentList alt&#039;:         &#039;Indent list&#039;,&lt;br /&gt;
			&#039;wikEdIndentList title&#039;:       &#039;Increase indention (shift-click: decrease)&#039;,&lt;br /&gt;
			&#039;wikEdDefinitionList alt&#039;:     &#039;Def list&#039;,&lt;br /&gt;
			&#039;wikEdDefinitionList title&#039;:   &#039;Definition list&#039;,&lt;br /&gt;
			&#039;wikEdImage alt&#039;:              &#039;Image&#039;,&lt;br /&gt;
			&#039;wikEdImage title&#039;:            &#039;Image&#039;,&lt;br /&gt;
			&#039;wikEdTable alt&#039;:              &#039;Table&#039;,&lt;br /&gt;
			&#039;wikEdTable title&#039;:            &#039;Table&#039;,&lt;br /&gt;
			&#039;wikEdReferences alt&#039;:         &#039;References&#039;,&lt;br /&gt;
			&#039;wikEdReferences title&#039;:       &#039;References location (shift-click: references section)&#039;,&lt;br /&gt;
			&#039;wikEdSign alt&#039;:               &#039;Signature&#039;,&lt;br /&gt;
			&#039;wikEdSign title&#039;:             &#039;Signature ~~~~ (shift-click: name only ~~~)&#039;,&lt;br /&gt;
&lt;br /&gt;
			// textify buttons&lt;br /&gt;
			&#039;wikEdWikify alt&#039;:             &#039;Wikify&#039;,&lt;br /&gt;
			&#039;wikEdWikify title&#039;:           &#039;Convert pasted content to wiki code, update highlighting&#039;,&lt;br /&gt;
			&#039;wikEdTextify alt&#039;:            &#039;Textify&#039;,&lt;br /&gt;
			&#039;wikEdTextify title&#039;:          &#039;Convert pasted content to plain text, update highlighting (shift-click: forced highlighting)&#039;,&lt;br /&gt;
			&#039;wikEdPastedWikify alt&#039;:       &#039;Wikify pasted&#039;,&lt;br /&gt;
			&#039;wikEdPastedWikify title&#039;:     &#039;Convert pasted content to wiki code&#039;,&lt;br /&gt;
			&#039;wikEdPastedTextify alt&#039;:      &#039;Textify pasted&#039;,&lt;br /&gt;
			&#039;wikEdPastedTextify title&#039;:    &#039;Convert pasted content to plain text&#039;,&lt;br /&gt;
			&#039;wikEdPastedClose alt&#039;:        &#039;x&#039;,&lt;br /&gt;
			&#039;wikEdPastedClose title&#039;:      &#039;Close&#039;,&lt;br /&gt;
&lt;br /&gt;
			// find and replace buttons, top row&lt;br /&gt;
			&#039;wikEdFindAll alt&#039;:            &#039;Find all&#039;,&lt;br /&gt;
			&#039;wikEdFindAll title&#039;:          &#039;Find all matches&#039;,&lt;br /&gt;
			&#039;wikEdFindPrev alt&#039;:           &#039;Find prev&#039;,&lt;br /&gt;
			&#039;wikEdFindPrev title&#039;:         &#039;Find previous match&#039;,&lt;br /&gt;
			&#039;wikEdFindSelect title&#039;:       &#039;Select a previous search or jump to a heading&#039;,&lt;br /&gt;
			&#039;wikEdFindNext alt&#039;:           &#039;Find next&#039;,&lt;br /&gt;
			&#039;wikEdFindNext title&#039;:         &#039;Find next match (shift-click: get selection)&#039;,&lt;br /&gt;
			&#039;wikEdJumpPrev alt&#039;:           &#039;Selected prev&#039;,&lt;br /&gt;
			&#039;wikEdJumpPrev title&#039;:         &#039;Find the selected text backwards&#039;,&lt;br /&gt;
			&#039;wikEdJumpNext alt&#039;:           &#039;Selected next&#039;,&lt;br /&gt;
			&#039;wikEdJumpNext title&#039;:         &#039;Find the selected text forwards&#039;,&lt;br /&gt;
&lt;br /&gt;
			// find and replace buttons, bottom row&lt;br /&gt;
			&#039;wikEdReplaceAll alt&#039;:         &#039;Replace all&#039;,&lt;br /&gt;
			&#039;wikEdReplaceAll title&#039;:       &#039;Replace all matches in whole text or selection&#039;,&lt;br /&gt;
			&#039;wikEdReplacePrev alt&#039;:        &#039;Replace prev&#039;,&lt;br /&gt;
			&#039;wikEdReplacePrev title&#039;:      &#039;Replace previous match&#039;,&lt;br /&gt;
			&#039;wikEdReplaceSelect title&#039;:    &#039;Select a previous replacement&#039;,&lt;br /&gt;
			&#039;wikEdReplaceNext alt&#039;:        &#039;Replace next (shift-click: get selection)&#039;,&lt;br /&gt;
			&#039;wikEdReplaceNext title&#039;:      &#039;Replace next match&#039;,&lt;br /&gt;
			&#039;wikEdCaseSensitive alt&#039;:      &#039;Case sensitive&#039;,&lt;br /&gt;
			&#039;wikEdCaseSensitive title&#039;:    &#039;Search is case sensitive&#039;,&lt;br /&gt;
			&#039;wikEdRegExp alt&#039;:             &#039;RegExp&#039;,&lt;br /&gt;
			&#039;wikEdRegExp title&#039;:           &#039;Search field is a regular expression&#039;,&lt;br /&gt;
			&#039;wikEdFindAhead alt&#039;:          &#039;Find ahead&#039;,&lt;br /&gt;
			&#039;wikEdFindAhead title&#039;:        &#039;Find ahead as you type (case-insensitive non-regexp search)&#039;,&lt;br /&gt;
&lt;br /&gt;
			// fix buttons, top row&lt;br /&gt;
			&#039;wikEdFixBasic alt&#039;:           &#039;Fix basic&#039;,&lt;br /&gt;
			&#039;wikEdFixBasic title&#039;:         &#039;Fix blanks and empty lines, also done by other fixing functions&#039;,&lt;br /&gt;
			&#039;wikEdFixHtml alt&#039;:            &#039;Fix html&#039;,&lt;br /&gt;
			&#039;wikEdFixHtml title&#039;:          &#039;Fix html to wikicode&#039;,&lt;br /&gt;
			&#039;wikEdFixCaps alt&#039;:            &#039;Fix caps&#039;,&lt;br /&gt;
			&#039;wikEdFixCaps title&#039;:          &#039;Fix caps in headers and lists&#039;,&lt;br /&gt;
			&#039;wikEdFixUnicode alt&#039;:         &#039;Fix Unicode&#039;,&lt;br /&gt;
			&#039;wikEdFixUnicode title&#039;:       &#039;Fix Unicode character representations&#039;,&lt;br /&gt;
			&#039;wikEdFixAll alt&#039;:             &#039;Fix all&#039;,&lt;br /&gt;
			&#039;wikEdFixAll title&#039;:           &#039;Fix basic, html, capitalization, and Unicode&#039;,&lt;br /&gt;
			&#039;wikEdFixRedirect alt&#039;:        &#039;Fix redirects&#039;,&lt;br /&gt;
			&#039;wikEdFixRedirect title&#039;:      &#039;Fix redirects&#039;,&lt;br /&gt;
&lt;br /&gt;
			// fix buttons, bottom row&lt;br /&gt;
			&#039;wikEdFixDashes alt&#039;:          &#039;Fix dashes&#039;,&lt;br /&gt;
			&#039;wikEdFixDashes title&#039;:        &#039;Fix dashes&#039;,&lt;br /&gt;
			&#039;wikEdFixPunct alt&#039;:           &#039;Fix punctuation&#039;,&lt;br /&gt;
			&#039;wikEdFixPunct title&#039;:         &#039;Fix spaces before punctuation&#039;,&lt;br /&gt;
			&#039;wikEdFixMath alt&#039;:            &#039;Fix math&#039;,&lt;br /&gt;
			&#039;wikEdFixMath title&#039;:          &#039;Fix math&#039;,&lt;br /&gt;
			&#039;wikEdFixChem alt&#039;:            &#039;Fix chem&#039;,&lt;br /&gt;
			&#039;wikEdFixChem title&#039;:          &#039;Fix chemical formulas&#039;,&lt;br /&gt;
			&#039;wikEdFixUnits alt&#039;:           &#039;Fix units&#039;,&lt;br /&gt;
			&#039;wikEdFixUnits title&#039;:         &#039;Fix units&#039;,&lt;br /&gt;
			&#039;wikEdFixRegExTypo alt&#039;:       &#039;Fix typos&#039;,&lt;br /&gt;
			&#039;wikEdFixRegExTypo title&#039;:     &#039;Fix typos using the AutoWikiBrowser RegExTypoFixer rules&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wikEd control buttons, top row&lt;br /&gt;
			&#039;wikEdRefHide alt&#039;:            &#039;[REF, TEMPL]&#039;,&lt;br /&gt;
			&#039;wikEdRefHide title&#039;:          &#039;Simple view: hide refs, templates, and table code&#039;,&lt;br /&gt;
			&#039;wikEdRefButtonTooltip&#039;:       &#039;Click to display hidden reference&#039;,&lt;br /&gt;
			&#039;wikEdTemplButtonTooltip&#039;:     &#039;Click to display hidden template&#039;,&lt;br /&gt;
			&#039;wikEdCharEntityButtonTooltip&#039;: &#039;Click to display hidden character entity&#039;,&lt;br /&gt;
			&#039;wikEdTableButtonTooltip&#039;:     &#039;Click to display hidden table code&#039;,&lt;br /&gt;
			&#039;wikEdRefButtonShowTooltip&#039;:   &#039;Click to hide reference&#039;,&lt;br /&gt;
			&#039;wikEdTemplButtonShowTooltip&#039;: &#039;Click to hide template&#039;,&lt;br /&gt;
			&#039;wikEdCharEntityButtonShowTooltip&#039;: &#039;Click to hide character entity&#039;,&lt;br /&gt;
			&#039;wikEdTableButtonShowTooltip&#039;: &#039;Click to hide table code&#039;,&lt;br /&gt;
			&#039;wikEdTextZoom alt&#039;:           &#039;Text zoom&#039;,&lt;br /&gt;
			&#039;wikEdTextZoom title&#039;:         &#039;Text zoom cycling (shift-click: reverse)&#039;,&lt;br /&gt;
			&#039;wikEdClearHistory alt&#039;:       &#039;Clear history&#039;,&lt;br /&gt;
			&#039;wikEdClearHistory title&#039;:     &#039;Clear the find, replace, and summary history&#039;,&lt;br /&gt;
			&#039;wikEdScrollToPreview alt&#039;:    &#039;Scroll to preview&#039;,&lt;br /&gt;
			&#039;wikEdScrollToPreview title&#039;:  &#039;Scroll to preview field&#039;,&lt;br /&gt;
			&#039;wikEdScrollToEdit alt&#039;:       &#039;Scroll to edit&#039;,&lt;br /&gt;
			&#039;wikEdScrollToEdit title&#039;:     &#039;Scroll to edit field&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wikEd control buttons, bottom row&lt;br /&gt;
			&#039;wikEdUseWikEd alt&#039;:           &#039;Use wikEd&#039;,&lt;br /&gt;
			&#039;wikEdUseWikEd title&#039;:         &#039;Use wikEd instead of classic text area&#039;,&lt;br /&gt;
			&#039;wikEdHighlightSyntax alt&#039;:    &#039;Syntax&#039;,&lt;br /&gt;
			&#039;wikEdHighlightSyntax title&#039;:  &#039;Syntax highlighting&#039;,&lt;br /&gt;
			&#039;wikEdSource alt&#039;:             &#039;Source&#039;,&lt;br /&gt;
			&#039;wikEdCloseToolbar title&#039;:     &#039;Close the standard non-wikEd toolbar&#039;,&lt;br /&gt;
			&#039;wikEdCloseToolbar alt&#039;:       &#039;Close toolbar&#039;,&lt;br /&gt;
			&#039;wikEdSource title&#039;:           &#039;Show the source code for testing&#039;,&lt;br /&gt;
			&#039;wikEdUsing alt&#039;:              &#039;Using&#039;,&lt;br /&gt;
			&#039;wikEdUsing title&#039;:            &#039;Automatically add \&#039;\&#039;…using wikEd\&#039;\&#039; to summaries&#039;,&lt;br /&gt;
			&#039;wikEdFullScreen alt&#039;:         &#039;Fullscreen&#039;,&lt;br /&gt;
			&#039;wikEdFullScreen title&#039;:       &#039;Fullscreen mode&#039;,&lt;br /&gt;
			&#039;wikEdTableMode alt&#039;:          &#039;Table as tables&#039;,&lt;br /&gt;
			&#039;wikEdTableMode title&#039;:        &#039;Edit tables as tables&#039;,&lt;br /&gt;
&lt;br /&gt;
			// summary buttons&lt;br /&gt;
			&#039;wikEdClearSummary alt&#039;:       &#039;Clear summary&#039;,&lt;br /&gt;
			&#039;wikEdClearSummary title&#039;:     &#039;Clear the summary field&#039;,&lt;br /&gt;
			&#039;wikEdSummarySelect title&#039;:    &#039;Select a previous summary&#039;,&lt;br /&gt;
			&#039;wikEdPresetSummary&#039;: [&lt;br /&gt;
				&#039;/*  */ &#039;, &#039;copyedit&#039;, &#039;reply&#039;, &#039;article created&#039;, &#039;intro rewrite&#039;,&lt;br /&gt;
				&#039;linkfix&#039;, &#039;fixing typos&#039;, &#039;removing linkspam&#039;, &#039;reverting test&#039;,&lt;br /&gt;
				&#039;reverting vandalism&#039;, &#039;formatting source text&#039;, &#039;{wikEdUsing}&#039;&lt;br /&gt;
			],&lt;br /&gt;
			&#039;wikEdSummaryUsing&#039;:           &#039;…using [[en:User:Cacycle/wikEd|wikEd]]&#039;,&lt;br /&gt;
&lt;br /&gt;
			// toolbar&lt;br /&gt;
			&#039;wikEdCodeEditorButtonDisabled&#039;: &#039; (disabled by wikEd)&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button title acceskey&lt;br /&gt;
			&#039;alt-shift&#039;:                   &#039;alt-shift-&#039;,&lt;br /&gt;
&lt;br /&gt;
			// submit buttons&lt;br /&gt;
			&#039;wikEdLocalPreviewImg alt&#039;:    &#039;Preview below&#039;,&lt;br /&gt;
			&#039;wikEdLocalPreview title&#039;:     &#039;Show preview below&#039;,&lt;br /&gt;
			&#039;wikEdLocalDiffImg alt&#039;:       &#039;Changes below&#039;,&lt;br /&gt;
			&#039;wikEdLocalDiff title&#039;:        &#039;Show current changes below&#039;,&lt;br /&gt;
			&#039;wikEdHelpPageLink&#039;:           &#039; | &amp;lt;a href=&amp;quot;{wikEdHomeBaseUrl}wiki/User:Cacycle/wikEd_help&amp;quot; target=&amp;quot;helpwindow&amp;quot;&amp;gt;wikEd help&amp;lt;/a&amp;gt;&#039;, // use full link without {wikEdHomeBaseUrl} if the page is not on the English Wikipedia&lt;br /&gt;
&lt;br /&gt;
			// preview and changes buttons, top&lt;br /&gt;
			&#039;wikEdClose alt&#039;:              &#039;Close&#039;,&lt;br /&gt;
			&#039;wikEdClose title&#039;:            &#039;Close preview box&#039;,&lt;br /&gt;
			&#039;wikEdClose2 alt&#039;:             &#039;Close&#039;,&lt;br /&gt;
			&#039;wikEdClose2 title&#039;:           &#039;Close preview box&#039;,&lt;br /&gt;
			&#039;wikEdScrollToPreview2 alt&#039;:   &#039;Scroll to preview&#039;,&lt;br /&gt;
			&#039;wikEdScrollToPreview2 title&#039;: &#039;Scroll to preview field&#039;,&lt;br /&gt;
			&#039;wikEdScrollToEdit2 alt&#039;:      &#039;Scroll to edit&#039;,&lt;br /&gt;
			&#039;wikEdScrollToEdit2 title&#039;:    &#039;Scroll to edit field&#039;,&lt;br /&gt;
&lt;br /&gt;
			// preview and changes buttons, bottom&lt;br /&gt;
			&#039;wikEdScrollToPreview3 alt&#039;:   &#039;Scroll to preview&#039;,&lt;br /&gt;
			&#039;wikEdScrollToPreview3 title&#039;: &#039;Scroll to preview field&#039;,&lt;br /&gt;
			&#039;wikEdScrollToEdit3 alt&#039;:      &#039;Scroll to edit&#039;,&lt;br /&gt;
			&#039;wikEdScrollToEdit3 title&#039;:    &#039;Scroll to edit field&#039;,&lt;br /&gt;
&lt;br /&gt;
			// preview field&lt;br /&gt;
			&#039;wikEdPreviewLoading&#039;:         &#039;...&#039;,&lt;br /&gt;
			&#039;diffNotLoaded&#039;:               &#039;Error: Local diff script not installed.&#039;,&lt;br /&gt;
&lt;br /&gt;
			// formatting functions&lt;br /&gt;
			&#039;image filename&#039;:              &#039;filename&#039;,&lt;br /&gt;
			&#039;image width&#039;:                 &#039;width&#039;,&lt;br /&gt;
			&#039;table caption&#039;:               &#039;caption&#039;,&lt;br /&gt;
			&#039;table heading&#039;:               &#039;heading&#039;,&lt;br /&gt;
			&#039;table cell&#039;:                  &#039;cell&#039;,&lt;br /&gt;
			&#039;redirect article link&#039;:       &#039;article link&#039;,&lt;br /&gt;
&lt;br /&gt;
			// fixing functions&lt;br /&gt;
			&#039;External links&#039;:              &#039;External links&#039;,&lt;br /&gt;
			&#039;See also&#039;:                    &#039;See also&#039;,&lt;br /&gt;
			&#039;References&#039;:                  &#039;References&#039;,&lt;br /&gt;
&lt;br /&gt;
			// language specific wiki code&lt;br /&gt;
			&#039;wikicode Image&#039;:              &#039;Image&#039;,&lt;br /&gt;
			&#039;wikicode File&#039;:               &#039;File&#039;,&lt;br /&gt;
			&#039;wikicode Media&#039;:              &#039;Media&#039;,&lt;br /&gt;
			&#039;wikicode Category&#039;:           &#039;Category&#039;,&lt;br /&gt;
			&#039;wikicode Template&#039;:           &#039;Template&#039;,&lt;br /&gt;
			&#039;wikEdReferencesSection&#039;:      &#039;\n== References ==\n\n&amp;lt;references /&amp;gt;\n&#039;,&lt;br /&gt;
			&#039;talk page&#039;:                   &#039;talk&#039;,&lt;br /&gt;
			&#039;history page&#039;:                &#039;history&#039;,&lt;br /&gt;
			&#039;talk namespace&#039;:              &#039;Talk&#039;,&lt;br /&gt;
			&#039;talk namespace suffix&#039;:       &#039;$1_talk&#039;, // &#039;$1_talk&#039;, &#039;_talk&#039;, or &#039;talk_&#039;&lt;br /&gt;
&lt;br /&gt;
			// hiding buttons, type&lt;br /&gt;
			&#039;hideRef&#039;:                     &#039;REF&#039;,&lt;br /&gt;
			&#039;hideTempl&#039;:                   &#039;TEMPL&#039;,&lt;br /&gt;
			&#039;hideTable&#039;:                   &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// hiding buttons, details&lt;br /&gt;
			&#039;hideTableStart&#039;:              &#039;Table&#039;,&lt;br /&gt;
			&#039;hideTableEnd&#039;:                &#039;Table end&#039;,&lt;br /&gt;
			&#039;hideTableCaption&#039;:            &#039;Caption&#039;,&lt;br /&gt;
			&#039;hideTableRow&#039;:                &#039;Row&#039;,&lt;br /&gt;
			&#039;hideTableHeader&#039;:             &#039;Header&#039;,&lt;br /&gt;
			&#039;hideTableCell&#039;:               &#039;Cell&#039;,&lt;br /&gt;
&lt;br /&gt;
			// shortened button texts&lt;br /&gt;
			&#039;shortenedPreview&#039;:            &#039;Preview&#039;,&lt;br /&gt;
			&#039;shortenedChanges&#039;:            &#039;Changes&#039;,&lt;br /&gt;
&lt;br /&gt;
			// link popup&lt;br /&gt;
			&#039;followLink&#039;:                  &#039;(ctrl-click)&#039;,&lt;br /&gt;
			&#039;followLinkMac&#039;:               &#039;(cmd-click)&#039;,&lt;br /&gt;
			&#039;redirect&#039;:                    &#039;, redirect to:&#039;,&lt;br /&gt;
			&#039;redlink&#039;:                     &#039; (page does not exist)&#039;,&lt;br /&gt;
&lt;br /&gt;
			// auto updating&lt;br /&gt;
			&#039;wikEdGreasemonkeyAutoUpdate&#039;: &#039;wikEd Update:\n\nA new version of the Greasemonkey script &amp;quot;wikEd&amp;quot; is available.\n\n\nIt will be installed from:\n\n{updateURL}&#039;,&lt;br /&gt;
			&#039;wikEdGreasemonkeyAutoUpdateBugfix&#039;: &#039;Important wikEd Bugfix:\n\nA bugfix for the Greasemonkey script &amp;quot;wikEd&amp;quot; is available.\n\n\nIt will be installed from:\n\n{updateURL}&#039;,&lt;br /&gt;
&lt;br /&gt;
			// highlighting popups&lt;br /&gt;
			&#039;hyphenDash&#039;:                  &#039;Standard hyphen&#039;,&lt;br /&gt;
			&#039;figureDash&#039;:                  &#039;Figure dash&#039;,&lt;br /&gt;
			&#039;enDash&#039;:                      &#039;En dash&#039;,&lt;br /&gt;
			&#039;emDash&#039;:                      &#039;Em dash&#039;,&lt;br /&gt;
			&#039;barDash&#039;:                     &#039;Horizontal bar&#039;,&lt;br /&gt;
			&#039;minusDash&#039;:                   &#039;Minus sign&#039;,&lt;br /&gt;
			&#039;softHyphen&#039;:                  &#039;Soft hyphen&#039;,&lt;br /&gt;
			&#039;tab&#039;:                         &#039;Tab&#039;,&lt;br /&gt;
			&#039;enSpace&#039;:                     &#039;En space&#039;,&lt;br /&gt;
			&#039;emSpace&#039;:                     &#039;Em space&#039;,&lt;br /&gt;
			&#039;thinSpace&#039;:                   &#039;Thin space&#039;,&lt;br /&gt;
			&#039;ideographicSpace&#039;:            &#039;Ideographic space&#039;,&lt;br /&gt;
&lt;br /&gt;
			// highlighting&lt;br /&gt;
			&#039;wikEdSignature3&#039;:             &#039;Sign with username only&#039;,&lt;br /&gt;
			&#039;wikEdSignature4&#039;:             &#039;Sign with user name and date&#039;,&lt;br /&gt;
			&#039;wikEdSignature5&#039;:             &#039;Sign with date only&#039;,&lt;br /&gt;
&lt;br /&gt;
			// highlighting errors&lt;br /&gt;
			&#039;wikEdErrorHtmlUnknown&#039;:       &#039;Unsupported HTML tag&#039;,&lt;br /&gt;
			&#039;wikEdErrorBoldItalic&#039;:        &#039;Invalid bold / italic&#039;,&lt;br /&gt;
			&#039;wikEdErrorWrongClose&#039;:        &#039;Close tag does not match&#039;,&lt;br /&gt;
			&#039;wikEdErrorNoOpen&#039;:            &#039;Close tag has no match&#039;,&lt;br /&gt;
			&#039;wikEdErrorNoHandler&#039;:         &#039;No handler&#039;,&lt;br /&gt;
			&#039;wikEdErrorNoClose&#039;:           &#039;Open tag has no match&#039;,&lt;br /&gt;
			&#039;wikEdErrorNewline&#039;:           &#039;Open tag closed by new line&#039;,&lt;br /&gt;
			&#039;wikEdErrorTemplHeading&#039;:      &#039;Headings in templates are ignored&#039;,&lt;br /&gt;
			&#039;wikEdErrorTemplParam&#039;:        &#039;Template/parameter tags do not match&#039;,&lt;br /&gt;
			&#039;wikEdErrorTemplParamAmbig&#039;:   &#039;Template/parameter tags are ambiguous&#039;,&lt;br /&gt;
			&#039;wikEdErrorCodeInLinkName&#039;:    &#039;Wikicode in link name&#039;,&lt;br /&gt;
			&#039;wikEdErrorCodeInTemplName&#039;:   &#039;Wikicode in template name&#039;,&lt;br /&gt;
			&#039;wikEdErrorCodeInParamName&#039;:   &#039;Wikicode in template parameter name&#039;,&lt;br /&gt;
&lt;br /&gt;
			// highlighting image preview&lt;br /&gt;
			&#039;wikEdFilePreview&#039;:            &#039;Image preview&#039;,&lt;br /&gt;
&lt;br /&gt;
			// location search string functions&lt;br /&gt;
			&#039;iconPage&#039;:                    &#039;All icons and images used by wikEd. Save page as &amp;lt;i&amp;gt;web page, complete&amp;lt;/i&amp;gt; to download all files into one folder.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// duplicated message&lt;br /&gt;
			&#039;clonedWarningsNote&#039;:          &#039;Duplicated edit warnings (wikEd):&#039;&lt;br /&gt;
&lt;br /&gt;
		}, wikEd.config.showMissingTranslations);&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// define built-in user interface texts&lt;br /&gt;
	wikEd.InitText();&lt;br /&gt;
&lt;br /&gt;
	// use local copies of images for testing (set to true in local copy of edit page), also defined in wikEdDiff.js&lt;br /&gt;
	if (wikEd.config.useLocalImages === undefined) { wikEd.config.useLocalImages = false; }&lt;br /&gt;
&lt;br /&gt;
	// path to local wikEd images for testing, also defined in wikEdDiff.js&lt;br /&gt;
	if (wikEd.config.imagePathLocal === undefined) { wikEd.config.imagePathLocal = &#039;file:///D:/wikEd/images/&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// path to wikEd images, also defined in wikEdDiff.js&lt;br /&gt;
	if (wikEd.config.imagePath === undefined) { wikEd.config.imagePath = &#039;//upload.wikimedia.org/wikipedia/commons/&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd image filenames, also defined in wikEdDiff.js&lt;br /&gt;
	if (wikEd.config.image === undefined) { wikEd.config.image = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitImages: define built-in image URLs&lt;br /&gt;
	wikEd.InitImages = function () {&lt;br /&gt;
&lt;br /&gt;
		wikEd.InitImage(wikEd.config.image, {&lt;br /&gt;
			&#039;barDash&#039;:             &#039;5/52/WikEd_bar_dash.png&#039;,&lt;br /&gt;
			&#039;bold&#039;:                &#039;5/59/WikEd_bold.png&#039;,&lt;br /&gt;
			&#039;browser&#039;:             &#039;0/07/WikEd_disabled.png&#039;,&lt;br /&gt;
			&#039;bulletList&#039;:          &#039;6/62/WikEd_bullet_list.png&#039;,&lt;br /&gt;
			&#039;case&#039;:                &#039;a/aa/WikEd_case.png&#039;,&lt;br /&gt;
			&#039;caseSensitive&#039;:       &#039;0/0d/WikEd_case_sensitive.png&#039;,&lt;br /&gt;
			&#039;clearHistory&#039;:        &#039;c/c8/WikEd_clear_history.png&#039;,&lt;br /&gt;
			&#039;clearSummary&#039;:        &#039;2/2c/WikEd_clear_summary.png&#039;,&lt;br /&gt;
			&#039;close&#039;:               &#039;9/97/WikEd_close.png&#039;,&lt;br /&gt;
			&#039;closePasted&#039;:         &#039;b/bc/WikEd_close_pasted.png&#039;,&lt;br /&gt;
			&#039;closeToolbar&#039;:        &#039;1/1d/WikEd_close_toolbar.png&#039;,&lt;br /&gt;
			&#039;ctrl&#039;:                &#039;1/10/WikEd_ctrl.png&#039;,&lt;br /&gt;
			&#039;definitionList&#039;:      &#039;f/f5/WikEd_definition_list.png&#039;,&lt;br /&gt;
			&#039;diff&#039;:                &#039;d/db/WikEd_diff.png&#039;,&lt;br /&gt;
			&#039;disabled&#039;:            &#039;0/07/WikEd_disabled.png&#039;,&lt;br /&gt;
			&#039;dummy&#039;:               &#039;c/c5/WikEd_dummy.png&#039;,&lt;br /&gt;
			&#039;emDash&#039;:              &#039;5/58/WikEd_em_dash.png&#039;,&lt;br /&gt;
			&#039;emSpace&#039;:             &#039;3/3a/WikEd_em_space.png&#039;,&lt;br /&gt;
			&#039;enDash&#039;:              &#039;f/fc/WikEd_en_dash.png&#039;,&lt;br /&gt;
			&#039;enSpace&#039;:             &#039;0/04/WikEd_en_space.png&#039;,&lt;br /&gt;
			&#039;error&#039;:               &#039;3/3e/WikEd_error.png&#039;,&lt;br /&gt;
			&#039;figureDash&#039;:          &#039;2/25/WikEd_figure_dash.png&#039;,&lt;br /&gt;
			&#039;findAhead&#039;:           &#039;3/34/WikEd_find_ahead.png&#039;,&lt;br /&gt;
			&#039;findAll&#039;:             &#039;7/75/WikEd_find_all.png&#039;,&lt;br /&gt;
			&#039;findNext&#039;:            &#039;a/ad/WikEd_find_next.png&#039;,&lt;br /&gt;
			&#039;findPrev&#039;:            &#039;f/f5/WikEd_find_prev.png&#039;,&lt;br /&gt;
			&#039;fixAll&#039;:              &#039;8/86/WikEd_fix_all.png&#039;,&lt;br /&gt;
			&#039;fixBasic&#039;:            &#039;3/30/WikEd_fix_basic.png&#039;,&lt;br /&gt;
			&#039;fixCaps&#039;:             &#039;0/00/WikEd_fix_caps.png&#039;,&lt;br /&gt;
			&#039;fixUnicode&#039;:          &#039;d/d4/WikEd_fix_unicode.png&#039;,&lt;br /&gt;
			&#039;fixRedirect&#039;:         &#039;f/f8/WikEd_fix_redirect.png&#039;,&lt;br /&gt;
			&#039;fixChem&#039;:             &#039;e/e7/WikEd_fix_chem.png&#039;,&lt;br /&gt;
			&#039;fixDash&#039;:             &#039;e/e5/WikEd_fix_dash.png&#039;,&lt;br /&gt;
			&#039;fixHtml&#039;:             &#039;0/05/WikEd_fix_html.png&#039;,&lt;br /&gt;
			&#039;fixMath&#039;:             &#039;3/3f/WikEd_fix_math.png&#039;,&lt;br /&gt;
			&#039;fixPunct&#039;:            &#039;d/db/WikEd_fix_punct.png&#039;,&lt;br /&gt;
			&#039;fixRegExTypo&#039;:        &#039;9/94/WikEd_fix_reg-ex-typo.png&#039;,&lt;br /&gt;
			&#039;fixUnits&#039;:            &#039;6/69/WikEd_fix_units.png&#039;,&lt;br /&gt;
			&#039;textZoom&#039;:            &#039;7/71/WikEd_font_size.png&#039;,&lt;br /&gt;
			&#039;fullScreen&#039;:          &#039;d/d3/WikEd_fullscreen.png&#039;,&lt;br /&gt;
			&#039;getFind&#039;:             &#039;9/96/WikEd_get_selection.png&#039;,&lt;br /&gt;
			&#039;grip&#039;:                &#039;a/ad/WikEd_grip.png&#039;,&lt;br /&gt;
			&#039;gripHidden&#039;:          &#039;a/a8/WikEd_grip_hidden.png&#039;,&lt;br /&gt;
			&#039;heading&#039;:             &#039;0/07/WikEd_heading.png&#039;,&lt;br /&gt;
			&#039;highlightSyntax&#039;:     &#039;6/67/WikEd_syntax.png&#039;,&lt;br /&gt;
			&#039;ideographicSpace&#039;:    &#039;c/c6/WikEd_ideographic_space.png&#039;,&lt;br /&gt;
			&#039;image&#039;:               &#039;3/37/WikEd_image.png&#039;,&lt;br /&gt;
			&#039;incompatible&#039;:        &#039;3/3e/WikEd_error.png&#039;,&lt;br /&gt;
			&#039;indentList&#039;:          &#039;7/7a/WikEd_indent_list.png&#039;,&lt;br /&gt;
			&#039;italic&#039;:              &#039;d/d4/WikEd_italic.png&#039;,&lt;br /&gt;
			&#039;jumpNext&#039;:            &#039;5/54/WikEd_jump_next.png&#039;,&lt;br /&gt;
			&#039;logo&#039;:                &#039;6/67/WikEd_logo.png&#039;,&lt;br /&gt;
			&#039;minusDash&#039;:           &#039;b/ba/WikEd_minus_dash.png&#039;,&lt;br /&gt;
			&#039;noFile&#039;:              &#039;8/88/WikEd_no_file.png&#039;,&lt;br /&gt;
			&#039;nowiki&#039;:              &#039;5/5a/WikEd_nowiki.png&#039;,&lt;br /&gt;
			&#039;numberList&#039;:          &#039;3/3b/WikEd_number_list.png&#039;,&lt;br /&gt;
			&#039;jumpPrev&#039;:            &#039;c/c7/WikEd_jump_prev.png&#039;,&lt;br /&gt;
			&#039;preview&#039;:             &#039;3/31/WikEd_preview.png&#039;,&lt;br /&gt;
			&#039;redirect&#039;:            &#039;f/fa/WikEd_redirect.png&#039;,&lt;br /&gt;
			&#039;redo&#039;:                &#039;d/d7/WikEd_redo.png&#039;,&lt;br /&gt;
			&#039;ref&#039;:                 &#039;b/ba/WikEd_ref.png&#039;,&lt;br /&gt;
			&#039;refHide&#039;:             &#039;0/0b/WikEd_ref_hide.png&#039;,&lt;br /&gt;
			&#039;references&#039;:          &#039;6/66/WikEd_references.png&#039;,&lt;br /&gt;
			&#039;sign&#039;:                &#039;d/d5/WikEd_sign.png&#039;,&lt;br /&gt;
			&#039;redoAll&#039;:             &#039;2/2d/WikEd_redo_all.png&#039;,&lt;br /&gt;
			&#039;resizeGrip&#039;:          &#039;e/e1/WikEd_resize_grip.png&#039;,&lt;br /&gt;
			&#039;regExp&#039;:              &#039;6/6a/WikEd_regexp.png&#039;,&lt;br /&gt;
			&#039;replaceAll&#039;:          &#039;2/2a/WikEd_replace_all.png&#039;,&lt;br /&gt;
			&#039;replaceNext&#039;:         &#039;b/b0/WikEd_replace_next.png&#039;,&lt;br /&gt;
			&#039;replacePrev&#039;:         &#039;a/a1/WikEd_replace_prev.png&#039;,&lt;br /&gt;
			&#039;scrollToEdit&#039;:        &#039;1/13/WikEd_align_top.png&#039;,&lt;br /&gt;
			&#039;scrollToPreview&#039;:     &#039;3/37/WikEd_align_preview.png&#039;,&lt;br /&gt;
			&#039;scrollToEditDown&#039;:    &#039;a/a8/WikEd_align_down.png&#039;,&lt;br /&gt;
			&#039;scrollToPreviewDown&#039;: &#039;5/58/WikEd_align_preview_down.png&#039;,&lt;br /&gt;
			&#039;softHyphen&#039;:          &#039;c/c7/WikEd_soft_hyphen.png&#039;,&lt;br /&gt;
			&#039;sort&#039;:                &#039;7/7c/WikEd_sort.png&#039;,&lt;br /&gt;
			&#039;source&#039;:              &#039;0/02/WikEd_source.png&#039;,&lt;br /&gt;
			&#039;strikethrough&#039;:       &#039;0/06/WikEd_strikethrough.png&#039;,&lt;br /&gt;
			&#039;subscript&#039;:           &#039;9/9e/WikEd_subscript.png&#039;,&lt;br /&gt;
			&#039;superscript&#039;:         &#039;b/bf/WikEd_superscript.png&#039;,&lt;br /&gt;
			&#039;tab&#039;:                 &#039;e/e7/WikEd_tab.png&#039;,&lt;br /&gt;
			&#039;table&#039;:               &#039;b/bd/WikEd_table.png&#039;,&lt;br /&gt;
			&#039;tableMode&#039;:           &#039;e/ee/WikEd_table_edit.png&#039;,&lt;br /&gt;
			&#039;testVersion&#039;:         &#039;3/3e/WikEd_error.png&#039;,&lt;br /&gt;
			&#039;textify&#039;:             &#039;c/cd/WikEd_textify.png&#039;,&lt;br /&gt;
			&#039;thinSpace&#039;:           &#039;5/56/WikEd_thin_space.png&#039;,&lt;br /&gt;
			&#039;underline&#039;:           &#039;2/21/WikEd_underline.png&#039;,&lt;br /&gt;
			&#039;undo&#039;:                &#039;e/e6/WikEd_undo.png&#039;,&lt;br /&gt;
			&#039;undoAll&#039;:             &#039;0/08/WikEd_undo_all.png&#039;,&lt;br /&gt;
			&#039;unknown&#039;:             &#039;8/8a/WikEd_unknown.png&#039;,&lt;br /&gt;
			&#039;useWikEd&#039;:            &#039;6/67/WikEd_logo.png&#039;,&lt;br /&gt;
			&#039;using&#039;:               &#039;e/e0/WikEd_using.png&#039;,&lt;br /&gt;
			&#039;webLink&#039;:             &#039;1/16/WikEd_weblink.png&#039;,&lt;br /&gt;
			&#039;wikify&#039;:              &#039;9/9f/WikEd_wikify.png&#039;,&lt;br /&gt;
			&#039;wikiLink&#039;:            &#039;2/21/WikEd_wikilink.png&#039;&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// edit-frame css rules&lt;br /&gt;
	if (wikEd.config.frameCSS === undefined) { wikEd.config.frameCSS = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitFrameCSS: define built-in edit frame css&lt;br /&gt;
	wikEd.InitFrameCSS = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.frameCSS, {&lt;br /&gt;
&lt;br /&gt;
			// frame&lt;br /&gt;
			&#039;.wikEdFrameHtml&#039;:      &#039;height: 100%; width: 100%; padding: 0; margin: 0; background: transparent; background-image: url({wikEdImage:resizeGrip}); background-attachment: fixed; background-position: right bottom; background-repeat: no-repeat; line-height: normal;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyPlain&#039;: &#039;height: auto; min-height: 100%; width: auto; background: transparent; margin: 0; padding: 0; padding-left: 0.25em; overflow: auto; font-family: monospace;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax&#039;: &#039;height: auto; min-height: 100%; width: auto; background: transparent; margin: 0; padding: 0; padding-left: 0.25em; overflow: auto; font-family: monospace;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie&#039;: &#039;height: auto; min-height: 100%; width: auto; background: transparent; margin: 0; padding: 0; padding-left: 0.25em; overflow: auto; font-family: monospace;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// reselection / scroll to selection&lt;br /&gt;
			&#039;.wikEdScrollLineHeight&#039;: &#039;position: absolute;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// syntax highlighting&lt;br /&gt;
			&#039;.wikEdError&#039;:          &#039;background-image: url({wikEdImage:unknown}); color: black; font-weight: normal; font-style: normal; text-decoration: none;&#039;,&lt;br /&gt;
			&#039;.wikEdHighlightError&#039;: &#039;color: black; background: #faa;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdHtml&#039;:           &#039;background: #e8e8e8;&#039;,&lt;br /&gt;
			&#039;.wikEdHtmlTag&#039;:        &#039;color: #777;&#039;,&lt;br /&gt;
			&#039;.wikEdHtmlTagButtons&#039;: &#039;color: #777;&#039;,&lt;br /&gt;
			&#039;.wikEdHtmlUnknown&#039;:    &#039;background-image: url({wikEdImage:unknown}); color: black; font-weight: normal; font-style: normal;&#039;,&lt;br /&gt;
			&#039;.wikEdParsingNote&#039;:    &#039;border: 1px outset #fcc; padding: 0 0.5em 0 0.5em; margin: 0 0.25em 0 0.25em;  color: black; background: #fcc; font-weight: normal; font-size: smaller; font-style: normal; text-decoration: none; font-family: sans-serif;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdSubscript&#039;:      &#039;position: relative; top: 0.3em;&#039;,&lt;br /&gt;
			&#039;.wikEdSuperscript&#039;:    &#039;position: relative; top: -0.3em;&#039;,&lt;br /&gt;
			&#039;.wikEdBold&#039;:           &#039;font-weight: bold;&#039;,&lt;br /&gt;
			&#039;.wikEdItalic&#039;:         &#039;font-style: italic;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdComment&#039;:        &#039;background: #fff0d0; color: black; font-weight: normal; font-style: normal; text-decoration: none;&#039;,&lt;br /&gt;
			&#039;.wikEdKeep&#039;:           &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdDel&#039;:            &#039;text-decoration: line-through;&#039;,&lt;br /&gt;
			&#039;.wikEdIns&#039;:            &#039;text-decoration: underline;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdPre&#039;:            &#039;background: #f8e8e0;&#039;,&lt;br /&gt;
			&#039;.wikEdMath&#039;:           &#039;background: #e8f0ff;&#039;,&lt;br /&gt;
			&#039;.wikEdScore&#039;:          &#039;background: #fff8e0;&#039;,&lt;br /&gt;
			&#039;.wikEdNowiki&#039;:         &#039;background: #f8e8e8;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// horizontal rule&lt;br /&gt;
			&#039;.wikEdHr&#039;:             &#039;background: #666; color: #ffffff;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wiki code&lt;br /&gt;
			&#039;.wikEdWiki&#039;:           &#039;color: #777;&#039;,&lt;br /&gt;
			&#039;.wikEdRedir&#039;:          &#039;color: #c00; font-weight: bold;&#039;,&lt;br /&gt;
			&#039;.wikEdSignature&#039;:      &#039;color: #f00; font-weight: bold;&#039;,&lt;br /&gt;
			&#039;.wikEdMagic&#039;:          &#039;color: #666; font-weight: bold; background: #e8e8e8;&#039;,&lt;br /&gt;
			&#039;.wikEdParserFunct&#039;:    &#039;color: #f00;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// headings&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdHeading&#039;:   &#039;color: #000; font-weight: bold;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdHeadingWP&#039;: &#039;color: #000; font-weight: bold; background: #e8e8e8;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdHeading&#039;:   &#039;color: #000; font-weight: bold; color: #000; background: #eee; padding: 0 0.25em; border: 1px solid #ddd; font-size: larger; line-height: 1.5;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdHeadingWP&#039;: &#039;color: #000; font-weight: bold; color: #000; background: #ddd; padding: 0 0.25em; border: 1px solid #ccc; font-size: larger; line-height: 1.5;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// tables&lt;br /&gt;
			&#039;.wikEdTableBlock&#039;:     &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdTableCode&#039;:      &#039;color: #888; background: #ccc;&#039;,&lt;br /&gt;
			&#039;.wikEdTableTag&#039;:       &#039;background: #ccc;&#039;,&lt;br /&gt;
			&#039;.wikEdTableCaption&#039;:   &#039;color: #000; background: #fff;&#039;,&lt;br /&gt;
			&#039;.wikEdTableRow&#039;:       &#039;color: #000; background: #ccc;&#039;,&lt;br /&gt;
			&#039;.wikEdTableHeader&#039;:    &#039;color: #000; background: #e8e8e8;&#039;,&lt;br /&gt;
			&#039;.wikEdTableCell&#039;:      &#039;color: #000; background: #f0f0f0;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableCode&#039;: &#039;color: #888; background: transparent;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableTag,     .wikEdFrameBodyNewbie .wikEdTableTagBR&#039;:     &#039;background: #d8d8d8;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableCaption, .wikEdFrameBodyNewbie .wikEdTableCaptionBR&#039;: &#039;color: #000; background: #fff;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableRow,     .wikEdFrameBodyNewbie .wikEdTableRowBR&#039;:     &#039;color: #000; background: #d8d8d8;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableHeader,  .wikEdFrameBodyNewbie .wikEdTableHeaderBR&#039;:  &#039;color: #000; background: #f2f2f2;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableCell,    .wikEdFrameBodyNewbie .wikEdTableCellBR&#039;:    &#039;color: #000; background: #fbfbfb;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;br.wikEdTableBR&#039;:      &#039;display: none;&#039;,&lt;br /&gt;
			&#039;.wikEdTableTagAttrib .wikEdTableCode, .wikEdTableCaptionAttrib .wikEdTableCode, .wikEdTableRowAttrib .wikEdTableCode, .wikEdTableHeaderAttrib .wikEdTableCode, .wikEdTableCellAttrib .wikEdTableCode&#039;:&lt;br /&gt;
					&#039;background: transparent;&#039;,&lt;br /&gt;
			&#039;.wikEdTableTagAttrib, .wikEdTableRowAttrib&#039;: &#039;color: #666;&#039;,&lt;br /&gt;
			&#039;.wikEdTableCaptionAttrib, .wikEdTableHeaderAttrib, .wikEdTableCellAttrib&#039;: &#039;color: #888;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;table.wikEdTableMode&#039;: &#039;border: 1px solid #aaa; background: #d8d8d8; color: #000; border-collapse: separate; border-spacing: 0.25em 2px; margin: 0.5em 0;&#039;,&lt;br /&gt;
			&#039;td.wikEdTableCaption, td.wikEdTableHeader, td.wikEdTableCell, td.wikEdTableCaptionBR, td.wikEdTableHeaderBR, td.wikEdTableCellBR&#039;: &#039;border: 1px solid #aaa;&#039;,&lt;br /&gt;
			&#039;td.wikEdTableTag, td.wikEdTableRow, td.wikEdTableTagBR, td.wikEdTableRowBR&#039;: &#039;border: none; border-spacing: 0;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// list&lt;br /&gt;
			&#039;.wikEdList&#039;:           &#039;color: #000; background: #e8e8e8;&#039;,&lt;br /&gt;
			&#039;.wikEdListTag&#039;:        &#039;font-weight: bold; font-family: monospace; vertical-align: text-bottom;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// space-pre&lt;br /&gt;
			&#039;.wikEdSpace&#039;:          &#039;color: #000; background: #e8e8e8;&#039;,&lt;br /&gt;
			&#039;.wikEdSpaceTag&#039;:       &#039;background: #e8e8e8;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// links&lt;br /&gt;
			&#039;.wikEdLinkTag&#039;:        &#039;color: #777;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wiki links&lt;br /&gt;
			&#039;.wikEdLink&#039;:           &#039;color: #00a;&#039;,&lt;br /&gt;
			&#039;.wikEdLinkCrossNs&#039;:    &#039;background: #ddd; color: #00a;&#039;,&lt;br /&gt;
			&#039;.wikEdLinkInter&#039;:      &#039;background: #ddd;&#039;,&lt;br /&gt;
			&#039;.wikEdLinkNs&#039;:         &#039;background: #ddd;&#039;,&lt;br /&gt;
			&#039;.wikEdLinkName&#039;:       &#039;font-weight: bold;&#039;,&lt;br /&gt;
			&#039;.wikEdLinkTarget&#039;:     &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdLinkText&#039;:       &#039;font-weight: bold;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdPMID&#039;:           &#039;color: #00e;&#039;,&lt;br /&gt;
			&#039;.wikEdISBN&#039;:           &#039;color: #00e;&#039;,&lt;br /&gt;
			&#039;.wikEdLinkInter span&#039;: &#039;font-weight: normal;&#039;,&lt;br /&gt;
			&#039;span.wikEdLinkText:hover&#039;: &#039;text-decoration: underline;&#039;,&lt;br /&gt;
			&#039;span.wikEdLinkName:hover&#039;: &#039;text-decoration: underline;&#039;,&lt;br /&gt;
			&#039;span.wikEdPMID:hover&#039;: &#039;text-decoration: underline;&#039;,&lt;br /&gt;
			&#039;span.wikEdISBN:hover&#039;: &#039;text-decoration: underline;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// external links&lt;br /&gt;
			&#039;.wikEdURL&#039;:            &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdURLName&#039;:        &#039;color: #00e; font-weight: bold;&#039;,&lt;br /&gt;
			&#039;.wikEdURLTarget&#039;:      &#039;color: #00e;&#039;,&lt;br /&gt;
			&#039;.wikEdURLText&#039;:        &#039;color: #00e; font-weight: bold;&#039;,&lt;br /&gt;
			&#039;span.wikEdURLName:hover&#039;: &#039;text-decoration: underline;&#039;,&lt;br /&gt;
			&#039;span.wikEdURLText:hover&#039;: &#039;text-decoration: underline;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// files&lt;br /&gt;
			&#039;.wikEdFile&#039;:           &#039;background: rgb(213, 255, 176); background: rgba(199, 255, 149, 0.75); color: #00e;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdFile&#039;:&lt;br /&gt;
					&#039;background: rgb(213, 255, 176); padding: 0.25em; margin-right: 0.25em; display: inline-block; border: 1px solid #082; margin: 1px;&#039;,&lt;br /&gt;
			&#039;.wikEdFileTag&#039;:        &#039;color: #444;&#039;,&lt;br /&gt;
			&#039;.wikEdFileName&#039;:       &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdFileParam&#039;:      &#039;color: #666;&#039;,&lt;br /&gt;
			&#039;.wikEdFileCaption&#039;:    &#039;color: #000;&#039;,&lt;br /&gt;
			&#039;.wikEdFilePreview&#039;:    &#039;border: 1px solid #c0ffa0; background: rgb(192, 192, 192) no-repeat 50% 50%; background: rgba(192, 192, 192, 0.75); position: absolute; right: 0; margin: 0.1em 0.25em; z-index: -1; border: none; padding: 1px; display: block;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdFilePreview&#039;:&lt;br /&gt;
					&#039;position: static; float: right; clear: both; background: transparent; padding: 0; &#039;,&lt;br /&gt;
&lt;br /&gt;
			// categories&lt;br /&gt;
			&#039;.wikEdCat&#039;:            &#039;background: #ccc; color: #00e;&#039;,&lt;br /&gt;
			&#039;.wikEdCatName&#039;:        &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdCat .wikEdLinkInter&#039;: &#039;color: #000; background: #aaa;&#039;,&lt;br /&gt;
			&#039;.wikEdCat .wikEdLinkNs&#039;: &#039;color: #000; background: #ccc;&#039;,&lt;br /&gt;
			&#039;.wikEdCat .wikEdLinkText&#039;: &#039;color: #000; font-weight: normal;&#039;,&lt;br /&gt;
			&#039;.wikEdCat span.wikEdLinkText:hover&#039;: &#039;text-decoration: none;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// refs&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdRefContainer&#039;: &#039;display: block; position: fixed; left: -10000em;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdRefContainer&#039;:   &#039;position: relative;&#039;,&lt;br /&gt;
			&#039;.wikEdRefContainer button&#039;: &#039;padding: 0.1em; position: relative;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdRefButton&#039;:      &#039;border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0;&#039;,&lt;br /&gt;
			&#039;.wikEdRefButtonShow&#039;:  &#039;border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0;&#039;,&lt;br /&gt;
			&#039;.wikEdRef, .wikEdRefShow&#039;: &#039;background: #e8e8e8; color: #666;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdReferences&#039;:     &#039;background: #eee;&#039;,&lt;br /&gt;
			&#039;.wikEdReferencesTag&#039;:  &#039;color: #444;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdReferences&#039;:&lt;br /&gt;
					&#039;background: #eee; padding: 0.25em; display: inline-block; border: 1px solid black; vertical-align: middle;&#039;,&lt;br /&gt;
			&#039;.wikEdRefList&#039;:        &#039;background: #eee;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdRefList&#039;:&lt;br /&gt;
					&#039;background: #e8e8e8; padding: 0.25em; display: inline-block; border: 1px solid black; vertical-align: middle;&#039;,&lt;br /&gt;
			&#039;.wikEdRefName&#039;:        &#039;color: #000;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// templates&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdTemplContainer&#039;:  &#039;display: block; position: fixed; left: -10000em;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplContainer&#039;:  &#039;position: relative;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplContainer button&#039;: &#039;padding: 0.1em; position: relative;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplButton&#039;:     &#039;border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplButtonShow&#039;: &#039;border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdTempl, .wikEdTemplShow&#039;: &#039;background: #e8e8e8; color: #509;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplNs, .wikEdTemplNsShow&#039;: &#039;background: #ccc;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdTemplTag&#039;:       &#039;color: #777;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplName&#039;:      &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplParam&#039;:     &#039;color: #666;&#039;,&lt;br /&gt;
			&#039;.wikEdTemplMod&#039;:       &#039;color: #f00; font-weight: bold;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdParam&#039;:          &#039;background: #e8e8e8;&#039;,&lt;br /&gt;
			&#039;.wikEdParamName&#039;:      &#039;color: #900;&#039;,&lt;br /&gt;
			&#039;.wikEdParamDefault&#039;:   &#039;color: #000;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// missing article for links, cats, refs, and templates&lt;br /&gt;
			&#039;.wikEdRedlink&#039;:        &#039;color: #c00;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// character entities&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdCharEntityContainer&#039;:  &#039;display: block; position: fixed; left: -10000em;&#039;,&lt;br /&gt;
			&#039;.wikEdCharEntityContainer&#039;: &#039;position: relative; right: -0.25em;&#039;,&lt;br /&gt;
			&#039;.wikEdCharEntityContainer button&#039;:&lt;br /&gt;
					&#039;padding: 0; color: #000; font-weight: normal; font-family: monospace; position: relative; right: 0.25em; line-height: 0.75em;&#039;,&lt;br /&gt;
			&#039;.wikEdCharEntityButton&#039;:&lt;br /&gt;
					&#039;border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; border-color: rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5) rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75); background: rgba(192, 192, 192, 0.3);&#039;,&lt;br /&gt;
			&#039;.wikEdCharEntityButtonShow&#039;:&lt;br /&gt;
					&#039;border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; border-color: rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75) rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5); background: rgba(192, 192, 192, 0.3);&#039;,&lt;br /&gt;
			&#039;.wikEdCharEntity, .wikEdCharEntityShow&#039;:&lt;br /&gt;
					&#039;color: #000; background: #e8e8e8;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// tables&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdTableContainer&#039;:  &#039;display: block; position: fixed; left: -10000em;&#039;,&lt;br /&gt;
			&#039;.wikEdTableContainer&#039;: &#039;position: relative;&#039;,&lt;br /&gt;
			&#039;.wikEdTableContainer button&#039;:&lt;br /&gt;
				&#039;padding: 0.1em; position: relative; vertical-align: top;&#039;,&lt;br /&gt;
			&#039;.wikEdTableButton&#039;:    &#039;border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0;&#039;,&lt;br /&gt;
			&#039;.wikEdTableButtonShow&#039;:&lt;br /&gt;
					&#039;border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0;&#039;,&lt;br /&gt;
			&#039;.wikEdTable, .wikEdTableShow&#039;: &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdTableButton:before, .wikEdTableButtonShow:before&#039;:&lt;br /&gt;
					&#039;line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// links in references and templates&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdRef .wikEdURLName,  .wikEdFrameBodySyntax .wikEdTempl .wikEdURLName,  .wikEdFrameBodySyntax .wikEdRef .wikEdURLTarget,  .wikEdFrameBodySyntax .wikEdTempl .wikEdURLTarget,  .wikEdFrameBodySyntax .wikEdRef .wikEdURLText,  .wikEdFrameBodySyntax .wikEdTempl .wikEdURLText&#039;:  &#039;color: #66f; font-weight: normal;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodySyntax .wikEdRef .wikEdLinkName, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkName, .wikEdFrameBodySyntax .wikEdRef .wikEdLinkTarget, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkTarget, .wikEdFrameBodySyntax .wikEdRef .wikEdLinkText, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkText&#039;: &#039;color: #66f; font-weight: normal;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wikEdFrameBodyNewbie ref and template hiding&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdRefContainer + .wikEdRef, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTempl, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTemplNs&#039;:&lt;br /&gt;
					&#039;position: fixed; left: -10000em;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdRefContainer + .wikEdRefShow, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTemplShow, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTemplNsShow&#039;:&lt;br /&gt;
					&#039;display: block; position: relative; color: #000; background: #f8f8f8; font-weight: normal; border: 1px solid; border-color: #444 #ccc #ccc #444; padding: 0.5em 0.25em;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdRefButton:before, .wikEdFrameBodyNewbie .wikEdTemplButton:before, .wikEdFrameBodyNewbie .wikEdTableButton:before, .wikEdFrameBodyNewbie .wikEdRefButtonShow:before, .wikEdFrameBodyNewbie .wikEdTemplButtonShow:before, .wikEdFrameBodyNewbie .wikEdTableButtonShow:before&#039;:&lt;br /&gt;
					&#039;line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif;&#039;,&lt;br /&gt;
			&#039;.wikEdRefButton:before, .wikEdTemplButton:before, .wikEdRefButtonShow:before, .wikEdTemplButtonShow:before&#039;:&lt;br /&gt;
					&#039;line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdRefButton:before, .wikEdFrameBodyNewbie .wikEdRefButtonShow:before&#039;:&lt;br /&gt;
					&#039;content: &amp;quot;{wikEdText:hideRef}&amp;quot;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTemplButton:before, .wikEdFrameBodyNewbie .wikEdTemplButtonShow:before&#039;:&lt;br /&gt;
					&#039;content: &amp;quot;{wikEdText:hideTempl}&amp;quot;;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wikEdFrameBodyNewbie char entity hiding&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdCharEntity&#039;:&lt;br /&gt;
					&#039;position: fixed; left: -10000em;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdCharEntityShow&#039;:&lt;br /&gt;
					&#039;display: inline; position: relative; color: #000; background: #f8f8f8; border: 1px solid; font-weight: normal; background: rgba(192, 192, 192, 0.3); border: 1px inset;&#039;,&lt;br /&gt;
			&#039;.wikEdCharEntityButton:before, .wikEdCharEntityButtonShow:before&#039;:&lt;br /&gt;
					&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wikEdFrameBodyNewbie table hiding&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableContainer + .wikEdTable&#039;:&lt;br /&gt;
					&#039;position: fixed; left: -10000em;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableContainer + .wikEdTableShow&#039;:&lt;br /&gt;
					&#039;display: inline-block; position: relative; color: #000; font-weight: normal; background: rgba(255, 255, 255, 0.2); border: 1px inset;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameBodyNewbie .wikEdTableButton:before, .wikEdFrameBodyNewbie .wikEdTableButtonShow:before&#039;:&lt;br /&gt;
					&#039;content: &amp;quot;{wikEdText:hideTable}&amp;quot;;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// insert wikicode here&lt;br /&gt;
			&#039;.wikEdInsertHere&#039;:     &#039;background: orange; font-style: italic;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// colors&lt;br /&gt;
			&#039;.wikEdColorsLight&#039;:    &#039;color: black;&#039;,&lt;br /&gt;
			&#039;.wikEdColorsDark&#039;:     &#039;color: white;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// dashes&lt;br /&gt;
			&#039;.wikEdFigureDash&#039;:     &#039;background-image: url({wikEdImage:figureDash}); background-position: top right; background-repeat: no-repeat;&#039;,&lt;br /&gt;
			&#039;.wikEdEmDash&#039;:         &#039;background-image: url({wikEdImage:emDash}); background-position: top left; background-repeat: no-repeat;&#039;,&lt;br /&gt;
			&#039;.wikEdEnDash&#039;:         &#039;background-image: url({wikEdImage:enDash}); background-position: top left; background-repeat: no-repeat;&#039;,&lt;br /&gt;
			&#039;.wikEdBarDash&#039;:        &#039;background-image: url({wikEdImage:barDash}); background-position: top left; background-repeat: no-repeat;&#039;,&lt;br /&gt;
			&#039;.wikEdMinusDash&#039;:      &#039;background-image: url({wikEdImage:minusDash}); background-position: top left; background-repeat: no-repeat;&#039;,&lt;br /&gt;
			&#039;.wikEdSoftHyphen&#039;:     &#039;background-image: url({wikEdImage:softHyphen}); background-position: top left; background-repeat: no-repeat;&#039;,&lt;br /&gt;
			&#039;.wikEdSoftHyphen:before&#039;: &#039;content: \&#039;\xa0\&#039;&#039;,&lt;br /&gt;
			&#039;.wikEdHyphenDash&#039;:     &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// dashes, invisibles, control chars, and strange spaces&lt;br /&gt;
			&#039;.wikEdTab&#039;:            &#039;white-space: pre; background-image: url({wikEdImage:tab}); background-position: bottom right; background-repeat: no-repeat;&#039;,&lt;br /&gt;
			&#039;.wikEdTabPlain&#039;:       &#039;white-space: pre;&#039;,&lt;br /&gt;
			&#039;.wikEdCtrl&#039;:           &#039;white-space: pre; background-image: url({wikEdImage:ctrl}); background-position: center center; background-repeat: no-repeat; margin: 0 1px;&#039;,&lt;br /&gt;
			&#039;.wikEdCtrl:before&#039;:    &#039;content: \&#039;\xa0\&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			&#039;.wikEdEmSpace&#039;:        &#039;background-image: url({wikEdImage:emSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;&#039;,&lt;br /&gt;
			&#039;.wikEdEnSpace&#039;:        &#039;background-image: url({wikEdImage:enSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;&#039;,&lt;br /&gt;
			&#039;.wikEdThinSpace&#039;:      &#039;background-image: url({wikEdImage:thinSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;&#039;,&lt;br /&gt;
			&#039;.wikEdIdeographicSpace&#039;: &#039;background-image: url({wikEdImage:ideographicSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;&#039;&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// main window css rules&lt;br /&gt;
	if (wikEd.config.mainCSS === undefined) { wikEd.config.mainCSS = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitMainCSS: define built-in main window css&lt;br /&gt;
	wikEd.InitMainCSS = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.mainCSS, {&lt;br /&gt;
&lt;br /&gt;
			// logo&lt;br /&gt;
			&#039;.wikEdLogoList&#039;:              &#039;list-style-type: none;&#039;,&lt;br /&gt;
			&#039;.wikEdLogo&#039;:                  &#039;margin-left: 0.5em;&#039;,&lt;br /&gt;
			&#039;.wikEdLogoFallBack&#039;:          &#039;margin: 0.25em 0 0.25em 0.5em; float: right;&#039;&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// main window css rules for edit pages only&lt;br /&gt;
	if (wikEd.config.mainEditCSS === undefined) { wikEd.config.mainEditCSS = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitMainEditCSS: define built-in main window css for edit pages only&lt;br /&gt;
	wikEd.InitMainEditCSS = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.mainEditCSS, {&lt;br /&gt;
&lt;br /&gt;
			// combo input box&lt;br /&gt;
			&#039;.wikEdCombo&#039;:                 &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wikEd button areas&lt;br /&gt;
&lt;br /&gt;
			// button bar margins&lt;br /&gt;
			&#039;.wikEdButtonBarFormat&#039;:       &#039;margin: 0 8px 3px 1px; float: left;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarTextify&#039;:      &#039;margin: 0 8px 3px 1px; float: left;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarCustom1&#039;:      &#039;margin: 0 8px 3px 1px; float: left;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarFind&#039;:         &#039;margin: 0 8px 3px 1px; float: left;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarFix&#039;:          &#039;margin: 0 8px 3px 1px; float: left;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarCustom2&#039;:      &#039;margin: 0 8px 3px 1px; float: left;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarControl&#039;:      &#039;margin: 0 1px 3px 0; float: right;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarPreview&#039;:      &#039;margin: 0.4em 0.75em 0 0; float: right;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarPreviewFull&#039;:  &#039;margin: -0.2em 0 0 0.6em; float: right;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarPreview2&#039;:     &#039;margin: 0.2em 0 0.4em 0; float: right;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarJump&#039;:         &#039;margin: 0 0 0 0.6em; float: right;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarPasted&#039;:       &#039;position: absolute;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button bar inner wrapper: border&lt;br /&gt;
			&#039;.wikEdButtonBarInnerWrapperVisible&#039;: &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarInnerWrapperHidden&#039;: &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button bar grip wrapper&lt;br /&gt;
			&#039;.wikEdButtonBarGripWrapperVisible&#039;: &#039;float: left; border: 1px solid; border-color: #e4e0dc #c4c0bc #c4c0bc #e4e0dc;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarGripWrapperHidden&#039;: &#039;float: left; border: 1px solid; border-color: #e4e0dc #c4c0bc #c4c0bc #e4e0dc;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button bar buttons wrapper&lt;br /&gt;
			&#039;.wikEdButtonBarButtonsWrapperVisible, .wikEdButtonBarButtonsWrapperHidden&#039;: &#039;float: left; background: #d4d0cc; border: 1px solid; border-color: #e4e0dc #c4c0bc #c4c0bc #e4e0dc; background: #d4d0cc; z-index: 4;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button bar grip&lt;br /&gt;
			&#039;.wikEdButtonBarGrip&#039;:         &#039;background: #d4d0cc; cursor: pointer; background-repeat: no-repeat; background-position: center;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarGripWrapperVisible .wikEdButtonBarGrip&#039;: &#039;background-image: url({wikEdImage:grip});&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarGripWrapperHidden  .wikEdButtonBarGrip&#039;: &#039;background-image: url({wikEdImage:gripHidden});&#039;,&lt;br /&gt;
&lt;br /&gt;
			// button bar buttons&lt;br /&gt;
			&#039;.wikEdButtonsFormat&#039;:         &#039;padding: 2px 2px 0 0px;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsTextify&#039;:        &#039;padding: 2px 2px 0 0px;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsCustom1&#039;:        &#039;padding: 2px 2px 0 0px;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsFind&#039;:           &#039;padding: 2px 2px 0 0px;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsFix&#039;:            &#039;padding: 2px 2px 0 0px;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsCustom2&#039;:        &#039;padding: 2px 2px 0 0px;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsControl&#039;:        &#039;padding: 2px 2px 0 1px;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsPasted&#039;:         &#039;padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: rgba(212, 208, 204, 0.6);&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsPasted:hover&#039;:   &#039;background-color: #e4e0dc;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsPasted img&#039;:     &#039;border-color: rgba(0, 0, 0, 0) !important; background-color: rgba(0, 0, 0, 0);&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsPasted img:hover&#039;: &#039;background-color: #e4e0dc;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsPreview&#039;:        &#039;padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsPreviewFull&#039;:    &#039;padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsPreview2&#039;:       &#039;padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsJump&#039;:           &#039;border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// wikEd buttons (!important for devmo skin)&lt;br /&gt;
			&#039;.wikEdButton&#039;:                &#039;vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: #d4d0cc; border: 1px #d4d0cc solid !important; cursor: pointer;&#039;,&lt;br /&gt;
			&#039;.wikEdButton:hover&#039;:          &#039;background: #e4e0dc; border: 1px outset !important; cursor: pointer;&#039;,&lt;br /&gt;
			&#039;.wikEdButton:active&#039;:         &#039;background: #e4e0dc; border: 1px inset !important;  cursor: pointer;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonSolo&#039;:            &#039;display: block; font-size: small; text-decoration: underline; padding: 0.2em; background: #d4d0cc; border: 1px #d4d0cc solid !important; cursor: pointer;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonSolo:hover&#039;:      &#039;background: #e4e0dc; border: 1px outset !important; cursor: pointer;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonChecked&#039;:         &#039;vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ccc8c3; border: 1px solid !important; border-color: black white white black !important; cursor: pointer;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonUnchecked&#039;:       &#039;vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ddd8d3; border: 1px solid !important; border-color: white black black white !important; cursor: pointer;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonPressed&#039;:         &#039;vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ccc8c3; border: 1px solid !important; border-color: black white white black !important; cursor: wait;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonInactive&#039;:        &#039;vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: rgba(160, 160, 160, 0.5) !important; border: 1px #b0b0b0 solid !important; cursor: not-allowed&#039;,&lt;br /&gt;
			&#039;.wikEdLocalPreview&#039;:          &#039;vertical-align: top; margin: 0 0.33em 0 0.15em; padding: 0;&#039;,&lt;br /&gt;
			&#039;.wikEdLocalDiff&#039;:             &#039;vertical-align: top; margin: 0 0.33em 0 0.15em; padding: 0;&#039;,&lt;br /&gt;
			&#039;input#wpDiff, input#wpPreview&#039;: &#039;margin-right: 0;&#039;, // monobook fix&lt;br /&gt;
			&#039;.wikEdButtonDummy&#039;:           &#039;vertical-align: text-top; margin: 1px 2px; padding: 1px; background: #d4d0cc;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// preview box&lt;br /&gt;
			&#039;.wikEdPreviewArticle&#039;:        &#039;margin: 0.75em 0 0.2em; padding: 0.5em; border: 1px solid #c0c0c0; background: #faf8f6;&#039;,&lt;br /&gt;
			&#039;.wikEdPreviewDiff&#039;:           &#039;margin: 0.75em 0 0.5em;&#039;,&lt;br /&gt;
			&#039;.wikEdPreviewRefs&#039;:           &#039;margin-top: 1.5em; padding-top: 1em; border-top: 1px solid #a0a0a0;&#039;,&lt;br /&gt;
			&#039;.wikEdPreviewDiffError&#039;:      &#039;padding: 0.5em; font-weight: bold; color: red; text-align: center;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// find and replace fields&lt;br /&gt;
			&#039;.wikEdFindComboInput, .wikEdReplaceComboInput&#039;: &#039;position: relative; margin: 0 5px; top: -1px; white-space: nowrap; vertical-align: bottom; padding: 0; line-height: 20px; font-size: 13px;&#039;,&lt;br /&gt;
			&#039;#wikEdFindText, #wikEdReplaceText&#039;: &#039;font-family: monospace; margin: 0; position: absolute; left: 0; top: 0; z-index: 2; vertical-align: bottom; width: 170px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 18px;&#039;,&lt;br /&gt;
			&#039;#wikEdFindSelect, #wikEdReplaceSelect&#039;: &#039;font-family: monospace; margin: 0; position: relative; left: 0; top: 0; z-index: 1; vertical-align: bottom; width: 190px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 18px;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// summary field&lt;br /&gt;
			&#039;.wikEdSummaryComboInput&#039;:     &#039;position: relative; margin: 0 0 0 2px; top: 0; white-space: nowrap; padding: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; font-size: 13px;&#039;,&lt;br /&gt;
			&#039;.wikEdSummaryText&#039;:           &#039;padding: 0; margin: 0; position: absolute; left: 0; top: 0; z-index: 2; vertical-align: bottom; width: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 21px;&#039;,&lt;br /&gt;
			&#039;.wikEdSummarySelect&#039;:         &#039;padding: 0; margin: 0; position: relative; left: 0; top: 0; z-index: 1; vertical-align: text-top; width: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 21px;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// space around submit buttons&lt;br /&gt;
			&#039;.editButtons&#039;:                &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// frame (frame container border will be removed if textarea has none; frame must not have a border)&lt;br /&gt;
			&#039;.wikEdFrameOuter&#039;:            &#039;float: left; width: auto; border: 1px solid; border-color: #808080 #d0d0d0 #d0d0d0 #808080; position: relative;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameInner&#039;:            &#039;float: left; width: auto; background: white; border: 1px solid; border-color: #404040 #ffffff #ffffff #404040; line-height: 0; position: relative;&#039;,&lt;br /&gt;
			&#039;.wikEdFrame&#039;:                 &#039;float: left; width: 100%; border: 0;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// summary&lt;br /&gt;
			&#039;.wikEdSummaryWrapper&#039;:        &#039;margin: 0.4em 0.75em 0; line-height: 26px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;&#039;,&lt;br /&gt;
			&#039;.wikEdConsoleTopWrapper&#039;:     &#039;clear: both; background: #f0f0f0; border: 1px solid #c0c0c0; position: relative; padding: 0 0 0.6em; margin: 0 0 0.5em;&#039;,&lt;br /&gt;
			&#039;#wpSummaryLabel&#039;:             &#039;margin: 0;&#039;,&lt;br /&gt;
			&#039;.editOptions&#039;:                &#039;padding: 0; border: none; margin: 0 0.75em; float: left&#039;,&lt;br /&gt;
			&#039;.wikEdClearSummaryForm&#039;:      &#039;display: inline;&#039;,&lt;br /&gt;
			&#039;.wikEdClearSummary&#039;:          &#039;vertical-align: middle; margin: 0 0 0 0.5em; padding: 1px; height: 19px; width: 18px; &#039;,&lt;br /&gt;
			&#039;#wikEdClearSummaryImg&#039;:       &#039;vertical-align: 10%; &#039;,&lt;br /&gt;
&lt;br /&gt;
			// input wrapper&lt;br /&gt;
			&#039;.wikEdInputWrapper&#039;:          &#039;position: relative; z-index: 100; margin-top: 0.5em; clear: both;&#039;,&lt;br /&gt;
			&#039;.wikEdFullscreen .wikEdInputWrapper &#039;: &#039;position: fixed; margin-top: 0; top: 0; left: 0; right: 0; background: #f0f0f0;&#039;,&lt;br /&gt;
			&#039;body.wikEdFullscreen&#039;:        &#039;overflow: hidden;&#039;,&lt;br /&gt;
			&#039;.wikEdFullscreen .portlet &#039;:  &#039;z-index: 0 !important;&#039;, // for monobook&lt;br /&gt;
&lt;br /&gt;
			// other wrappers&lt;br /&gt;
			&#039;.wikEdEditorWrapper&#039;:         &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdToolbarWrapper&#039;:        &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonBarWrapper&#039;:      &#039;line-height: 14px; float: left; width: 100%; padding: 0.2em 0;&#039;,&lt;br /&gt;
			&#039;.wikEdCaptchaWrapper&#039;:        &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdDebugWrapper&#039;:          &#039;position: relative; margin: 0 0 0.5em;&#039;,&lt;br /&gt;
			&#039;.wikEdDebugTextarea&#039;:         &#039;width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;&#039;,&lt;br /&gt;
			&#039;.wikEdEditWrapper&#039;:           &#039;clear: both;&#039;,&lt;br /&gt;
			&#039;.wikEdEditWrapperFull&#039;:       &#039;float: left; clear: both; width: 100%;&#039;,&lt;br /&gt;
			&#039;.wikEdTextareaWrapper&#039;:       &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdFrameWrapper&#039;:          &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdConsoleWrapper&#039;:        &#039;clear: both; background: #f0f0f0; border: 1px solid #c0c0c0; border-top: none; padding: 0 0 0.4em; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; width: 100%;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsWrapper&#039;:        &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdButtonsWrapperFull&#039;:    &#039;float: left; clear: both; width: 100%;&#039;,&lt;br /&gt;
			&#039;.wikEdSummaryInputWrapper&#039;:   &#039;display: inline; white-space: nowrap;&#039;,&lt;br /&gt;
			&#039;.wikEdSubmitWrapper&#039;:         &#039;&#039;,&lt;br /&gt;
			&#039;.wikEdSubmitButtonsWrapper&#039;:  &#039;float: left; margin: 0.4em 0.75em 0;&#039;,&lt;br /&gt;
			&#039;.wikEdEditOptionsWrapper&#039;:    &#039;float: left; margin: 0.4em 0.75em 0;&#039;,&lt;br /&gt;
			&#039;.wikEdEditHelp&#039;:              &#039;white-space: nowrap;&#039;,&lt;br /&gt;
			&#039;.wikEdInsertWrapper&#039;:         &#039;float: left; clear: both; margin-top: 0.25em;&#039;,&lt;br /&gt;
			&#039;.wikEdFullscreen .wikEdInsertWrapper p&#039;: &#039;display: inline; margin: 0;&#039;,&lt;br /&gt;
			&#039;.wikEdLocalPrevWrapper&#039;:      &#039;float: left; width: 100%;&#039;,&lt;br /&gt;
&lt;br /&gt;
			// various&lt;br /&gt;
			&#039;.editCheckboxes&#039;:             &#039;margin-bottom: 0;&#039;,&lt;br /&gt;
			&#039;.wikEdEditOptions&#039;:           &#039;display: inline-block; white-space: nowrap; vertical-align: text-top;&#039;,&lt;br /&gt;
			&#039;.wikEdEditOptions label&#039;:     &#039;vertical-align: text-bottom;&#039;,&lt;br /&gt;
			&#039;#editpage-copywarn&#039;:          &#039;&#039;,&lt;br /&gt;
			&#039;#editpage-specialchars&#039;:      &#039;&#039;,&lt;br /&gt;
			&#039;#wikEdClonedWarnings&#039;:        &#039;&#039;,&lt;br /&gt;
			&#039;#wikEdClonedWarningsNote&#039;:    &#039;background: #fff; color: #888; font-size: 75%; display: inline;&#039;,&lt;br /&gt;
			&#039;.editButtons input:first-child&#039;: &#039;margin-left: 0; margin-right: 0.33em;&#039;,&lt;br /&gt;
			&#039;fieldset#templatesandbox-editform&#039;: &#039;margin: 0 0 0.5em 0; float: left;&#039;,&lt;br /&gt;
			&#039;#templatesandbox-editform legend&#039;: &#039;padding-top: 0;&#039;,&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// buttons&lt;br /&gt;
	if (wikEd.config.button === undefined) { wikEd.config.button = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitButton: define built-in buttons&lt;br /&gt;
	wikEd.InitButton = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.button, {&lt;br /&gt;
&lt;br /&gt;
			// button number: [id, class, tooltip, image url, width, height, alt text, onclick handler code were obj is the button element]&lt;br /&gt;
&lt;br /&gt;
			// format top&lt;br /&gt;
			1:  [&#039;wikEdUndo&#039;,             &#039;wikEdButtonInactive&#039;,  wikEd.config.text[&#039;wikEdUndo title&#039;],             wikEd.config.image[&#039;undo&#039;],                &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdUndo alt&#039;],             &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			2:  [&#039;wikEdRedo&#039;,             &#039;wikEdButtonInactive&#039;,  wikEd.config.text[&#039;wikEdRedo title&#039;],             wikEd.config.image[&#039;redo&#039;],                &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdRedo alt&#039;],             &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			3:  [&#039;wikEdBold&#039;,             &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdBold title&#039;],             wikEd.config.image[&#039;bold&#039;],                &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdBold alt&#039;],             &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			4:  [&#039;wikEdItalic&#039;,           &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdItalic title&#039;],           wikEd.config.image[&#039;italic&#039;],              &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdItalic alt&#039;],           &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			5:  [&#039;wikEdUnderline&#039;,        &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdUnderline title&#039;],        wikEd.config.image[&#039;underline&#039;],           &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdUnderline alt&#039;],        &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			6:  [&#039;wikEdStrikethrough&#039;,    &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdStrikethrough title&#039;],    wikEd.config.image[&#039;strikethrough&#039;],       &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdStrikethrough alt&#039;],    &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			7:  [&#039;wikEdNowiki&#039;,           &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdNowiki title&#039;],           wikEd.config.image[&#039;nowiki&#039;],              &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdNowiki alt&#039;],           &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			8:  [&#039;wikEdSuperscript&#039;,      &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdSuperscript title&#039;],      wikEd.config.image[&#039;superscript&#039;],         &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdSuperscript alt&#039;],      &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			9:  [&#039;wikEdSubscript&#039;,        &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdSubscript title&#039;],        wikEd.config.image[&#039;subscript&#039;],           &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdSubscript alt&#039;],        &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			10: [&#039;wikEdRef&#039;,              &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdRef title&#039;],              wikEd.config.image[&#039;ref&#039;],                 &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdRef alt&#039;],              &#039;if (!event.shiftKey) { wikEd.EditButton(obj, \&#039;wikEdRef\&#039;); } else { wikEd.EditButton(obj, \&#039;wikEdRefNamed\&#039;); }&#039; ],&lt;br /&gt;
			12: [&#039;wikEdCase&#039;,             &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdCase title&#039;],             wikEd.config.image[&#039;case&#039;],                &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdCase alt&#039;],             &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			80: [&#039;wikEdSort&#039;,             &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdSort title&#039;],             wikEd.config.image[&#039;sort&#039;],                &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdSort alt&#039;],             &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			25: [&#039;wikEdRedirect&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdRedirect title&#039;],         wikEd.config.image[&#039;redirect&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdRedirect alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			13: [&#039;wikEdUndoAll&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdUndoAll title&#039;],          wikEd.config.image[&#039;undoAll&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdUndoAll alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			14: [&#039;wikEdRedoAll&#039;,          &#039;wikEdButtonInactive&#039;,  wikEd.config.text[&#039;wikEdRedoAll title&#039;],          wikEd.config.image[&#039;redoAll&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdRedoAll alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// format bottom&lt;br /&gt;
			15: [&#039;wikEdWikiLink&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdWikiLink title&#039;],         wikEd.config.image[&#039;wikiLink&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdWikiLink alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			16: [&#039;wikEdWebLink&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdWebLink title&#039;],          wikEd.config.image[&#039;webLink&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdWebLink alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			17: [&#039;wikEdHeading&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdHeading title&#039;],          wikEd.config.image[&#039;heading&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdHeading alt&#039;],          &#039;if (!event.shiftKey) { wikEd.EditButton(obj, \&#039;wikEdIncreaseHeading\&#039;); } else { wikEd.EditButton(obj, \&#039;wikEdDecreaseHeading\&#039;); }&#039; ],&lt;br /&gt;
			19: [&#039;wikEdBulletList&#039;,       &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdBulletList title&#039;],       wikEd.config.image[&#039;bulletList&#039;],          &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdBulletList alt&#039;],       &#039;if (!event.shiftKey) { wikEd.EditButton(obj, \&#039;wikEdIncreaseBulletList\&#039;); } else { wikEd.EditButton(obj, \&#039;wikEdDecreaseBulletList\&#039;); }&#039; ],&lt;br /&gt;
			20: [&#039;wikEdNumberList&#039;,       &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdNumberList title&#039;],       wikEd.config.image[&#039;numberList&#039;],          &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdNumberList alt&#039;],       &#039;if (!event.shiftKey) { wikEd.EditButton(obj, \&#039;wikEdIncreaseNumberList\&#039;); } else { wikEd.EditButton(obj, \&#039;wikEdDecreaseNumberList\&#039;); }&#039; ],&lt;br /&gt;
			21: [&#039;wikEdIndentList&#039;,       &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdIndentList title&#039;],       wikEd.config.image[&#039;indentList&#039;],          &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdIndentList alt&#039;],       &#039;if (!event.shiftKey) { wikEd.EditButton(obj, \&#039;wikEdIncreaseIndentList\&#039;); } else { wikEd.EditButton(obj, \&#039;wikEdDecreaseIndentList\&#039;); }&#039; ],&lt;br /&gt;
			22: [&#039;wikEdDefinitionList&#039;,   &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdDefinitionList title&#039;],   wikEd.config.image[&#039;definitionList&#039;],      &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdDefinitionList alt&#039;],   &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			23: [&#039;wikEdImage&#039;,            &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdImage title&#039;],            wikEd.config.image[&#039;image&#039;],               &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdImage alt&#039;],            &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			24: [&#039;wikEdTable&#039;,            &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdTable title&#039;],            wikEd.config.image[&#039;table&#039;],               &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdTable alt&#039;],            &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			11: [&#039;wikEdReferences&#039;,       &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdReferences title&#039;],       wikEd.config.image[&#039;references&#039;],          &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdReferences alt&#039;],       &#039;if (!event.shiftKey) { wikEd.EditButton(obj, obj.id); } else { wikEd.EditButton(obj, \&#039;wikEdReferencesSection\&#039;); }&#039; ],&lt;br /&gt;
			84: [&#039;wikEdSign&#039;,             &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdSign title&#039;],             wikEd.config.image[&#039;sign&#039;],                &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdSign alt&#039;],             &#039;if (!event.shiftKey) { wikEd.EditButton(obj, obj.id); } else { wikEd.EditButton(obj, \&#039;wikEdSignName\&#039;); }&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// wikify, textify&lt;br /&gt;
			26: [&#039;wikEdWikify&#039;,           &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdWikify title&#039;],           wikEd.config.image[&#039;wikify&#039;],              &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdWikify alt&#039;],           &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			27: [&#039;wikEdTextify&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdTextify title&#039;],          wikEd.config.image[&#039;textify&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdTextify alt&#039;],          &#039;if (event.shiftKey) { wikEd.EditButton(obj, obj.id, \&#039;shift\&#039;); } else { wikEd.EditButton(obj, obj.id); }&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// control top&lt;br /&gt;
			77: [&#039;wikEdRefHide&#039;,          &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdRefHide title&#039;],          wikEd.config.image[&#039;refHide&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdRefHide alt&#039;],          &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
			29: [&#039;wikEdTextZoom&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdTextZoom title&#039;],         wikEd.config.image[&#039;textZoom&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdTextZoom alt&#039;],         &#039;if (!event.shiftKey) { wikEd.Button(obj, \&#039;wikEdTextZoomDown\&#039;); } else { wikEd.Button(obj, \&#039;wikEdTextZoomUp\&#039;); }&#039; ],&lt;br /&gt;
			30: [&#039;wikEdClearHistory&#039;,     &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdClearHistory title&#039;],     wikEd.config.image[&#039;clearHistory&#039;],        &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdClearHistory alt&#039;],     &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
			31: [&#039;wikEdScrollToPreview&#039;,  &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdScrollToPreview title&#039;],  wikEd.config.image[&#039;scrollToPreviewDown&#039;], &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdScrollToPreview alt&#039;],  &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
			32: [&#039;wikEdScrollToEdit&#039;,     &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdScrollToEdit title&#039;],     wikEd.config.image[&#039;scrollToEditDown&#039;],    &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdScrollToEdit alt&#039;],     &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// control bottom&lt;br /&gt;
			33: [&#039;wikEdUseWikEd&#039;,         &#039;wikEdButtonChecked&#039;,   wikEd.config.text[&#039;wikEdUseWikEd title&#039;],         wikEd.config.image[&#039;useWikEd&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdUseWikEd alt&#039;],         &#039;if (!event.ctrlKey) { wikEd.Button(obj, obj.id, true); } else { wikEd.DebugInfo(event); }&#039; ],&lt;br /&gt;
			34: [&#039;wikEdHighlightSyntax&#039;,  &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdHighlightSyntax title&#039;],  wikEd.config.image[&#039;highlightSyntax&#039;],     &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdHighlightSyntax alt&#039;],  &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
			35: [&#039;wikEdSource&#039;,           &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdSource title&#039;],           wikEd.config.image[&#039;source&#039;],              &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdSource alt&#039;],           &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			75: [&#039;wikEdCloseToolbar&#039;,     &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdCloseToolbar title&#039;],     wikEd.config.image[&#039;closeToolbar&#039;],        &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdCloseToolbar alt&#039;],     &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
			36: [&#039;wikEdUsing&#039;,            &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdUsing title&#039;],            wikEd.config.image[&#039;using&#039;],               &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdUsing alt&#039;],            &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
			37: [&#039;wikEdFullScreen&#039;,       &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdFullScreen title&#039;],       wikEd.config.image[&#039;fullScreen&#039;],          &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFullScreen alt&#039;],       &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
			79: [&#039;wikEdTableMode&#039;,        &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdTableMode title&#039;],        wikEd.config.image[&#039;tableMode&#039;],           &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdTableMode alt&#039;],        &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// find top&lt;br /&gt;
			39: [&#039;wikEdFindAll&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFindAll title&#039;],          wikEd.config.image[&#039;findAll&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFindAll alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			40: [&#039;wikEdFindPrev&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFindPrev title&#039;],         wikEd.config.image[&#039;findPrev&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFindPrev alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			41: [&#039;wikEdFindNext&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFindNext title&#039;],         wikEd.config.image[&#039;findNext&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFindNext alt&#039;],         &#039;if (event.shiftKey) { wikEd.EditButton(obj, obj.id, \&#039;shift\&#039;); } else { wikEd.EditButton(obj, obj.id); }&#039; ],&lt;br /&gt;
			43: [&#039;wikEdJumpPrev&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdJumpPrev title&#039;],         wikEd.config.image[&#039;jumpPrev&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdJumpPrev alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			44: [&#039;wikEdJumpNext&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdJumpNext title&#039;],         wikEd.config.image[&#039;jumpNext&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdJumpNext alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// find bottom&lt;br /&gt;
			46: [&#039;wikEdReplaceAll&#039;,       &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdReplaceAll title&#039;],       wikEd.config.image[&#039;replaceAll&#039;],          &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdReplaceAll alt&#039;],       &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			47: [&#039;wikEdReplacePrev&#039;,      &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdReplacePrev title&#039;],      wikEd.config.image[&#039;replacePrev&#039;],         &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdReplacePrev alt&#039;],      &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			48: [&#039;wikEdReplaceNext&#039;,      &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdReplaceNext title&#039;],      wikEd.config.image[&#039;replaceNext&#039;],         &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdReplaceNext alt&#039;],      &#039;if (event.shiftKey) { wikEd.EditButton(obj, obj.id, \&#039;shift\&#039;); } else { wikEd.EditButton(obj, obj.id); }&#039; ],&lt;br /&gt;
			49: [&#039;wikEdCaseSensitive&#039;,    &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdCaseSensitive title&#039;],    wikEd.config.image[&#039;caseSensitive&#039;],       &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdCaseSensitive alt&#039;],    &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
			50: [&#039;wikEdRegExp&#039;,           &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdRegExp title&#039;],           wikEd.config.image[&#039;regExp&#039;],              &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdRegExp alt&#039;],           &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
			51: [&#039;wikEdFindAhead&#039;,        &#039;wikEdButtonUnchecked&#039;, wikEd.config.text[&#039;wikEdFindAhead title&#039;],        wikEd.config.image[&#039;findAhead&#039;],           &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFindAhead alt&#039;],        &#039;wikEd.Button(obj, obj.id, true);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// fix top&lt;br /&gt;
			52: [&#039;wikEdFixBasic&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixBasic title&#039;],         wikEd.config.image[&#039;fixBasic&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixBasic alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			53: [&#039;wikEdFixHtml&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixHtml title&#039;],          wikEd.config.image[&#039;fixHtml&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixHtml alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			54: [&#039;wikEdFixCaps&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixCaps title&#039;],          wikEd.config.image[&#039;fixCaps&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixCaps alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			55: [&#039;wikEdFixUnicode&#039;,       &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixUnicode title&#039;],       wikEd.config.image[&#039;fixUnicode&#039;],          &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixUnicode alt&#039;],       &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			81: [&#039;wikEdFixRedirect&#039;,      &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixRedirect title&#039;],      wikEd.config.image[&#039;fixRedirect&#039;],         &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixRedirect alt&#039;],      &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			56: [&#039;wikEdFixAll&#039;,           &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixAll title&#039;],           wikEd.config.image[&#039;fixAll&#039;],              &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixAll alt&#039;],           &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			57: [&#039;wikEdFixRegExTypo&#039;,     &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixRegExTypo title&#039;],     wikEd.config.image[&#039;fixRegExTypo&#039;],        &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixRegExTypo alt&#039;],     &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// fix bottom&lt;br /&gt;
			58: [&#039;wikEdFixDashes&#039;,        &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixDashes title&#039;],        wikEd.config.image[&#039;fixDash&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixDashes alt&#039;],        &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			59: [&#039;wikEdFixPunct&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixPunct title&#039;],         wikEd.config.image[&#039;fixPunct&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixPunct alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			60: [&#039;wikEdFixMath&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixMath title&#039;],          wikEd.config.image[&#039;fixMath&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixMath alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			61: [&#039;wikEdFixChem&#039;,          &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixChem title&#039;],          wikEd.config.image[&#039;fixChem&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixChem alt&#039;],          &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			62: [&#039;wikEdFixUnits&#039;,         &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdFixUnits title&#039;],         wikEd.config.image[&#039;fixUnits&#039;],            &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdFixUnits alt&#039;],         &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// preview top&lt;br /&gt;
			65: [&#039;wikEdClose&#039;,            &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdClose title&#039;],            wikEd.config.image[&#039;close&#039;],               &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdClose alt&#039;],            &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
			66: [&#039;wikEdScrollToPreview2&#039;, &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdScrollToPreview2 title&#039;], wikEd.config.image[&#039;scrollToPreviewDown&#039;], &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdScrollToPreview2 alt&#039;], &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
			67: [&#039;wikEdScrollToEdit2&#039;,    &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdScrollToEdit2 title&#039;],    wikEd.config.image[&#039;scrollToEdit&#039;],        &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdScrollToEdit2 alt&#039;],    &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// preview bottom&lt;br /&gt;
			70: [&#039;wikEdClose2&#039;,           &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdClose2 title&#039;],           wikEd.config.image[&#039;close&#039;],               &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdClose2 alt&#039;],           &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
			71: [&#039;wikEdScrollToPreview3&#039;, &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdScrollToPreview3 title&#039;], wikEd.config.image[&#039;scrollToPreview&#039;],     &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdScrollToPreview3 alt&#039;], &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
			72: [&#039;wikEdScrollToEdit3&#039;,    &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdScrollToEdit3 title&#039;],    wikEd.config.image[&#039;scrollToEdit&#039;],        &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdScrollToEdit3 alt&#039;],    &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// jump&lt;br /&gt;
			74: [&#039;wikEdScrollToEdit4&#039;,    &#039;wikEdButtonSolo&#039;,      wikEd.config.text[&#039;wikEdScrollToEdit4 title&#039;],    wikEd.config.image[&#039;scrollToEditDown&#039;],    &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdScrollToEdit4 alt&#039;],    &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// dummy (empty placeholder)&lt;br /&gt;
			76: [&#039;wikEdDummy&#039;,            &#039;wikEdButtonDummy&#039;,     &#039;&#039;,                                               wikEd.config.image[&#039;dummy&#039;],               &#039;16&#039;, &#039;16&#039;, &#039;&#039;,                                             &#039;&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// wikEd.InitButton: define built-in buttons (id, class, popup title, image src, width, height, alt text, click handler code were obj is the button element)&lt;br /&gt;
			82: [&#039;wikEdLocalPreview&#039;,     &#039;wikEdLocalPreview&#039;,    wikEd.config.text[&#039;wikEdLocalPreview title&#039;],     wikEd.config.image[&#039;preview&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdLocalPreviewImg alt&#039;],  &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
			83: [&#039;wikEdLocalDiff&#039;,        &#039;wikEdLocalDiff&#039;,       wikEd.config.text[&#039;wikEdLocalDiff title&#039;],        wikEd.config.image[&#039;diff&#039;],                &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdLocalDiffImg alt&#039;],     &#039;wikEd.Button(obj, obj.id);&#039; ],&lt;br /&gt;
&lt;br /&gt;
			// pasted&lt;br /&gt;
			85: [&#039;wikEdPastedTextify&#039;,    &#039;wikEdButtonInactive&#039;,  wikEd.config.text[&#039;wikEdPastedTextify title&#039;],    wikEd.config.image[&#039;textify&#039;],             &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdPastedTextify alt&#039;],    &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			86: [&#039;wikEdPastedWikify&#039;,     &#039;wikEdButtonInactive&#039;,  wikEd.config.text[&#039;wikEdPastedWikify title&#039;],     wikEd.config.image[&#039;wikify&#039;],              &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdPastedWikify alt&#039;],     &#039;wikEd.EditButton(obj, obj.id);&#039; ],&lt;br /&gt;
			87: [&#039;wikEdPastedClose&#039;,      &#039;wikEdButton&#039;,          wikEd.config.text[&#039;wikEdPastedClose title&#039;],      wikEd.config.image[&#039;closePasted&#039;],         &#039;16&#039;, &#039;16&#039;, wikEd.config.text[&#039;wikEdPastedClose alt&#039;],      &#039;wikEd.PastedClose();&#039; ]&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// button access keys&lt;br /&gt;
	if (wikEd.config.buttonKey === undefined) { wikEd.config.buttonKey = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitButtonKey: define accesskeys for edit buttons&lt;br /&gt;
	wikEd.InitButtonKey = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.buttonKey, {&lt;br /&gt;
&lt;br /&gt;
			// wikEd button number: [key string, JS key code]&lt;br /&gt;
			26: [&#039;b&#039;, 66], // wikify&lt;br /&gt;
			27: [&#039;o&#039;, 79], // textify&lt;br /&gt;
			67: [&#039;g&#039;, 71], // scrolltoedit2&lt;br /&gt;
			72: [&#039;g&#039;, 71], // scrolltoedit3&lt;br /&gt;
			74: [&#039;g&#039;, 71], // scrolltoedit4&lt;br /&gt;
			32: [&#039;g&#039;, 71]  // scrolltoedit, overwrites previous wikEd buttons for same key&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// button bars (id, class, button numbers)&lt;br /&gt;
	if (wikEd.config.buttonBar === undefined) { wikEd.config.buttonBar = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitButtonBar: define built-in button bars&lt;br /&gt;
	wikEd.InitButtonBar = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.buttonBar, {&lt;br /&gt;
&lt;br /&gt;
			// button name: [id outer, class outer, id inner, class inner, height, grip title, button numbers, bar title&lt;br /&gt;
			&#039;format&#039;:   [&#039;wikEdButtonBarFormat&#039;,   &#039;wikEdButtonBarFormat&#039;,   &#039;wikEdButtonsFormat&#039;,   &#039;wikEdButtonsFormat&#039;,   44, wikEd.config.text[&#039;wikEdGripFormat title&#039;],  [1,2,3,4,5,6,7,8,9,10,12,13,14,&#039;br&#039;,15,16,17,19,20,21,22,23,24,11,80,25,84], wikEd.config.text[&#039;wikEdBarFormat title&#039;] ],&lt;br /&gt;
			&#039;textify&#039;:  [&#039;wikEdButtonBarTextify&#039;,  &#039;wikEdButtonBarTextify&#039;,  &#039;wikEdButtonsTextify&#039;,  &#039;wikEdButtonsTextify&#039;,  44, wikEd.config.text[&#039;wikEdGripTextify title&#039;], [26,&#039;br&#039;,27], wikEd.config.text[&#039;wikEdBarTextify title&#039;] ],&lt;br /&gt;
			&#039;custom1&#039;:  [&#039;wikEdButtonBarCustom1&#039;,  &#039;wikEdButtonBarCustom1&#039;,  &#039;wikEdButtonsCustom1&#039;,  &#039;wikEdButtonsCustom1&#039;,  44, wikEd.config.text[&#039;wikEdGripCustom1 title&#039;], [ ], wikEd.config.text[&#039;wikEdBarCustom1 title&#039;] ],&lt;br /&gt;
			&#039;find&#039;:     [&#039;wikEdButtonBarFind&#039;,     &#039;wikEdButtonBarFind&#039;,     &#039;wikEdButtonsFind&#039;,     &#039;wikEdButtonsFind&#039;,     44, wikEd.config.text[&#039;wikEdGripFind title&#039;],    [39,40,&#039;find&#039;,41,76,43,44,&#039;br&#039;,46,47,&#039;replace&#039;,48,49,50,51], wikEd.config.text[&#039;wikEdBarFind title&#039;] ],&lt;br /&gt;
			&#039;fix&#039;:      [&#039;wikEdButtonBarFix&#039;,      &#039;wikEdButtonBarFix&#039;,      &#039;wikEdButtonsFix&#039;,      &#039;wikEdButtonsFix&#039;,      44, wikEd.config.text[&#039;wikEdGripFix title&#039;],     [52,53,54,55,56,81,&#039;br&#039;,58,59,60,61,62,57], wikEd.config.text[&#039;wikEdBarFix title&#039;] ],&lt;br /&gt;
			&#039;custom2&#039;:  [&#039;wikEdButtonBarCustom2&#039;,  &#039;wikEdButtonBarCustom2&#039;,  &#039;wikEdButtonsCustom2&#039;,  &#039;wikEdButtonsCustom2&#039;,  44, wikEd.config.text[&#039;wikEdGripCustom2 title&#039;], [ ], wikEd.config.text[&#039;wikEdBarCustom2 title&#039;] ],&lt;br /&gt;
			&#039;control&#039;:  [&#039;wikEdButtonBarControl&#039;,  &#039;wikEdButtonBarControl&#039;,  &#039;wikEdButtonsControl&#039;,  &#039;wikEdButtonsControl&#039;,  44, wikEd.config.text[&#039;wikEdGripControl title&#039;], [77,29,30,35,31,32,&#039;br&#039;,33,34,79,75,36,37], wikEd.config.text[&#039;wikEdBarControl title&#039;] ],&lt;br /&gt;
			&#039;preview&#039;:  [&#039;wikEdButtonBarPreview&#039;,  &#039;wikEdButtonBarPreview&#039;,  &#039;wikEdButtonsPreview&#039;,  &#039;wikEdButtonsPreview&#039;,   0, null, [66,67,65], wikEd.config.text[&#039;wikEdBarPreview title&#039;] ],&lt;br /&gt;
			&#039;preview2&#039;: [&#039;wikEdButtonBarPreview2&#039;, &#039;wikEdButtonBarPreview2&#039;, &#039;wikEdButtonsPreview2&#039;, &#039;wikEdButtonsPreview2&#039;,  0, null, [71,72,70], wikEd.config.text[&#039;wikEdBarPreview2 title&#039;] ],&lt;br /&gt;
			&#039;jump&#039;:     [&#039;wikEdButtonBarJump&#039;,     &#039;wikEdButtonBarJump&#039;,     &#039;wikEdButtonsJump&#039;,     &#039;wikEdButtonsJump&#039;,      0, null, [74],       wikEd.config.text[&#039;wikEdBarJump title&#039;] ],&lt;br /&gt;
			&#039;pasted&#039;:   [&#039;wikEdButtonBarPasted&#039;,   &#039;wikEdButtonBarPasted&#039;,   &#039;wikEdButtonsPasted&#039;,   &#039;wikEdButtonsPasted&#039;,    0, null, [85,86,87], wikEd.config.text[&#039;wikEdBarPasted title&#039;] ]&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// history length for find, replace, and summary fields&lt;br /&gt;
	if (wikEd.config.historyLength === undefined) { wikEd.config.historyLength = {}; }&lt;br /&gt;
	wikEd.InitHistoryLength = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.historyLength, {&lt;br /&gt;
			&#039;find&#039;: 10,&lt;br /&gt;
			&#039;replace&#039;: 10,&lt;br /&gt;
			&#039;summary&#039;: 10&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// presets for combo input fields dropdown options, {wikEdUsing} appends a link to this script&lt;br /&gt;
	if (wikEd.config.comboPresetOptions === undefined) { wikEd.config.comboPresetOptions = {}; }&lt;br /&gt;
	if (wikEd.config.comboPresetOptions.summary === undefined) { wikEd.config.comboPresetOptions.summary = wikEd.config.text.wikEdPresetSummary; }&lt;br /&gt;
&lt;br /&gt;
	// text for summary link to this script&lt;br /&gt;
	if (wikEd.config.summaryUsing === undefined) { wikEd.config.summaryUsing = wikEd.config.text.wikEdSummaryUsing; }&lt;br /&gt;
&lt;br /&gt;
	// expiration time span for permanent cookies in seconds, also defined in wikEdDiff.js&lt;br /&gt;
	if (wikEd.config.cookieExpireSec === undefined) { wikEd.config.cookieExpireSec = 1 * 30 * 24 * 60 * 60; }&lt;br /&gt;
&lt;br /&gt;
	// disable wikEd preset&lt;br /&gt;
	if (wikEd.config.disabledPreset === undefined) { wikEd.config.disabledPreset = false; }&lt;br /&gt;
&lt;br /&gt;
	// find ahead as you type checkbox preset&lt;br /&gt;
	if (wikEd.config.findAheadSelected === undefined) { wikEd.config.findAheadSelected = true; }&lt;br /&gt;
&lt;br /&gt;
	// highlight syntax preset&lt;br /&gt;
	if (wikEd.config.highlightSyntaxPreset === undefined) { wikEd.config.highlightSyntaxPreset = true; }&lt;br /&gt;
&lt;br /&gt;
	// enable wikEd preset&lt;br /&gt;
	if (wikEd.config.useWikEdPreset === undefined) { wikEd.config.useWikEdPreset = true; }&lt;br /&gt;
&lt;br /&gt;
	// add &#039;...using wikEd&#039; to summary preset&lt;br /&gt;
	if (wikEd.config.usingPreset === undefined) { wikEd.config.usingPreset = false; }&lt;br /&gt;
&lt;br /&gt;
	// scroll to edit field on non-preview pages&lt;br /&gt;
	if (wikEd.config.scrollToEdit === undefined) { wikEd.config.scrollToEdit = true; }&lt;br /&gt;
&lt;br /&gt;
	// focus the edit field on non-preview pages&lt;br /&gt;
	if (wikEd.config.focusEdit === undefined) { wikEd.config.focusEdit = true; }&lt;br /&gt;
&lt;br /&gt;
	// fullscreen mode preset&lt;br /&gt;
	if (wikEd.config.fullScreenModePreset === undefined) { wikEd.config.fullScreenModePreset = false; }&lt;br /&gt;
&lt;br /&gt;
	// show MediaWiki toolbar preset&lt;br /&gt;
	if (wikEd.config.closeToolbarPreset === undefined) { wikEd.config.closeToolbarPreset = false; }&lt;br /&gt;
&lt;br /&gt;
	// hide ref tags preset&lt;br /&gt;
	if (wikEd.config.refHidePreset === undefined) { wikEd.config.refHidePreset = false; }&lt;br /&gt;
&lt;br /&gt;
	// text size adjustment for edit window (percentage)&lt;br /&gt;
	if (wikEd.config.textSizeAdjust === undefined) { wikEd.config.textSizeAdjust = 100; }&lt;br /&gt;
&lt;br /&gt;
	// remove invisible syntax highlighting comments after closing tag&lt;br /&gt;
	if (wikEd.config.removeHighlightComments === undefined) { wikEd.config.removeHighlightComments = true; }&lt;br /&gt;
&lt;br /&gt;
	// show the text-to-source button for testing purposes&lt;br /&gt;
	if (wikEd.config.showSourceButton === undefined) { wikEd.config.showSourceButton = false; }&lt;br /&gt;
&lt;br /&gt;
	// show the using-wikEd button&lt;br /&gt;
	if (wikEd.config.showUsingButton === undefined) { wikEd.config.showUsingButton = false; }&lt;br /&gt;
&lt;br /&gt;
	// the wikEd help page link to be displayed after the editing help link, an empty string disables the link&lt;br /&gt;
	if (wikEd.config.helpPageLink === undefined) { wikEd.config.helpPageLink = wikEd.config.text.wikEdHelpPageLink; }&lt;br /&gt;
&lt;br /&gt;
	// enable external diff script&lt;br /&gt;
	if (wikEd.config.loadDiffScript === undefined) { wikEd.config.loadDiffScript = true; }&lt;br /&gt;
&lt;br /&gt;
	// enable external wikEdDiff script&lt;br /&gt;
	if (wikEd.config.loadDiff === undefined) { wikEd.config.loadDiff = true; }&lt;br /&gt;
&lt;br /&gt;
	// RegExTypoFix rules page, the address must have the exact same domain name as the used wiki&lt;br /&gt;
	if (wikEd.config.regExTypoFixURL === undefined) { wikEd.config.regExTypoFixURL = wikEd.config.homeBaseUrl + &#039;w/index.php?title=Wikipedia:AutoWikiBrowser/Typos&amp;amp;action=raw&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// enable RegExTypoFix button (https://en.wikipedia.org/wiki/User:Mboverload/RegExTypoFix)&lt;br /&gt;
	if (wikEd.config.regExTypoFix === undefined) { wikEd.config.regExTypoFix = false; }&lt;br /&gt;
&lt;br /&gt;
	// enable highlighting as links&lt;br /&gt;
	if (wikEd.config.followHighlightedLinks === undefined) { wikEd.config.followHighlightedLinks = false; }&lt;br /&gt;
&lt;br /&gt;
	// skip the browser detection to run wikEd under IE and Opera&lt;br /&gt;
	if (wikEd.config.skipBrowserTest === undefined) { wikEd.config.skipBrowserTest = false; }&lt;br /&gt;
&lt;br /&gt;
	// skip the script test that disables wikEd if certain scripts are present&lt;br /&gt;
	if (wikEd.config.skipScriptTest === undefined) { wikEd.config.skipScriptTest = false; }&lt;br /&gt;
&lt;br /&gt;
	// skip the add-on test that disables wikEd if certain add-ons are present&lt;br /&gt;
	if (wikEd.config.skipAddonTest === undefined) { wikEd.config.skipAddonTest = false; }&lt;br /&gt;
&lt;br /&gt;
	// skip the read-only detection&lt;br /&gt;
	if (wikEd.config.skipReadOnlyTest === undefined) { wikEd.config.skipReadOnlyTest = false; }&lt;br /&gt;
&lt;br /&gt;
	// disable wikEd if incompatible scripts are active&lt;br /&gt;
	if (wikEd.config.incompatibleScripts === undefined) { wikEd.config.incompatibleScripts = {}; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.InitIncompatibleScripts: disable wikEd if incompatible scripts are active&lt;br /&gt;
	// &#039;name in error message&#039;: &#039;regexp&#039;, case insensitive for script file name from URL w/o .js, use &#039;\\&#039; for &#039;\&#039;&lt;br /&gt;
	wikEd.InitIncompatibleScripts = function () {&lt;br /&gt;
		wikEd.InitObject(wikEd.config.incompatibleScripts, {&lt;br /&gt;
			&#039;CKEditor&#039;: &#039;\\bckeditor&#039;,&lt;br /&gt;
			&#039;FCKEditor&#039;: &#039;fckeditor&#039;,&lt;br /&gt;
			&#039;less edit clutter&#039;: &#039;less.?edit.?clutter&#039;, // [[User:Magnus_Manske/less_edit_clutter.js]]&lt;br /&gt;
			&#039;MagnusEditBox&#039;: &#039;MagnusEditBox&#039; // less_edit_clutter gadget on fr&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// disable beta toolbar CodeEditor button&lt;br /&gt;
	if (wikEd.config.disableCodeEditorButton === undefined) { wikEd.config.disableCodeEditorButton = true; }&lt;br /&gt;
&lt;br /&gt;
	// set the button bar grip width in px&lt;br /&gt;
	if (wikEd.config.buttonBarGripWidth === undefined) { wikEd.config.buttonBarGripWidth = 7; }&lt;br /&gt;
&lt;br /&gt;
	// enable server preview (Ajax)&lt;br /&gt;
	if (wikEd.config.useAjaxPreview === undefined) { wikEd.config.useAjaxPreview = true; }&lt;br /&gt;
&lt;br /&gt;
	// enable auto update (Ajax)&lt;br /&gt;
	if (wikEd.config.autoUpdate === undefined) { wikEd.config.autoUpdate = true; }&lt;br /&gt;
&lt;br /&gt;
	// hours between update check (monobook.js)&lt;br /&gt;
	if (wikEd.config.autoUpdateHours === undefined) { wikEd.config.autoUpdateHours = 20; }&lt;br /&gt;
&lt;br /&gt;
	// hours between update check (Greasemonkey)&lt;br /&gt;
	if (wikEd.config.autoUpdateHoursGM === undefined) { wikEd.config.autoUpdateHoursGM = 40; }&lt;br /&gt;
&lt;br /&gt;
	// auto update: version url (Ajax)&lt;br /&gt;
	if (wikEd.config.autoUpdateUrl === undefined) { wikEd.config.autoUpdateUrl = wikEd.config.homeBaseUrl + &#039;w/index.php?title=User:Cacycle/wikEd_current_version&amp;amp;action=raw&amp;amp;maxage=0&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// auto update: script url for Greasemonkey update&lt;br /&gt;
	if (wikEd.config.autoUpdateScriptUrl === undefined) { wikEd.config.autoUpdateScriptUrl = wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Cacycle/wikEd.user.js&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// auto update: script url for Greasemonkey bugfix (fix script duplication after @namespace change in version 0.9.127)&lt;br /&gt;
	if (wikEd.config.autoUpdateScriptUrlBugfix === undefined) { wikEd.config.autoUpdateScriptUrlBugfix = wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Cacycle/bugfix_wikEd.user.js&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// make links ctrl-clickable&lt;br /&gt;
	if (wikEd.config.linkify === undefined) { wikEd.config.linkify = true; }&lt;br /&gt;
&lt;br /&gt;
	// absolute instead of relative linkify links, URL with &amp;quot;$1&amp;quot; as article name placeholder&lt;br /&gt;
	if (wikEd.config.linkifyArticlePath === undefined) { wikEd.config.linkifyArticlePath = null; }&lt;br /&gt;
&lt;br /&gt;
	// hide refs and templates in newbie mode&lt;br /&gt;
	if (wikEd.config.hideContent === undefined) { wikEd.config.hideContent = true; }&lt;br /&gt;
&lt;br /&gt;
	// unhide refs and templates in newbie mode by hover-shift instead of mouseover&lt;br /&gt;
	if (wikEd.config.unhideShift === undefined) { wikEd.config.unhideShift = false; }&lt;br /&gt;
&lt;br /&gt;
	// wikify table parameters, replaces original table parameters with this string&lt;br /&gt;
	if (wikEd.config.wikifyTableParameters === undefined) { wikEd.config.wikifyTableParameters = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// do not rearrange page elements&lt;br /&gt;
	if (wikEd.config.noRearrange === undefined) { wikEd.config.noRearrange = false; }&lt;br /&gt;
&lt;br /&gt;
	// use French rules for fix punctuation&lt;br /&gt;
	if (wikEd.config.fixPunctFrench === undefined) { wikEd.config.fixPunctFrench = false; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.config.setupHook, executed after wikEd has been set up, usage: wikEd.config.setupHook.push(YourFunction);&lt;br /&gt;
	if (wikEd.config.setupHook === undefined) { wikEd.config.setupHook = []; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.config.onHook, executed after wikEd has been re-enabled by logo click, usage: wikEd.config.onHook.push(YourFunction);&lt;br /&gt;
	if (wikEd.config.onHook === undefined) { wikEd.config.onHook = []; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.config.offHook, executed after wikEd has been disabled by logo click, usage: wikEd.config.offHook.push(YourFunction);&lt;br /&gt;
	if (wikEd.config.offHook === undefined) { wikEd.config.offHook = []; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.config.textareaHook, executed after classic textarea has been enabled by user, usage: wikEd.config.textareaHook.push(YourFunction);&lt;br /&gt;
	if (wikEd.config.textareaHook === undefined) { wikEd.config.textareaHook = []; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.config.frameHook, executed after wikEd edit frame has been enabled by user, usage: wikEd.config.frameHook.push(YourFunction);&lt;br /&gt;
	if (wikEd.config.frameHook === undefined) { wikEd.config.frameHook = []; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.config.previewHook, executed after the local preview has been added to the page, usage: wikEd.config.previewHook.push(YourFunction);&lt;br /&gt;
	if (wikEd.config.previewHook === undefined) { wikEd.config.previewHook = []; }&lt;br /&gt;
&lt;br /&gt;
	// wikEd.config.diffHook, executed after the local changes diff has been added to the page, usage: wikEd.config.diffHook.push(YourFunction);&lt;br /&gt;
	if (wikEd.config.dHook === undefined) { wikEd.config.diffHook = []; }&lt;br /&gt;
&lt;br /&gt;
	// custom edit form id instead of &#039;editform&#039;&lt;br /&gt;
	if (wikEd.config.customEditFormId === undefined) { wikEd.config.customEditFormId = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// custom textarea id instead of &#039;wpTextbox1&#039;&lt;br /&gt;
	if (wikEd.config.customTextAreaId === undefined) { wikEd.config.customTextAreaId = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// custom save button id instead of &#039;wpSave&#039;&lt;br /&gt;
	if (wikEd.config.customSaveButtonId === undefined) { wikEd.config.customSaveButtonId = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// display tables as editable html tables (table mode)&lt;br /&gt;
	if (wikEd.config.tableMode === undefined) { wikEd.config.tableMode = true; }&lt;br /&gt;
&lt;br /&gt;
	// show table mode toggle button&lt;br /&gt;
	if (wikEd.config.showTableModeButton === undefined) { wikEd.config.showTableModeButton = false; }&lt;br /&gt;
&lt;br /&gt;
	// maximal time for syntax highlighting in ms&lt;br /&gt;
	if (wikEd.config.maxHighlightTime === undefined) { wikEd.config.maxHighlightTime = 3000; }&lt;br /&gt;
&lt;br /&gt;
	// first char of article names is case sensitive (e.g. Wiktionary)&lt;br /&gt;
	if (wikEd.config.articlesCaseSensitive === undefined) { wikEd.config.articlesCaseSensitive = false; }&lt;br /&gt;
&lt;br /&gt;
	// force immediate update if this version string is newer&lt;br /&gt;
	if (wikEd.config.forcedUpdate === undefined) { wikEd.config.forcedUpdate = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// display highlighting error messages in text&lt;br /&gt;
	if (wikEd.config.highlightError === undefined) { wikEd.config.highlightError = false; }&lt;br /&gt;
&lt;br /&gt;
	// display preview of files in text&lt;br /&gt;
	if (wikEd.config.filePreview === undefined) { wikEd.config.filePreview = true; }&lt;br /&gt;
&lt;br /&gt;
	// file preview image size in pixels&lt;br /&gt;
	if (wikEd.config.filePreviewSize === undefined) { wikEd.config.filePreviewSize = 75; }&lt;br /&gt;
&lt;br /&gt;
	// move cursor/caret outside syntax highlighted element&lt;br /&gt;
	if (wikEd.config.antiHighlightBleeding === undefined) { wikEd.config.antiHighlightBleeding = false; }&lt;br /&gt;
&lt;br /&gt;
	// debug window maximal length in chars&lt;br /&gt;
	if (wikEd.config.debugMaxLength === undefined) { wikEd.config.debugMaxLength = 500000; }&lt;br /&gt;
&lt;br /&gt;
	// debug display of DOM nodes: maximal length of innerHTML in chars&lt;br /&gt;
	if (wikEd.config.debugInnerHtmlLength === undefined) { wikEd.config.debugInnerHtmlLength = 150; }&lt;br /&gt;
&lt;br /&gt;
	// WikiMedia Commons (or other external file repository) script url for redlink detection&lt;br /&gt;
	if (wikEd.config.externalApiUrl === undefined) { wikEd.config.externalApiUrl = &#039;//commons.wikimedia.org/w/api.php&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// origin domains allowed to call externalScriptURL API for redlink detection via Ajax cross-origin request (CORS) (comma separated list)&lt;br /&gt;
	if (wikEd.config.externalApiDomains === undefined) { wikEd.config.externalApiDomains = &#039;wikipedia.org,wiktionary.org,wikibooks.org,wikinews.org,wikiquote.org,wikisource.org,wikiversity.org,wikivoyage.org,wikidata.org,mediawiki.org,wikimedia.org,wikimediafoundation.org&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// wikibase data repository url default&lt;br /&gt;
	if (wikEd.config.wbRepoUrl === undefined) { wikEd.config.wbRepoUrl = &#039;//www.wikidata.org&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// wikibase data repository article path default&lt;br /&gt;
	if (wikEd.config.wbRepoArticlePath === undefined) { wikEd.config.wbRepoArticlePath = &#039;/wiki/$1&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// interlanguage name of default wiki on wikibase data repository default&lt;br /&gt;
	if (wikEd.config.wbGlobalSiteId === undefined) { wikEd.config.wbGlobalSiteId = &#039;enwiki&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// copy textarea background color to wikEd edit frame&lt;br /&gt;
	if (wikEd.config.frameBackgroundColor === undefined) { wikEd.config.frameBackgroundColor = false; }&lt;br /&gt;
&lt;br /&gt;
	// convert all &amp;amp;nbsp; character entities to actual characters for textarea editing and saving (not recommended)&lt;br /&gt;
	if (wikEd.config.nbspToChar === undefined) { wikEd.config.nbspToChar = false; }&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// user configurable variables needed during start up&lt;br /&gt;
&lt;br /&gt;
// init config&lt;br /&gt;
if (wikEd.config === undefined) { wikEd.config = {}; }&lt;br /&gt;
&lt;br /&gt;
// wikEd code home base URL, also defined in wikEdDiff.js&lt;br /&gt;
if (wikEd.config.homeBaseUrl === undefined) { wikEd.config.homeBaseUrl = &#039;//en.wikipedia.org/&#039;; }&lt;br /&gt;
&lt;br /&gt;
// diff library URL, also defined in wikEdDiff.js&lt;br /&gt;
if (wikEd.config.diffScriptSrc === undefined) { wikEd.config.diffScriptSrc = wikEd.config.homeBaseUrl + &#039;w/index.php?title=User:Cacycle/diff.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;; }&lt;br /&gt;
&lt;br /&gt;
// wikEdDiff script URL, also defined in wikEdDiff.js&lt;br /&gt;
if (wikEd.config.diffSrc === undefined) { wikEd.config.diffSrc = wikEd.config.homeBaseUrl + &#039;w/index.php?title=User:Cacycle/wikEdDiff.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039;; }&lt;br /&gt;
&lt;br /&gt;
// wikEd-as-gadget detection, set to true if gadget script name is not MediaWiki:Gadget-wikEd.js&lt;br /&gt;
if (wikEd.config.gadget === undefined) { wikEd.config.gadget = null; }&lt;br /&gt;
&lt;br /&gt;
// duplicate edit warnings from the top of the page to above the edit window&lt;br /&gt;
if (wikEd.config.doCloneWarnings === undefined) { wikEd.config.doCloneWarnings = true; }&lt;br /&gt;
&lt;br /&gt;
// startup debugging&lt;br /&gt;
if (wikEd.config.debugStartUp === undefined) { wikEd.config.debugStartUp = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
// show missing translations&lt;br /&gt;
if (wikEd.config.showMissingTranslations === undefined) { wikEd.config.showMissingTranslations = false; }&lt;br /&gt;
&lt;br /&gt;
// content language default, also used for wikEd UI localization&lt;br /&gt;
if (wikEd.config.languageDefault === undefined) { wikEd.config.languageDefault = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
// load external translation&lt;br /&gt;
if (wikEd.config.loadTranslation === undefined) { wikEd.config.loadTranslation = true; }&lt;br /&gt;
&lt;br /&gt;
// translation javascript URLs&lt;br /&gt;
if (wikEd.config.translations === undefined) { wikEd.config.translations = {}; }&lt;br /&gt;
&lt;br /&gt;
// wikEd.InitTranslations: define translation javascript URLs (&#039;&#039;: internal default)&lt;br /&gt;
wikEd.InitTranslations = function () {&lt;br /&gt;
	wikEd.InitObject(wikEd.config.translations, {&lt;br /&gt;
		&#039;en&#039;:  &#039;&#039;,&lt;br /&gt;
		&#039;af&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Arnobarnard/wikEd_international_af.js&#039;,&lt;br /&gt;
		&#039;ar&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:ترجمان05/wikEd_international_ar.js&#039;,&lt;br /&gt;
		&#039;zh-hans&#039;: wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:CAS222222221/wikEd_international_zh.js&#039;,&lt;br /&gt;
		&#039;zh-hant&#039;: wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Liflon/wikEd_international_zh-hant.js&#039;,&lt;br /&gt;
		&#039;cs&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Sevela.p/wikEd_international_cs.js&#039;,&lt;br /&gt;
		&#039;nl&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Jeronevw/wikEd_international_nl.js&#039;,&lt;br /&gt;
		&#039;eo&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=Tlustulimu/wikEd_international_eo.js&#039;,&lt;br /&gt;
		&#039;fi&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Ejs-80/wikEd_international_fi.js&#039;,&lt;br /&gt;
		&#039;fr&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Leag/wikEd-fr.js&#039;,&lt;br /&gt;
		&#039;gl&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Toliño/wikEd_international_gl.js&#039;,&lt;br /&gt;
		&#039;de&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:PerfektesChaos/wikEd_international_de.js&#039;,&lt;br /&gt;
		&#039;he&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:שמוליק/wikEd_international_he.js&#039;,&lt;br /&gt;
		&#039;hr&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:SpeedyGonsales/wikEd_international_hr.js&#039;,&lt;br /&gt;
		&#039;hu&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Tsch81/wikEd-hu.js&#039;,&lt;br /&gt;
		&#039;it&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Jalo/wikEd_international_it.js&#039;,&lt;br /&gt;
		&#039;ja&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Hatukanezumi/wikEd_international_ja.js&#039;,&lt;br /&gt;
		&#039;kk&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Arystanbek/wikEd_international_kk.js&#039;,&lt;br /&gt;
		&#039;ko&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Ilovesabbath/wikEd_international_ko.js&#039;,&lt;br /&gt;
		&#039;dsb&#039;: wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Michalwiki/wikEd_international_dsb.js&#039;,&lt;br /&gt;
		&#039;ms&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Aviator/wikEd_international_ms.js&#039;,&lt;br /&gt;
		&#039;no&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Dvyjones/wikEd_international_no.js&#039;,&lt;br /&gt;
		&#039;nn&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Frokor/wikEd_international_nn.js&#039;,&lt;br /&gt;
		&#039;fa&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Reza1615/wikEd_international_fa.js&#039;,&lt;br /&gt;
		&#039;pl&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Konradek/wikEd_international_pl.js&#039;,&lt;br /&gt;
		&#039;pt&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:He7d3r/Tools/wikEd_international_pt.js&#039;,&lt;br /&gt;
		&#039;ro&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Roamataa/wikEd_international_ro.js&#039;,&lt;br /&gt;
		&#039;ru&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:IGW/wikEd_international_ru.js&#039;,&lt;br /&gt;
		&#039;scn&#039;: wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Meloscn/wikEd_international_scn.js&#039;,&lt;br /&gt;
		&#039;sk&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Helix84/wikEd_international_sk.js&#039;,&lt;br /&gt;
		&#039;sl&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Eleassar/wikEd_international_sl.js&#039;,&lt;br /&gt;
		&#039;es&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Doblecaña/wikEd_international_es.js&#039;,&lt;br /&gt;
		&#039;sv&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Where_next_Columbus?/wikEd_international_sv.js&#039;,&lt;br /&gt;
		&#039;tr&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Vito_Genovese/wikEd_international_tr.js&#039;,&lt;br /&gt;
		&#039;hsb&#039;: wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Michalwiki/wikEd_international_hsb.js&#039;,&lt;br /&gt;
		&#039;vi&#039;:  wikEd.config.homeBaseUrl + &#039;w/index.php?action=raw&amp;amp;ctype=text/javascript&amp;amp;title=User:Vinhtantran/wikEd_international_vi.js&#039;&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Mediawiki page and skin detection, logo placement&lt;br /&gt;
if (wikEd.config.mediaWikiSkinIds === undefined) { wikEd.config.mediaWikiSkinIds = {}; }&lt;br /&gt;
&lt;br /&gt;
// wikEd.InitMediaWikiSkinIds: define Mediawiki page and skin detection, logo placement&lt;br /&gt;
//   format: skin name: [ dom element to add logo to (&#039;&#039;: top right), logo to this list or list contained in this parent element, rearrange page elements, [skin detection element id list], enable local preview / diff ],&lt;br /&gt;
wikEd.InitMediaWikiSkinIds = function () {&lt;br /&gt;
	wikEd.InitObject(wikEd.config.mediaWikiSkinIds, {&lt;br /&gt;
&lt;br /&gt;
		// monobook, also detects simple and myskin&lt;br /&gt;
		monobook:    [ &#039;p-personal&#039;, true, true, [&#039;column-content&#039;, &#039;content&#039;, &#039;bodyContent&#039;, &#039;siteSub&#039;, &#039;contentSub&#039;, &#039;column-one&#039;, &#039;p-cactions&#039;] ],&lt;br /&gt;
&lt;br /&gt;
		// vector (see https://bugzilla.wikimedia.org/show_bug.cgi?id=19527)&lt;br /&gt;
		vector_old:  [ &#039;personal&#039;, true, true, [&#039;content&#039;, &#039;bodyContent&#039;, &#039;contentSub&#039;, &#039;left-navigation&#039;, &#039;namespaces&#039;] ],&lt;br /&gt;
		vector_new:  [ &#039;p-personal&#039;, true, true, [&#039;content&#039;, &#039;bodyContent&#039;, &#039;contentSub&#039;, &#039;left-navigation&#039;, &#039;p-namespaces&#039;, &#039;p-cactions&#039;] ],&lt;br /&gt;
&lt;br /&gt;
		// citizendium.org&lt;br /&gt;
		pinkwich5:   [ &#039;p-personal&#039;, true, true, [&#039;column-content&#039;, &#039;content&#039;, &#039;bodycontent&#039;, &#039;sitesub&#039;, &#039;contentSub&#039;, &#039;column-one&#039;, &#039;p-cactions&#039;] ],&lt;br /&gt;
&lt;br /&gt;
		// other MediaWiki skins&lt;br /&gt;
		standard:    [ &#039;quickbar&#039;, false, true, [&#039;content&#039;, &#039;topbar&#039;, &#039;article&#039;, &#039;footer&#039;, &#039;pagestats&#039;] ],&lt;br /&gt;
		nostalgia:   [ &#039;topbar&#039;, false, true, [&#039;content&#039;, &#039;specialpages&#039;, &#039;article&#039;, &#039;footer&#039;] ],&lt;br /&gt;
		cologneblue: [ &#039;quickbar&#039;, false, true, [&#039;content&#039;, &#039;topbar&#039;, &#039;sitetitle&#039;, &#039;sitesub&#039;, &#039;article&#039;, &#039;footer&#039;] ],&lt;br /&gt;
		modern:      [ &#039;p-personal&#039;, true, true, [&#039;mw_header&#039;, &#039;mw_main&#039;, &#039;mw_contentwrapper&#039;] ],&lt;br /&gt;
&lt;br /&gt;
		// wikia.com&lt;br /&gt;
		monaco:      [ &#039;userData&#039;, false, false, [&#039;background_strip&#039;, &#039;siteSub&#039;, &#039;contentSub&#039;, &#039;monaco_footer&#039;] ],&lt;br /&gt;
		quartz:      [ &#039;welcome&#039;, false, true, [&#039;articleWrapper&#039;, &#039;bodyContent&#039;, &#039;siteSub&#039;, &#039;contentSub&#039;, &#039;sidebar&#039;] ],&lt;br /&gt;
		searchwikia: [ &#039;header-li-buttons&#039;, false, true, [&#039;header&#039;, &#039;header-container&#039;, &#039;header-go-button&#039;, &#039;article-container&#039;, &#039;article&#039;, &#039;article-text&#039;] ],&lt;br /&gt;
		oasis:       [ &#039;AccountNavigation&#039;, false, false, [&#039;WikiaHeader&#039;, &#039;WikiaPage&#039;], false ],&lt;br /&gt;
&lt;br /&gt;
		// custom skins developed on wiki.mozilla.org and developer.mozilla.org&lt;br /&gt;
		cavendish:   [ &#039;&#039;, false, true, [&#039;internal&#039;, &#039;container&#039;, &#039;header&#039;, &#039;contentTop&#039;, &#039;mBody&#039;, &#039;side&#039;, &#039;nav&#039;, &#039;siteSub&#039;, &#039;contentSub&#039;] ],&lt;br /&gt;
		devmo:       [ &#039;personal&#039;, false, true, [&#039;developer-mozilla-org&#039;, &#039;container&#039;, &#039;header&#039;, &#039;navigation&#039;, &#039;bar&#039;, &#039;page&#039;, &#039;sidebar&#039;, &#039;sidebarslideup&#039;, &#039;contentTop&#039;, &#039;siteSub&#039;, &#039;contentSub&#039;] ],&lt;br /&gt;
&lt;br /&gt;
		// custom skins&lt;br /&gt;
		gumaxdd:     [ &#039;gumax-p-login&#039;, true, true, [&#039;gumax-header&#039;, &#039;gumax-content-body&#039;] ],&lt;br /&gt;
		pixeled:     [ &#039;topright&#039;, true, true, [&#039;contentwrapper&#039;, &#039;catnav&#039;, &#039;morefoot&#039;] ],&lt;br /&gt;
&lt;br /&gt;
		// custom MediaWiki identifier&lt;br /&gt;
		mediawiki:   [ &#039;&#039;, false, false, [&#039;mediawiki&#039;] ]&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// end of user configurable variables&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InitGlobals: initialize non-configurable variables&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InitGlobals = function () {&lt;br /&gt;
&lt;br /&gt;
	// global variables&lt;br /&gt;
	wikEd.turnedOn = false;&lt;br /&gt;
	wikEd.disabled = true;&lt;br /&gt;
	wikEd.debugOpen = false;&lt;br /&gt;
	wikEd.pageNamespace = null;&lt;br /&gt;
	wikEd.frameLoaded = false;&lt;br /&gt;
&lt;br /&gt;
	// edit page types&lt;br /&gt;
	wikEd.editArticle = false;&lt;br /&gt;
	wikEd.editUpload = false;&lt;br /&gt;
	wikEd.editReadOnly = false;&lt;br /&gt;
	wikEd.editSemanticForm = false;&lt;br /&gt;
	wikEd.viewDeleted = false;&lt;br /&gt;
	wikEd.editWatchlist = false;&lt;br /&gt;
	wikEd.cssPage = false;&lt;br /&gt;
	wikEd.jsPage = false;&lt;br /&gt;
	wikEd.editSection = null;&lt;br /&gt;
&lt;br /&gt;
	// beta toolbar, CodeEditor&lt;br /&gt;
	wikEd.useBetaToolbar = false;&lt;br /&gt;
	wikEd.useCodeEditor = false;&lt;br /&gt;
	wikEd.codeEditorButtonPollCount = 0;&lt;br /&gt;
&lt;br /&gt;
	// history&lt;br /&gt;
	wikEd.fieldHist = [];&lt;br /&gt;
	wikEd.savedName = [];&lt;br /&gt;
	wikEd.inputElement = [];&lt;br /&gt;
	wikEd.selectElement = [];&lt;br /&gt;
&lt;br /&gt;
	wikEd.checkMarker = [];&lt;br /&gt;
	wikEd.checkMarker[true] = &#039;♦&#039;;&lt;br /&gt;
	wikEd.checkMarker[false] = &#039;◊&#039;;&lt;br /&gt;
&lt;br /&gt;
	// undo all, redo all&lt;br /&gt;
	wikEd.origVersion = &#039;&#039;;&lt;br /&gt;
	wikEd.lastVersion = null;&lt;br /&gt;
&lt;br /&gt;
	// global dom elements&lt;br /&gt;
	wikEd.logo = null;&lt;br /&gt;
	wikEd.logoList = null;&lt;br /&gt;
	wikEd.debug = null;&lt;br /&gt;
	wikEd.wikiEditor = null;&lt;br /&gt;
	wikEd.wikiEditorFrame = null;&lt;br /&gt;
	wikEd.wikiEditorTop = null;&lt;br /&gt;
	wikEd.wikiEditorLeft = null;&lt;br /&gt;
	wikEd.wikiEditorBar = null;&lt;br /&gt;
	wikEd.wikiEditorBottom = null;&lt;br /&gt;
	wikEd.wikiEditorText = null;&lt;br /&gt;
	wikEd.textareaContainer = null;&lt;br /&gt;
	wikEd.toolbar = null;&lt;br /&gt;
	wikEd.frameInner = null;&lt;br /&gt;
	wikEd.frameOuter = null;&lt;br /&gt;
	wikEd.frame = null;&lt;br /&gt;
	wikEd.frameDocument = null;&lt;br /&gt;
	wikEd.frameBody = null;&lt;br /&gt;
	wikEd.frameHtml = null;&lt;br /&gt;
	wikEd.frameWindow = null;&lt;br /&gt;
&lt;br /&gt;
	wikEd.inputWrapper = null;&lt;br /&gt;
	wikEd.editorWrapper = null;&lt;br /&gt;
	wikEd.toolbarWrapper = null;&lt;br /&gt;
	wikEd.buttonBarWrapper = null;&lt;br /&gt;
	wikEd.captchaWrapper = null;&lt;br /&gt;
	wikEd.debugWrapper = null;&lt;br /&gt;
	wikEd.editWrapper = null;&lt;br /&gt;
	wikEd.textareaWrapper = null;&lt;br /&gt;
	wikEd.frameWrapper = null;&lt;br /&gt;
	wikEd.consoleWrapper = null;&lt;br /&gt;
	wikEd.buttonsWrapper = null;&lt;br /&gt;
	wikEd.summaryWrapper = null;&lt;br /&gt;
	wikEd.consoleTopWrapper = null;&lt;br /&gt;
	wikEd.summaryInputWrapper = null;&lt;br /&gt;
	wikEd.editOptionsWrapper = null;&lt;br /&gt;
	wikEd.submitWrapper = null;&lt;br /&gt;
	wikEd.submitButtonsWrapper = null;&lt;br /&gt;
	wikEd.localPrevWrapper = null;&lt;br /&gt;
	wikEd.wikiPreview = null;&lt;br /&gt;
	wikEd.catLinks = null;&lt;br /&gt;
	wikEd.insertWrapper = null;&lt;br /&gt;
	wikEd.textBoxTable = null;&lt;br /&gt;
&lt;br /&gt;
	// edit form fields&lt;br /&gt;
	wikEd.editForm = null;&lt;br /&gt;
	wikEd.starttime = null;&lt;br /&gt;
	wikEd.edittime = null;&lt;br /&gt;
	wikEd.editToken = null;&lt;br /&gt;
	wikEd.autoSummary = null;&lt;br /&gt;
	wikEd.textarea = null;&lt;br /&gt;
&lt;br /&gt;
	wikEd.buttonsWrapperWidth = {};&lt;br /&gt;
	wikEd.buttonBarFormat = null;&lt;br /&gt;
	wikEd.buttonBarTextify = null;&lt;br /&gt;
	wikEd.buttonBarCustom1 = null;&lt;br /&gt;
	wikEd.buttonBarFind = null;&lt;br /&gt;
	wikEd.buttonBarFix = null;&lt;br /&gt;
	wikEd.buttonBarCustom2 = null;&lt;br /&gt;
	wikEd.buttonBarControl = null;&lt;br /&gt;
	wikEd.buttonBarPreview = null;&lt;br /&gt;
	wikEd.buttonBarPreview2 = null;&lt;br /&gt;
	wikEd.buttonBarJump = null;&lt;br /&gt;
	wikEd.buttonBarPasted = null;&lt;br /&gt;
	wikEd.previewArticle = null;&lt;br /&gt;
	wikEd.previewDiff = null;&lt;br /&gt;
	wikEd.clearSummary = null;&lt;br /&gt;
	wikEd.clearSummaryImg = null;&lt;br /&gt;
&lt;br /&gt;
	wikEd.caseSensitive = null;&lt;br /&gt;
	wikEd.regExp = null;&lt;br /&gt;
	wikEd.findAhead = null;&lt;br /&gt;
	wikEd.fixRegExTypo = null;&lt;br /&gt;
&lt;br /&gt;
	wikEd.findText = null;&lt;br /&gt;
	wikEd.replaceText = null;&lt;br /&gt;
	wikEd.summaryText = null;&lt;br /&gt;
	wikEd.summarySelect = null;&lt;br /&gt;
	wikEd.summaryTextWidth = null;&lt;br /&gt;
&lt;br /&gt;
	wikEd.editHelp = null;&lt;br /&gt;
	wikEd.saveButton = null;&lt;br /&gt;
	wikEd.previewButton = null;&lt;br /&gt;
	wikEd.lDiffButton = null;&lt;br /&gt;
	wikEd.diffPreviewButton = null;&lt;br /&gt;
	wikEd.summaryLabel = null;&lt;br /&gt;
&lt;br /&gt;
	wikEd.highlightNamedHideButtonsStylesheet = null;&lt;br /&gt;
&lt;br /&gt;
	// frame resizing&lt;br /&gt;
	wikEd.resizeGripWidth = 16;&lt;br /&gt;
	wikEd.resizeGripHeight = 16;&lt;br /&gt;
	wikEd.resizeFramePageYStart = 0;&lt;br /&gt;
	wikEd.resizeFramePageXStart = 0;&lt;br /&gt;
	wikEd.resizeFrameOffsetHeight = 0;&lt;br /&gt;
	wikEd.resizeFrameOffsetWidth = 0;&lt;br /&gt;
	wikEd.resizeFrameMouseOverGrip = false;&lt;br /&gt;
	wikEd.resizeFrameActive = false;&lt;br /&gt;
	wikEd.frameHeight = &#039;&#039;;&lt;br /&gt;
	wikEd.frameWidth = &#039;&#039;;&lt;br /&gt;
	wikEd.textareaHeight = &#039;&#039;;&lt;br /&gt;
	wikEd.textareaWidth = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// various&lt;br /&gt;
	wikEd.insertCounter = 0;&lt;br /&gt;
	wikEd.editButtonHandler = {};&lt;br /&gt;
	wikEd.textareaBorderHeight = 0;&lt;br /&gt;
	wikEd.frameBorderHeight = 0;&lt;br /&gt;
	wikEd.frameBorderWidth = 0;&lt;br /&gt;
	wikEd.textareaOffsetHeightInitial = 0;&lt;br /&gt;
	wikEd.clearSummaryWidth = null;&lt;br /&gt;
&lt;br /&gt;
	// fullscreen button state and actual fullscreen state&lt;br /&gt;
	wikEd.fullScreenMode = false;&lt;br /&gt;
	wikEd.fullscreen = false;&lt;br /&gt;
&lt;br /&gt;
	wikEd.addNewSection = null;&lt;br /&gt;
	wikEd.browserNotSupported = false;&lt;br /&gt;
	wikEd.frameScrollTop = null;&lt;br /&gt;
	wikEd.textareaUpdated = true;&lt;br /&gt;
	wikEd.previewIsAjax = null;&lt;br /&gt;
	wikEd.buttonKeyCode = [];&lt;br /&gt;
	wikEd.direction = null;&lt;br /&gt;
	wikEd.textSize = 0;&lt;br /&gt;
	wikEd.textSizeInit = 0;&lt;br /&gt;
	wikEd.previewPage = false;&lt;br /&gt;
	wikEd.clonedWarnings = false;&lt;br /&gt;
	wikEd.syntaxHighlightTagCSS = [];&lt;br /&gt;
	wikEd.loader = false;&lt;br /&gt;
	wikEd.wikibase = {};&lt;br /&gt;
	wikEd.keepSelRange = null;&lt;br /&gt;
&lt;br /&gt;
	// override site javascript functions&lt;br /&gt;
	wikEd.InsertTagsOriginal = null;&lt;br /&gt;
	wikEd.insertAtCursorOriginal = null;&lt;br /&gt;
&lt;br /&gt;
	// wikEd settings&lt;br /&gt;
	wikEd.refHide = false;&lt;br /&gt;
	wikEd.using = false;&lt;br /&gt;
	wikEd.closeToolbar = false;&lt;br /&gt;
	wikEd.highlightSyntax = false;&lt;br /&gt;
	wikEd.noSpellcheck = false;&lt;br /&gt;
	wikEd.diff = false;&lt;br /&gt;
	wikEd.tableMode = false;&lt;br /&gt;
	wikEd.cleanNodes = false;&lt;br /&gt;
	wikEd.readOnly = false;&lt;br /&gt;
&lt;br /&gt;
	// unicode fixing and char highlighting&lt;br /&gt;
	wikEd.supportedChars = null;&lt;br /&gt;
	wikEd.reservedChars = null;&lt;br /&gt;
	wikEd.specialChars = null;&lt;br /&gt;
	wikEd.problemChars = null;&lt;br /&gt;
&lt;br /&gt;
	wikEd.charEntitiesByName = {};&lt;br /&gt;
&lt;br /&gt;
	wikEd.controlCharHighlighting = null;&lt;br /&gt;
	wikEd.controlCharHighlightingStr = &#039;&#039;;&lt;br /&gt;
	wikEd.charHighlighting = null;&lt;br /&gt;
	wikEd.charHighlightingStr = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	wikEd.letters = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// linkification and hiding&lt;br /&gt;
	wikEd.wikiLinks = {};&lt;br /&gt;
	wikEd.referenceArray = [];&lt;br /&gt;
	wikEd.templateArray = [];&lt;br /&gt;
	wikEd.charEntityArray = [];&lt;br /&gt;
	wikEd.tableArray = [];&lt;br /&gt;
	wikEd.scheduledUnhide = null;&lt;br /&gt;
&lt;br /&gt;
	// RegExtypoFix rules&lt;br /&gt;
	wikEd.typoRulesFind = [];&lt;br /&gt;
	wikEd.typoRulesReplace = [];&lt;br /&gt;
&lt;br /&gt;
	// store link infos (normalizations, redirects, redlinks)&lt;br /&gt;
	wikEd.linkInfo = {};&lt;br /&gt;
	wikEd.externalLinkInfo = {};&lt;br /&gt;
&lt;br /&gt;
	// article preview: named reference definitions&lt;br /&gt;
	wikEd.namedRefs = {};&lt;br /&gt;
&lt;br /&gt;
	// file preview&lt;br /&gt;
	wikEd.filePreviewCache = {};&lt;br /&gt;
	wikEd.filePreviewRequest = &#039;&#039;;&lt;br /&gt;
	wikEd.filePreviewNo = 0;&lt;br /&gt;
	wikEd.filePreviewIds = [];&lt;br /&gt;
&lt;br /&gt;
	// debugging time measurement, usage: wikEd.debugTimer.push([1234, new Date]); wikEd.DebugTimer();&lt;br /&gt;
	wikEd.debugTimer = [];&lt;br /&gt;
&lt;br /&gt;
	// syntax highlighting&lt;br /&gt;
	wikEd.parseObj = {};&lt;br /&gt;
&lt;br /&gt;
	// MediaWiki file paths for use in regexps&lt;br /&gt;
	wikEd.server = &#039;&#039;;&lt;br /&gt;
	wikEd.articlePath = &#039;&#039;;&lt;br /&gt;
	wikEd.script = &#039;&#039;;&lt;br /&gt;
	wikEd.scriptPath = &#039;&#039;;&lt;br /&gt;
	wikEd.scriptName = &#039;&#039;;&lt;br /&gt;
	wikEd.scriptURL = &#039;&#039;;&lt;br /&gt;
	wikEd.useExternalApi = false;&lt;br /&gt;
&lt;br /&gt;
	// pasting object&lt;br /&gt;
	wikEd.paste = null;&lt;br /&gt;
&lt;br /&gt;
	// magic words and parser functions, see https://www.mediawiki.org/wiki/Help:Magic_words&lt;br /&gt;
	// __MAGICWORDS__&lt;br /&gt;
	wikEd.magicWords = &#039;NOTOC|FORCETOC|TOC|NOEDITSECTION|NEWSECTIONLINK|NOGALLERY|HIDDENCAT|NOCONTENTCONVERT|NOCC|NOTITLECONVERT|NOTC|END|START|NOINDEX|INDEX|STATICREDIRECT&#039;;&lt;br /&gt;
&lt;br /&gt;
	// template, parser function, and parser variable modifiers {{modifier:...}}&lt;br /&gt;
	// see https://meta.wikimedia.org/wiki/Help:Magic_words#Template_modifiers&lt;br /&gt;
	wikEd.templModifier = &#039;int|msg|msgnw|raw|subst&#039;;&lt;br /&gt;
&lt;br /&gt;
	// parser variables {{variable}}&lt;br /&gt;
	wikEd.parserVariables = &#039;CURRENTYEAR|CURRENTMONTH|CURRENTMONTHNAME|CURRENTMONTHNAMEGEN|CURRENTMONTHABBREV|CURRENTDAY|CURRENTDAY2|CURRENTDOW|CURRENTDAYNAME|CURRENTTIME|CURRENTHOUR|CURRENTWEEK|CURRENTTIMESTAMP|LOCALYEAR|LOCALMONTH|LOCALMONTHNAME|LOCALMONTHNAMEGEN|LOCALMONTHABBREV|LOCALDAY|LOCALDAY2|LOCALDOW|LOCALDAYNAME|LOCALTIME|LOCALHOUR|LOCALWEEK|LOCALTIMESTAMP|SITENAME|CURRENTVERSION|CONTENTLANGUAGE|REVISIONID|REVISIONDAY|REVISIONDAY2|REVISIONMONTH|REVISIONYEAR|REVISIONTIMESTAMP|SERVER|SERVERNAME|SCRIPTPATH|FULLPAGENAME|PAGENAME|BASEPAGENAME|SUBPAGENAME|SUBJECTPAGENAME|TALKPAGENAME|FULLPAGENAMEE|PAGENAMEE|BASEPAGENAMEE|SUBPAGENAMEE|SUBJECTPAGENAMEE|TALKPAGENAMEE|NAMESPACE|SUBJECTSPACE|ARTICLESPACE|TALKSPACE|NAMESPACEE|SUBJECTSPACEE|TALKSPACEE|DIRMARK|DIRECTIONMARK|PAGENAME|PAGENAMEE|ARTICLEPATH|NOEXTERNALLANGLINKS&#039;;&lt;br /&gt;
&lt;br /&gt;
	// parser variables {{variable:R}}&lt;br /&gt;
	wikEd.parserVariablesR = &#039;NUMBEROFPAGES|NUMBEROFARTICLES|NUMBEROFFILES|NUMBEROFEDITS|NUMBEROFUSERS|NUMBEROFADMINS|NUMBEROFVIEWS|NUMBEROFACTIVEUSERS|PROTECTIONLEVEL&#039;;&lt;br /&gt;
&lt;br /&gt;
	// parser functions {{FUNCTION:parameter|R}}&lt;br /&gt;
	wikEd.parserFunctionsR = &#039;NUMBERINGROUP|PAGESINNS|PAGESINNAMESPACE|PAGESINCATEGORY|PAGESINCAT|PAGESIZE|DEFAULTSORT|DISPLAYTITLE&#039;;&lt;br /&gt;
&lt;br /&gt;
	// parser functions {{function:param|param}}&lt;br /&gt;
	wikEd.parserFunctions = &#039;localurl|localurle|fullurl|filepath|fullurle|urlencode|urldecode|anchorencode|ns|lc|lcfirst|uc|ucfirst|formatnum|padleft|padright|padright|plural|grammar|gender|int|noexternallanglinks&#039;;&lt;br /&gt;
&lt;br /&gt;
	// parser functions {{#function:param|param}}&lt;br /&gt;
	wikEd.parserFunctionsHash = &#039;language|special|tag|tag|expr|if|ifeq|ifexist|ifexpr|switch|time|timel|rel2abs|titleparts|iferror|iferror|special|tag|categorytree|formatdate|property|invoke&#039;;&lt;br /&gt;
&lt;br /&gt;
	// define leaf elements for wikEd.GetInnerHTML&lt;br /&gt;
	wikEd.leafElements = {&lt;br /&gt;
		&#039;IMG&#039;:   true,&lt;br /&gt;
		&#039;HR&#039;:    true,&lt;br /&gt;
		&#039;BR&#039;:    true,&lt;br /&gt;
		&#039;INPUT&#039;: true&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// variables needed during startup, might be called multiple times&lt;br /&gt;
&lt;br /&gt;
// hash of loaded scripts, also defined in wikEdDiff.js&lt;br /&gt;
if (wikEd.externalScripts === undefined) { wikEd.externalScripts = null; }&lt;br /&gt;
if (wikEd.externalScriptsString === undefined) { wikEd.externalScriptsString = &#039;&#039;; }&lt;br /&gt;
if (wikEd.pageLoaded === undefined) { wikEd.pageLoaded = false; }&lt;br /&gt;
if (wikEd.programVersion === undefined) { wikEd.programVersion = &#039;&#039;; }&lt;br /&gt;
if (wikEd.programDate === undefined) { wikEd.programDate = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
// browser and os identificationr&lt;br /&gt;
if (wikEd.browserName === undefined) { wikEd.browserName = &#039;&#039;; }&lt;br /&gt;
if (wikEd.browserFlavor === undefined) { wikEd.browserFlavor = &#039;&#039;; }&lt;br /&gt;
if (wikEd.browserVersion === undefined) { wikEd.browserVersion = 0; }&lt;br /&gt;
if (wikEd.browserVersionStr === undefined) { wikEd.browserVersionStr = &#039;&#039;; }&lt;br /&gt;
if (wikEd.msie === undefined) { wikEd.msie = false; }&lt;br /&gt;
if (wikEd.mozilla === undefined) { wikEd.mozilla = false; }&lt;br /&gt;
if (wikEd.opera === undefined) { wikEd.opera = false; }&lt;br /&gt;
if (wikEd.safari === undefined) { wikEd.safari = false; }&lt;br /&gt;
if (wikEd.webkit === undefined) { wikEd.webkit = false; }&lt;br /&gt;
if (wikEd.chrome === undefined) { wikEd.chrome = false; }&lt;br /&gt;
if (wikEd.greasemonkey === undefined) { wikEd.greasemonkey = false; }&lt;br /&gt;
if (wikEd.testVersion === undefined) { wikEd.testVersion = false; }&lt;br /&gt;
if (wikEd.platform === undefined) { wikEd.platform = null; }&lt;br /&gt;
if (wikEd.installationType === undefined) { wikEd.installationType = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
// global variables for Greasemonkey&lt;br /&gt;
if (wikEd.wikiGlobals === undefined) { wikEd.wikiGlobals = {}; }&lt;br /&gt;
if (wikEd.text === undefined) { wikEd.text = {}; }&lt;br /&gt;
&lt;br /&gt;
// skins&lt;br /&gt;
if (wikEd.logoContainerId === undefined) { wikEd.logoContainerId = &#039;&#039;; }&lt;br /&gt;
if (wikEd.rearrange === undefined) { wikEd.rearrange = false; }&lt;br /&gt;
if (wikEd.logoToList === undefined) { wikEd.logoToList = false; }&lt;br /&gt;
if (wikEd.enableLocalPreview === undefined) { wikEd.enableLocalPreview = false; }&lt;br /&gt;
if (wikEd.skin === undefined) { wikEd.skin = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
// various&lt;br /&gt;
if (wikEd.gotGlobalsHook === undefined) { wikEd.gotGlobalsHook = []; }&lt;br /&gt;
if (wikEd.getGlobalsCounter === undefined) { wikEd.getGlobalsCounter = 0; }&lt;br /&gt;
if (wikEd.loadingTranslation === undefined) { wikEd.loadingTranslation = false; }&lt;br /&gt;
if (wikEd.webStorage === undefined) { wikEd.webStorage = null; }&lt;br /&gt;
&lt;br /&gt;
// customization&lt;br /&gt;
if (wikEd.useWikEd === undefined) { wikEd.useWikEd = false; }&lt;br /&gt;
if (wikEd.wikEdTextAdded === undefined) { wikEd.wikEdTextAdded = false; }&lt;br /&gt;
if (wikEd.wikEdConfigAdded === undefined) { wikEd.wikEdConfigAdded = false; }&lt;br /&gt;
&lt;br /&gt;
// global dom elements, also defined in wikEdDiff.js&lt;br /&gt;
if (wikEd.pageOrigin === undefined) { wikEd.pageOrigin = &#039;&#039;; }&lt;br /&gt;
if (wikEd.head === undefined) { wikEd.head = null; }&lt;br /&gt;
&lt;br /&gt;
// also defined in wikEdDiff.js&lt;br /&gt;
if (wikEd.pageName === undefined) { wikEd.pageName = null; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InitObject: initialize object, keep pre-defined values (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InitObject = function (target, source, showMissing) {&lt;br /&gt;
&lt;br /&gt;
	if (typeof target == &#039;object&#039;) {&lt;br /&gt;
		for (var key in source) {&lt;br /&gt;
			if (typeof target[key] == &#039;undefined&#039;) {&lt;br /&gt;
				target[key] = source[key];&lt;br /&gt;
&lt;br /&gt;
				// show missing array entries&lt;br /&gt;
				if (showMissing === true)  {&lt;br /&gt;
					if (typeof target[key] == &#039;string&#039;) {&lt;br /&gt;
						wikEd.config.debugStartUp += &#039;\t\t\t\&#039;&#039; + key + &#039;\&#039;: \&#039;&#039; + target[key].replace(/\n/g, &#039;\\n&#039;) + &#039;\&#039;,\n&#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AddToObject: add or replace properties, replace existing values (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AddToObject = function (target, source, priority) {&lt;br /&gt;
&lt;br /&gt;
	if (priority === undefined) {&lt;br /&gt;
		priority = {};&lt;br /&gt;
	}&lt;br /&gt;
	if (typeof target == &#039;object&#039;) {&lt;br /&gt;
		for (var key in source) {&lt;br /&gt;
			if (priority[key] !== undefined) {&lt;br /&gt;
				target[key] = priority[key];&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				target[key] = source[key];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InitImage: initialize images, keep pre-defined values (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InitImage = function (target, source) {&lt;br /&gt;
&lt;br /&gt;
	var server = window.location.href.replace(/^(\w+:\/\/.*?)\/.*/, &#039;$1&#039;);&lt;br /&gt;
	var protocol = server.replace(/^(\w+:)\/\/.*/, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	for (var key in source) {&lt;br /&gt;
		if (typeof target[key] == &#039;undefined&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// remove MediaWiki path prefixes and add local path&lt;br /&gt;
			if (wikEd.config.useLocalImages === true) {&lt;br /&gt;
				target[key] = wikEd.config.imagePathLocal + source[key].replace(/^[0-9a-f]+\/[0-9a-f]+\/()/, &#039;&#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add path&lt;br /&gt;
			else {&lt;br /&gt;
				target[key] = wikEd.config.imagePath + source[key];&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Chrome 33.0.1750.146 m bug, not displaying frame html background image without complete URL&lt;br /&gt;
			if (/^\/\//.test(target[key]) === true) {&lt;br /&gt;
				target[key] = protocol + target[key];&lt;br /&gt;
			}&lt;br /&gt;
			else if (/^\//.test(target[key]) === true) {&lt;br /&gt;
				target[key] = server + target[key];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.Startup: wikEd startup code, called during page load&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.Startup = function () {&lt;br /&gt;
&lt;br /&gt;
	// redirect WED shortcut to wikEd.Debug(objectName, object, popup)&lt;br /&gt;
	window.WED = wikEd.Debug;&lt;br /&gt;
&lt;br /&gt;
	// extract version info from wikEd.Meta()&lt;br /&gt;
	var meta = wikEd.Meta.toString();&lt;br /&gt;
	var regExpMatchVersion =	/@version\s+(.*?)[ \t]*\n/.exec(meta);&lt;br /&gt;
	if ( (regExpMatchVersion !== null) &amp;amp;&amp;amp; (regExpMatchVersion[1] !== null) ) {&lt;br /&gt;
		wikEd.programVersion = regExpMatchVersion[1];&lt;br /&gt;
	}&lt;br /&gt;
	var regExpMatchDate = /@date\s+(.*?)[ \t]*\n/.exec(meta);&lt;br /&gt;
	if ( (regExpMatchDate !== null) &amp;amp;&amp;amp; (regExpMatchDate[1] !== null) ) {&lt;br /&gt;
		wikEd.programDate = regExpMatchDate[1];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// MediaWiki pages always have their title set, filter out Greasemonkey running on created iframes&lt;br /&gt;
	if (document.title === &#039;&#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check if wikEd has already started up&lt;br /&gt;
	if (document.getElementsByName(&#039;wikEdStartupFlag&#039;)[0] !== undefined) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// define current window head&lt;br /&gt;
	wikEd.head = document.getElementsByTagName(&#039;head&#039;)[0] || null;&lt;br /&gt;
&lt;br /&gt;
	// set startup flag&lt;br /&gt;
	var flag = document.createElement(&#039;meta&#039;);&lt;br /&gt;
	flag.setAttribute(&#039;name&#039;, &#039;wikEdStartupFlag&#039;);&lt;br /&gt;
	wikEd.head.appendChild(flag);&lt;br /&gt;
&lt;br /&gt;
	// get site of origin (window.location.href is about:blank if Firefox during page load)&lt;br /&gt;
	var origin = wikEd.head.baseURI;&lt;br /&gt;
	if (origin === undefined) {&lt;br /&gt;
		origin = window.location.toString();&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.pageOrigin = origin.replace(/^((https?|file):\/\/[^\/?#]*)?.*$/, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// check browser and version&lt;br /&gt;
	var regExpMatchAgent = window.navigator.userAgent.match(/\b(Firefox|Netscape|SeaMonkey|IceWeasel|IceCat|Fennec|Minefield|BonEcho|GranParadiso|Shiretoko|Namoroka)\W+(\d+\.\d+)/i);&lt;br /&gt;
	if (regExpMatchAgent !== null) {&lt;br /&gt;
		wikEd.browserName = &#039;Mozilla&#039;;&lt;br /&gt;
		wikEd.browserFlavor = regExpMatchAgent[1];&lt;br /&gt;
		wikEd.browserVersion = parseFloat(regExpMatchAgent[2]);&lt;br /&gt;
		wikEd.mozilla = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check for MSIE&lt;br /&gt;
	else {&lt;br /&gt;
		regExpMatchAgent = window.navigator.userAgent.match(/(MSIE)\W+(\d+\.\d+)/i);&lt;br /&gt;
		if (regExpMatchAgent !== null) {&lt;br /&gt;
			wikEd.browserName = &#039;MSIE&#039;;&lt;br /&gt;
			wikEd.browserVersion = parseFloat(regExpMatchAgent[2]);&lt;br /&gt;
			wikEd.msie = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// check for Opera &amp;lt;= version 12 (Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14)&lt;br /&gt;
		else {&lt;br /&gt;
			regExpMatchAgent = window.navigator.userAgent.match(/\b(Opera)\W+(\d+\.\d+)/i);&lt;br /&gt;
			if (regExpMatchAgent !== null) {&lt;br /&gt;
				wikEd.browserName = &#039;Opera&#039;;&lt;br /&gt;
				wikEd.browserVersion = parseFloat(regExpMatchAgent[2]);&lt;br /&gt;
				if (wikEd.browserVersion == 9.80) {&lt;br /&gt;
					var versionMatch = window.navigator.userAgent.match(/(Version)\W+(\d+\.\d+)/i);&lt;br /&gt;
					if (versionMatch !== null) {&lt;br /&gt;
						wikEd.browserVersion = parseFloat(regExpMatchAgent[2]);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.opera = true;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// check for Opera &amp;gt;= version 15 (Mozilla/5.0 (Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.100)&lt;br /&gt;
			else {&lt;br /&gt;
				regExpMatchAgent = window.navigator.userAgent.match(/\b(OPR)\W+(\d+\.\d+)/i);&lt;br /&gt;
				if (regExpMatchAgent !== null) {&lt;br /&gt;
					wikEd.browserName = &#039;Opera&#039;;&lt;br /&gt;
					wikEd.browserVersion = parseFloat(regExpMatchAgent[2]);&lt;br /&gt;
					wikEd.opera = true;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// check for Google Chrome (AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13)&lt;br /&gt;
				else {&lt;br /&gt;
					regExpMatchAgent = window.navigator.userAgent.match(/\b(Chrome)\W+(\d+\.\d+)(\S+)/i);&lt;br /&gt;
					if (regExpMatchAgent !== null) {&lt;br /&gt;
						wikEd.browserName = &#039;Chrome&#039;;&lt;br /&gt;
						wikEd.browserVersion = parseFloat(regExpMatchAgent[2]);&lt;br /&gt;
						wikEd.browserVersionStr = regExpMatchAgent[ 2 ] + regExpMatchAgent[ 3 ];&lt;br /&gt;
						wikEd.chrome = true;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// check for Safari&lt;br /&gt;
					else {&lt;br /&gt;
						regExpMatchAgent = window.navigator.userAgent.match(/\b(Safari)\W+(\d+\.\d+)/i);&lt;br /&gt;
						if (regExpMatchAgent !== null) {&lt;br /&gt;
							wikEd.browserName = &#039;Safari&#039;;&lt;br /&gt;
							wikEd.browserVersion = parseFloat(regExpMatchAgent[2]);&lt;br /&gt;
							wikEd.safari = true;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// check for other WebKit&lt;br /&gt;
						else {&lt;br /&gt;
							regExpMatchAgent = window.navigator.userAgent.match(/\b(WebKit)(GTK\+)?\W+(\d+\.\d+)/i);&lt;br /&gt;
							if (regExpMatchAgent !== null) {&lt;br /&gt;
								wikEd.browserName = &#039;WebKit&#039;;&lt;br /&gt;
								wikEd.browserVersion = parseFloat(regExpMatchAgent[3]);&lt;br /&gt;
								wikEd.webkit = true;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check OS&lt;br /&gt;
	var regExpMatchOS = window.navigator.platform.match(/^(win|mac|unix|linux)/i);&lt;br /&gt;
	if (regExpMatchOS !== null) {&lt;br /&gt;
		wikEd.platform = regExpMatchOS[1].toLowerCase();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// import customization (try now again after page load for user/skin.js)&lt;br /&gt;
	if ( (wikEdConfig !== undefined) &amp;amp;&amp;amp; (wikEd.wikEdConfigAdded === false) ) {&lt;br /&gt;
		wikEd.AddToObject(wikEd.config, wikEdConfig);&lt;br /&gt;
		wikEd.wikEdConfigAdded = true;&lt;br /&gt;
	}&lt;br /&gt;
	if ( (wikEdText !== undefined) &amp;amp;&amp;amp; (wikEd.wikEdTextAdded === false) ) {&lt;br /&gt;
		wikEd.AddToObject(wikEd.text, wikEdText, wikEd.config.text);&lt;br /&gt;
		wikEd.wikEdTextAdded = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// compatibility fixes for older customizations and wikEd-compatibilizations in other scripts&lt;br /&gt;
	window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
	window.WikEdUpdateTextarea = wikEd.UpdateTextarea;&lt;br /&gt;
	window.WikEdUpdateFrame = wikEd.UpdateFrame;&lt;br /&gt;
	window.WikEdGetText = wikEd.GetText;&lt;br /&gt;
	window.WikEdEditButton = wikEd.EditButton;&lt;br /&gt;
&lt;br /&gt;
	// check if this runs under Greasemonkey&lt;br /&gt;
	if (typeof GM_info == &#039;object&#039;) {&lt;br /&gt;
		wikEd.greasemonkey = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// parse global-context (MediaWiki) variables into hash (for Greasemonkey)&lt;br /&gt;
	var globalNames = [&#039;skin&#039;, &#039;wgServer&#039;, &#039;wgTitle&#039;, &#039;wgCanonicalNamespace&#039;, &#039;wgArticlePath&#039;, &#039;wgScript&#039;, &#039;wgScriptPath&#039;, &#039;wgUserName&#039;, &#039;wgCurRevisionId&#039;, &#039;wgContentLanguage&#039;, &#039;wgUserLanguage&#039;, &#039;wgEnableAPI&#039;, &#039;wgPageName&#039;, &#039;wgNamespaceIds&#039;, &#039;wgFormattedNamespaces&#039;, &#039;wgUseAutomaticEditSummaries&#039;, &#039;wgVersion&#039;, &#039;wgPageContentModel&#039;];&lt;br /&gt;
	if (wikEd.greasemonkey === true) {&lt;br /&gt;
		globalNames.push(&#039;wikEdConfig&#039;, &#039;wikEdText&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// copy custom config settings and text after values have arrived&lt;br /&gt;
	var gotGlobalsHook = [&lt;br /&gt;
		function() {&lt;br /&gt;
			if ( (typeof wikEd.wikiGlobals.wikEdConfig == &#039;object&#039;) &amp;amp;&amp;amp; (wikEd.wikEdConfigAdded === false) ) {&lt;br /&gt;
				wikEd.AddToObject(wikEd.config, wikEd.wikiGlobals.wikEdConfig);&lt;br /&gt;
				wikEd.wikEdConfigAdded = true;&lt;br /&gt;
			}&lt;br /&gt;
			if ( (typeof wikEd.wikiGlobals.wikEdText == &#039;object&#039;) &amp;amp;&amp;amp; (wikEd.wikEdTextAdded === false) ) {&lt;br /&gt;
				wikEd.AddToObject(wikEd.text, wikEd.wikiGlobals.wikEdText, wikEd.config.text);&lt;br /&gt;
				wikEd.wikEdTextAdded = true;&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	// and load translations when done&lt;br /&gt;
	if ( (wikEd.config.loadTranslation === true) &amp;amp;&amp;amp; (wikEd.loadingTranslation === false) ) {&lt;br /&gt;
		gotGlobalsHook.push(wikEd.LoadTranslations);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set listener for GetGlobals messaging&lt;br /&gt;
	window.addEventListener(&#039;message&#039;, wikEd.GetGlobalsReceiver, false);&lt;br /&gt;
&lt;br /&gt;
	// parse globals (asynchronous)&lt;br /&gt;
	wikEd.GetGlobals(globalNames, gotGlobalsHook);&lt;br /&gt;
&lt;br /&gt;
	// schedule the setup routine; readyState interactive gives GM security error&lt;br /&gt;
	if (document.readyState == &#039;complete&#039;) {&lt;br /&gt;
		wikEd.Setup();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// with DOMContentLoaded event wikEd does not load for first (uncached) section edit&lt;br /&gt;
	else {&lt;br /&gt;
		window.addEventListener(&#039;load&#039;, wikEd.Setup, false);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LoadTranslations: load external wikEd translation and language settings&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LoadTranslations = function () {&lt;br /&gt;
&lt;br /&gt;
	if ( (wikEd.config.loadTranslation === true) &amp;amp;&amp;amp; (wikEd.loadingTranslation === false) ) {&lt;br /&gt;
		var contentLang = wikEd.wikiGlobals.wgContentLanguage || &#039;&#039;;&lt;br /&gt;
		var userLang = wikEd.wikiGlobals.wgUserLanguage || &#039;&#039;;&lt;br /&gt;
		if ( (wikEd.config.languageDefault !== &#039;&#039;) || (userLang !== &#039;&#039;) || (contentLang !== &#039;&#039;) ) {&lt;br /&gt;
&lt;br /&gt;
			// simplified Chinese&lt;br /&gt;
			if (contentLang == &#039;zh&#039;) {&lt;br /&gt;
				contentLang = &#039;zh-hans&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			if ( (userLang == &#039;zh&#039;) || (userLang == &#039;zh-cn&#039;) || (userLang == &#039;zh-sg&#039;) ) {&lt;br /&gt;
				userLang = &#039;zh-hans&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// traditional Chinese&lt;br /&gt;
			else if ( (userLang == &#039;zh-hk&#039;) || (userLang == &#039;zh-tw&#039;) ) {&lt;br /&gt;
				userLang = &#039;zh-hant&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			wikEd.InitTranslations();&lt;br /&gt;
			var scriptUrl = wikEd.config.translations[wikEd.config.languageDefault] || &#039;&#039;;&lt;br /&gt;
			if (scriptUrl === &#039;&#039;) {&lt;br /&gt;
				scriptUrl = wikEd.config.translations[userLang] || &#039;&#039;;&lt;br /&gt;
				if (scriptUrl === &#039;&#039;) {&lt;br /&gt;
					scriptUrl = wikEd.config.translations[contentLang] || &#039;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (scriptUrl !== &#039;&#039;) {&lt;br /&gt;
				wikEd.AppendScript(scriptUrl, function () {&lt;br /&gt;
&lt;br /&gt;
					// copy custom text after values have arrived&lt;br /&gt;
					var gotGlobalsHook = function () {&lt;br /&gt;
						wikEd.AddToObject(wikEd.text, wikEd.wikiGlobals.wikEdText, wikEd.config.text);&lt;br /&gt;
						return;&lt;br /&gt;
					};&lt;br /&gt;
&lt;br /&gt;
					// parse globals (asynchronous)&lt;br /&gt;
					wikEd.GetGlobals([&#039;wikEdText&#039;], [gotGlobalsHook]);&lt;br /&gt;
					wikEd.loadingTranslation = true;&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.Setup: basic setup routine, scheduled after DOM or page load&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.Setup = function () {&lt;br /&gt;
&lt;br /&gt;
	document.removeEventListener(&#039;DOMContentLoaded&#039;, wikEd.Setup, false);&lt;br /&gt;
&lt;br /&gt;
	window.removeEventListener(&#039;load&#039;, wikEd.Setup, false);&lt;br /&gt;
&lt;br /&gt;
	// check if wikEd has already set up&lt;br /&gt;
	if (document.getElementsByName(&#039;wikEdSetupFlag&#039;)[0] !== undefined) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set setup flag&lt;br /&gt;
	var flag = document.createElement(&#039;meta&#039;);&lt;br /&gt;
	flag.setAttribute(&#039;name&#039;, &#039;wikEdSetupFlag&#039;);&lt;br /&gt;
	wikEd.head.appendChild(flag);&lt;br /&gt;
&lt;br /&gt;
	// import customization (try later again after page load for user/skin.js)&lt;br /&gt;
	if ( (typeof wikEdConfig == &#039;object&#039;) &amp;amp;&amp;amp; (wikEd.wikEdConfigAdded === false) ) {&lt;br /&gt;
		wikEd.AddToObject(wikEd.config, wikEdConfig);&lt;br /&gt;
		wikEd.wikEdConfigAdded = true;&lt;br /&gt;
	}&lt;br /&gt;
	if ( (typeof wikEdText == &#039;object&#039;) &amp;amp;&amp;amp; (wikEd.wikEdTextAdded === false) ) {&lt;br /&gt;
		wikEd.AddToObject(wikEd.text, wikEdText, wikEd.config.text);&lt;br /&gt;
		wikEd.wikEdTextAdded = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect already loaded external scripts&lt;br /&gt;
	if (wikEd.externalScripts === null) {&lt;br /&gt;
		wikEd.externalScripts = [];&lt;br /&gt;
		var pageScripts = document.getElementsByTagName(&#039;script&#039;);&lt;br /&gt;
		for (var i = 0; i &amp;lt; pageScripts.length; i ++) {&lt;br /&gt;
			var scriptSrc = pageScripts[i].src;&lt;br /&gt;
			var regExpMatchName = scriptSrc.match(/\btitle=([^&amp;amp;]*)/);&lt;br /&gt;
			if (regExpMatchName === null) {&lt;br /&gt;
				regExpMatchName = scriptSrc.match(/\/([^\/]*?)($|\?)/);&lt;br /&gt;
			}&lt;br /&gt;
			if (regExpMatchName !== null) {&lt;br /&gt;
				var scriptName = regExpMatchName[1] || &#039;&#039;;&lt;br /&gt;
				if (scriptName !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
					// ignore other diff.js scripts&lt;br /&gt;
					if ( (scriptName == &#039;diff.js&#039;) &amp;amp;&amp;amp; (scriptSrc != wikEd.config.diffScriptSrc) ) {&lt;br /&gt;
						continue;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// ignore resource loader&lt;br /&gt;
					if (scriptName == &#039;load.php&#039;) {&lt;br /&gt;
						continue;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					wikEd.externalScripts[scriptName] = pageScripts[i];&lt;br /&gt;
					wikEd.externalScriptsString += scriptName + &#039;\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect developer version&lt;br /&gt;
	if (wikEd.externalScripts[&#039;wikEd_dev.js&#039;] !== undefined) {&lt;br /&gt;
		wikEd.testVersion = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// exit if executed as Greasemonkey script if wiki user script is available&lt;br /&gt;
	if (typeof GM_getValue == &#039;function&#039;) {&lt;br /&gt;
		if (wikEd.externalScripts[&#039;wikEd.js&#039;] !== undefined) {&lt;br /&gt;
			wikEd.greasemonkey = false;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.greasemonkey = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect wikEd running as a gadget&lt;br /&gt;
	if (wikEd.config.gadget === null) {&lt;br /&gt;
		if (wikEd.externalScripts[&#039;MediaWiki:Gadget-wikEd.js&#039;] !== undefined) {&lt;br /&gt;
			wikEd.config.gadget = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set installation type&lt;br /&gt;
	if (wikEd.config.gadget === true) {&lt;br /&gt;
		wikEd.installationType += &#039; G&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.greasemonkey === true) {&lt;br /&gt;
		wikEd.installationType += &#039; GM&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect MediaWiki page and its skin&lt;br /&gt;
	wikEd.InitMediaWikiSkinIds();&lt;br /&gt;
	for (var skin in wikEd.config.mediaWikiSkinIds) {&lt;br /&gt;
		if (Object.prototype.hasOwnProperty.call(wikEd.config.mediaWikiSkinIds, skin) === true) {&lt;br /&gt;
			var logoContainerId = wikEd.config.mediaWikiSkinIds[skin][0];&lt;br /&gt;
			var logoToList = wikEd.config.mediaWikiSkinIds[skin][1];&lt;br /&gt;
			var rearrange = wikEd.config.mediaWikiSkinIds[skin][2];&lt;br /&gt;
			var skinIds = wikEd.config.mediaWikiSkinIds[skin][3];&lt;br /&gt;
			var enableLocalPreview = wikEd.config.mediaWikiSkinIds[skin][4];&lt;br /&gt;
			for (var i = 0; i &amp;lt; skinIds.length; i ++) {&lt;br /&gt;
				if (document.getElementById(skinIds[i]) === null) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (i == skinIds.length) {&lt;br /&gt;
				wikEd.logoContainerId = logoContainerId;&lt;br /&gt;
				wikEd.skin = skin;&lt;br /&gt;
				wikEd.rearrange = rearrange;&lt;br /&gt;
				wikEd.logoToList = logoToList;&lt;br /&gt;
				wikEd.enableLocalPreview = enableLocalPreview;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// not a MediaWiki page&lt;br /&gt;
	if (wikEd.skin === &#039;&#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// initialize user configurable variables&lt;br /&gt;
	wikEd.InitGlobalConfigs();&lt;br /&gt;
&lt;br /&gt;
	// import custom text and translations&lt;br /&gt;
	wikEd.AddToObject(wikEd.config.text, wikEd.text);&lt;br /&gt;
&lt;br /&gt;
	// do not rearrange page elements&lt;br /&gt;
	if (wikEd.config.noRearrange !== false) {&lt;br /&gt;
		wikEd.rearrange = false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// initialize non-configurable variables&lt;br /&gt;
	wikEd.InitGlobals();&lt;br /&gt;
&lt;br /&gt;
	// check for updates&lt;br /&gt;
	wikEd.AutoUpdate();&lt;br /&gt;
&lt;br /&gt;
	// initialize images (needed here for logo)&lt;br /&gt;
	wikEd.InitImages();&lt;br /&gt;
&lt;br /&gt;
	// load css for edit and non-edit pages&lt;br /&gt;
	wikEd.InitMainCSS();&lt;br /&gt;
&lt;br /&gt;
	// add stylesheet definitions&lt;br /&gt;
	wikEd.ApplyCSS(document, wikEd.config.mainCSS);&lt;br /&gt;
&lt;br /&gt;
	// add image path to image filename&lt;br /&gt;
	if (wikEd.logo === null) {&lt;br /&gt;
&lt;br /&gt;
		// create logo&lt;br /&gt;
		wikEd.logo = document.createElement(&#039;img&#039;);&lt;br /&gt;
		wikEd.logo.id = &#039;wikEdLogoImg&#039;;&lt;br /&gt;
&lt;br /&gt;
		// insert logo into page&lt;br /&gt;
		var logoContainer;&lt;br /&gt;
		if (wikEd.logoContainerId !== &#039;&#039;) {&lt;br /&gt;
			logoContainer = document.getElementById(wikEd.logoContainerId);&lt;br /&gt;
		}&lt;br /&gt;
		if (logoContainer !== null) {&lt;br /&gt;
&lt;br /&gt;
			// logo as last element of specified list (e.g. monobook, simple, myskin, gumax)&lt;br /&gt;
			if (wikEd.logoToList === true) {&lt;br /&gt;
				wikEd.logoList = document.createElement(&#039;li&#039;);&lt;br /&gt;
				wikEd.logoList.id = &#039;wikEdLogoList&#039;;&lt;br /&gt;
				wikEd.logoList.className = &#039;wikEdLogoList&#039;;&lt;br /&gt;
				wikEd.logoList.appendChild(wikEd.logo);&lt;br /&gt;
				var list;&lt;br /&gt;
				if (logoContainer.tagName == &#039;UL&#039;) {&lt;br /&gt;
					list = logoContainer;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					list = logoContainer.getElementsByTagName(&#039;ul&#039;)[0];&lt;br /&gt;
				}&lt;br /&gt;
				if (list !== undefined) {&lt;br /&gt;
					list.appendChild(wikEd.logoList);&lt;br /&gt;
					wikEd.logo.className = &#039;wikEdLogo&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// logo as last child of specified element&lt;br /&gt;
			else {&lt;br /&gt;
				logoContainer.appendChild(wikEd.logo);&lt;br /&gt;
				wikEd.logo.className = &#039;wikEdLogo&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// logo as first page element, fallback for undetected skin&lt;br /&gt;
		if (wikEd.logo.className === &#039;&#039;) {&lt;br /&gt;
			document.body.insertBefore(wikEd.logo, document.body.firstChild);&lt;br /&gt;
			wikEd.logo.className = &#039;wikEdLogoFallBack&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add event listeners to logo&lt;br /&gt;
		wikEd.logo.addEventListener(&#039;click&#039;, wikEd.MainSwitch, true);&lt;br /&gt;
		wikEd.logo.addEventListener(&#039;click&#039;, wikEd.DebugInfo, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// page loaded flag for dynamically loaded scripts&lt;br /&gt;
	wikEd.pageLoaded = true;&lt;br /&gt;
&lt;br /&gt;
	// load the external wikEd diff library script if not already done&lt;br /&gt;
	if ( (wikEd.config.loadDiffScript === true) &amp;amp;&amp;amp; (wikEd.externalScripts[&#039;diff.js&#039;] === undefined) ) {&lt;br /&gt;
		if (WikEdDiff === undefined) {&lt;br /&gt;
			var sep = &#039;&amp;amp;&#039;;&lt;br /&gt;
			if (wikEd.config.diffScriptSrc.indexOf(&#039;?&#039;) == -1) {&lt;br /&gt;
				sep = &#039;?&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.externalScripts[&#039;diff.js&#039;] = wikEd.AppendScript(wikEd.config.diffScriptSrc + sep + wikEd.programVersion);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// load the external wikEdDiff script if not already done&lt;br /&gt;
	if ( (wikEd.config.loadDiff === true) &amp;amp;&amp;amp; (wikEd.externalScripts[&#039;wikEdDiff.js&#039;] === undefined) ) {&lt;br /&gt;
		if (wikEd.Diff === undefined) {&lt;br /&gt;
			var sep = &#039;&amp;amp;&#039;;&lt;br /&gt;
			if (wikEd.config.diffSrc.indexOf(&#039;?&#039;) == -1) {&lt;br /&gt;
				sep = &#039;?&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.externalScripts[&#039;wikEdDiff.js&#039;] = wikEd.AppendScript(wikEd.config.diffSrc + sep + wikEd.programVersion);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// init syntax highlighting regExp object&lt;br /&gt;
	wikEd.HighlightSyntaxInit();&lt;br /&gt;
&lt;br /&gt;
	// check if disabled&lt;br /&gt;
	wikEd.disabled = wikEd.GetSavedSetting(&#039;wikEdDisabled&#039;, wikEd.config.disabledPreset);&lt;br /&gt;
	if (wikEd.disabled === true) {&lt;br /&gt;
		wikEd.useWikEd = false;&lt;br /&gt;
		window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
		wikEd.SetLogo();&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// location search string function: put all used images and icons on an empty page&lt;br /&gt;
	if (/(\?|&amp;amp;)wikEd=iconPage\b/i.test(window.location.search) === true) {&lt;br /&gt;
		var str = wikEd.config.text.iconPage;&lt;br /&gt;
		for (var imageKey in wikEd.config.image) {&lt;br /&gt;
			if (Object.prototype.hasOwnProperty.call(wikEd.config.image, imageKey) === true) {&lt;br /&gt;
				var imageAddress = wikEd.config.image[imageKey];&lt;br /&gt;
				if (typeof imageAddress == &#039;string&#039;) {&lt;br /&gt;
					str += &#039;&amp;lt;img src=&amp;quot;&#039; + imageAddress + &#039;&amp;quot;&amp;gt; &#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		document.body.innerHTML = str;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// continue setup&lt;br /&gt;
	wikEd.TurnOn(true);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.TurnOn: continue setup, can be called repeatedly&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.TurnOn = function (scrollToEditFocus) {&lt;br /&gt;
&lt;br /&gt;
	// check if setup was already run&lt;br /&gt;
	if (wikEd.turnedOn === true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set error logo&lt;br /&gt;
	wikEd.SetLogo(&#039;error&#039;);&lt;br /&gt;
&lt;br /&gt;
	// check for active code editor and .js or .css page&lt;br /&gt;
	wikEd.CodeEditorCheck();&lt;br /&gt;
&lt;br /&gt;
	// no id, no wikEd&lt;br /&gt;
	if (window.navigator.appName === null) {&lt;br /&gt;
		wikEd.browserNotSupported = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check browser versions&lt;br /&gt;
	switch (wikEd.browserName) {&lt;br /&gt;
&lt;br /&gt;
		// check Mozilla version&lt;br /&gt;
		case &#039;Mozilla&#039;:&lt;br /&gt;
			if (&lt;br /&gt;
				(wikEd.browserFlavor == &#039;Firefox&#039;) &amp;amp;&amp;amp; (wikEd.browserVersion &amp;lt; 1.5) ||&lt;br /&gt;
				(wikEd.browserFlavor == &#039;Netscape&#039;) &amp;amp;&amp;amp; (wikEd.browserVersion &amp;lt; 8.0) ||&lt;br /&gt;
				(wikEd.browserFlavor == &#039;SeaMonkey&#039;) &amp;amp;&amp;amp; (wikEd.browserVersion &amp;lt; 1.0)&lt;br /&gt;
			) {&lt;br /&gt;
				wikEd.browserNotSupported = true;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// check MSIE version&lt;br /&gt;
		case &#039;MSIE&#039;:&lt;br /&gt;
			wikEd.browserNotSupported = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// check Opera version&lt;br /&gt;
		case &#039;Opera&#039;:&lt;br /&gt;
			if (wikEd.browserVersion &amp;lt; 15) {&lt;br /&gt;
&lt;br /&gt;
				// too buggy (inserthtml, parentNode...)&lt;br /&gt;
				wikEd.browserNotSupported = true;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// check Google Chrome version&lt;br /&gt;
		case &#039;Chrome&#039;:&lt;br /&gt;
			if (wikEd.browserVersion &amp;lt; 0.2) {&lt;br /&gt;
				wikEd.browserNotSupported = true;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Chrome bug https://code.google.com/p/chromium/issues/detail?id=528382, version 45.0.2454.85 - 45.0.2454.93&lt;br /&gt;
			else if (wikEd.browserVersion == 45) {&lt;br /&gt;
				var regExpMatch = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.exec( wikEd.browserVersionStr );&lt;br /&gt;
				if ( ( regExpMatch !== null ) &amp;amp;&amp;amp; ( regExpMatch[ 3 ] == 2454 ) &amp;amp;&amp;amp; ( regExpMatch[ 4 ] &amp;gt;= 85 ) &amp;amp;&amp;amp; ( regExpMatch[ 4 ] &amp;lt; 93 ) ) {&lt;br /&gt;
					wikEd.browserNotSupported = true;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// check Safari version&lt;br /&gt;
		case &#039;Safari&#039;:&lt;br /&gt;
			if (wikEd.browserVersion &amp;lt; 500) {&lt;br /&gt;
				wikEd.browserNotSupported = true;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// browser or version not supported, set error message and exit&lt;br /&gt;
	if ( (wikEd.browserNotSupported === true) &amp;amp;&amp;amp; (wikEd.config.skipBrowserTest === false) ) {&lt;br /&gt;
		wikEd.disabled = true;&lt;br /&gt;
		wikEd.SetLogo(&#039;browser&#039;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get form elements&lt;br /&gt;
	var array;&lt;br /&gt;
	array = document.getElementsByName(&#039;wpEdittime&#039;);&lt;br /&gt;
	if (array[0] !== undefined) {&lt;br /&gt;
		wikEd.edittime = array[0].value;&lt;br /&gt;
	}&lt;br /&gt;
	array = document.getElementsByName(&#039;wpStarttime&#039;);&lt;br /&gt;
	if (array[0] !== undefined) {&lt;br /&gt;
		wikEd.starttime = array[0].value;&lt;br /&gt;
	}&lt;br /&gt;
	array = document.getElementsByName(&#039;wpAutoSummary&#039;);&lt;br /&gt;
	if (array[0] !== undefined) {&lt;br /&gt;
		wikEd.autoSummary = array[0].value;&lt;br /&gt;
	}&lt;br /&gt;
	array = document.getElementsByName(&#039;wpEditToken&#039;);&lt;br /&gt;
	if (array[0] !== undefined) {&lt;br /&gt;
		wikEd.editToken = array[0].value;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// page type detection&lt;br /&gt;
&lt;br /&gt;
	// detect custom edit page&lt;br /&gt;
	if (wikEd.config.customEditFormId !== &#039;&#039;) {&lt;br /&gt;
		wikEd.editForm = document.getElementById(wikEd.config.customEditFormId);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.config.customTextAreaId !== &#039;&#039;) {&lt;br /&gt;
		wikEd.textarea = document.getElementById(wikEd.config.customTextAreaId);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.config.customSaveButtonId !== &#039;&#039;) {&lt;br /&gt;
		wikEd.saveButton = document.getElementById(wikEd.customwikEdSaveButtonId);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect standard edit page&lt;br /&gt;
	if (wikEd.textarea === null) {&lt;br /&gt;
&lt;br /&gt;
		// HotCat injects this textarea into non-edit pages&lt;br /&gt;
		var textarea = document.getElementsByName(&#039;wpTextbox1&#039;)[0];&lt;br /&gt;
		if ( (textarea !== undefined) &amp;amp;&amp;amp; (textarea.type != &#039;hidden&#039;) ) {&lt;br /&gt;
			wikEd.textarea = textarea;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.editForm === null) {&lt;br /&gt;
		wikEd.editForm = document.getElementById(&#039;editform&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.saveButton === null) {&lt;br /&gt;
		wikEd.saveButton = document.getElementById(&#039;wpSave&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.diffPreviewButton = document.getElementById(&#039;wpDiff&#039;);&lt;br /&gt;
	wikEd.previewButton = document.getElementById(&#039;wpPreview&#039;);&lt;br /&gt;
	wikEd.editArticle = true;&lt;br /&gt;
&lt;br /&gt;
	// detect read-only edit page&lt;br /&gt;
	if ( (wikEd.textarea !== null) &amp;amp;&amp;amp; (wikEd.editForm === null) &amp;amp;&amp;amp; (wikEd.saveButton === null) ) {&lt;br /&gt;
		wikEd.editReadOnly = true;&lt;br /&gt;
		wikEd.editArticle = false;&lt;br /&gt;
		wikEd.readOnly = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect semantic forms extension&lt;br /&gt;
	else if (wikEd.textarea === null) {&lt;br /&gt;
		wikEd.editForm = document.getElementById(&#039;sfForm&#039;);&lt;br /&gt;
		wikEd.textarea = document.getElementById(&#039;sf_free_text&#039;);&lt;br /&gt;
		if ( (wikEd.editForm !== null) &amp;amp;&amp;amp; (wikEd.textarea !== null) ) {&lt;br /&gt;
			wikEd.editArticle = false;&lt;br /&gt;
			wikEd.editSemanticForm = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// detect edit raw watchlist page&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.textarea = document.getElementById(&#039;mw-input-wpTitles&#039;);&lt;br /&gt;
&lt;br /&gt;
			// old version&lt;br /&gt;
			if (wikEd.textarea === null) {&lt;br /&gt;
				wikEd.textarea = document.getElementById(&#039;titles&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			if (wikEd.textarea !== null) {&lt;br /&gt;
				wikEd.editArticle = false;&lt;br /&gt;
				wikEd.editWatchlist = true;&lt;br /&gt;
&lt;br /&gt;
				// get watchlist edit form&lt;br /&gt;
				var node = wikEd.textarea;&lt;br /&gt;
				while (node !== null) {&lt;br /&gt;
					node = node.parentNode;&lt;br /&gt;
					if (node.tagName == &#039;FORM&#039;) {&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.editForm = node;&lt;br /&gt;
&lt;br /&gt;
				// get watchlist submit button&lt;br /&gt;
				var saveButton = document.getElementsByClassName(&#039;mw-htmlform-submit&#039;)[0];&lt;br /&gt;
				if ( (saveButton === undefined) &amp;amp;&amp;amp; (wikEd.editForm !== null) ) {&lt;br /&gt;
					wikEd.saveButton = saveButton;&lt;br /&gt;
					var submits = wikEd.editForm.getElementsByTagName(&#039;input&#039;);&lt;br /&gt;
					for (var i = 0; i &amp;lt; submits.length; i ++) {&lt;br /&gt;
						if (submits[i].type == &#039;submit&#039;) {&lt;br /&gt;
							wikEd.saveButton = submits[i];&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// detect upload page&lt;br /&gt;
		if ( (wikEd.textarea === null) || (wikEd.editForm === null) || (wikEd.saveButton === null) ) {&lt;br /&gt;
			var textarea = document.getElementsByName(&#039;wpUploadDescription&#039;)[0];&lt;br /&gt;
			var editForm = document.getElementById(&#039;mw-upload-form&#039;);&lt;br /&gt;
			var saveButton = document.getElementsByName(&#039;wpUpload&#039;)[0];&lt;br /&gt;
			if ( (textarea !== undefined) &amp;amp;&amp;amp; (editForm !== null) &amp;amp;&amp;amp; (saveButton !== undefined) ) {&lt;br /&gt;
				wikEd.textarea = textarea;&lt;br /&gt;
				wikEd.editForm = editForm;&lt;br /&gt;
				wikEd.saveButton = saveButton;&lt;br /&gt;
				wikEd.editArticle = false;&lt;br /&gt;
				wikEd.editUpload = true;&lt;br /&gt;
				wikEd.rearrange = false;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// detect view and restore deleted pages (no id on textarea)&lt;br /&gt;
		if ( (wikEd.textarea === null) || (wikEd.editForm === null) || (wikEd.saveButton === null) ) {&lt;br /&gt;
			var forms = document.getElementsByTagName(&#039;form&#039;);&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			var form;&lt;br /&gt;
			while ( (form = forms[i ++]) !== undefined) {&lt;br /&gt;
				if (/\btitle=Special:Undelete\b/i.test(form.action) === true) {&lt;br /&gt;
					var textareas = document.getElementsByTagName(&#039;textarea&#039;);&lt;br /&gt;
					var j = 0;&lt;br /&gt;
					var textarea;&lt;br /&gt;
					while ( (textarea = textareas[j ++]) !== undefined) {&lt;br /&gt;
						if (textarea.readOnly === true) {&lt;br /&gt;
							wikEd.textarea = textarea;&lt;br /&gt;
							wikEd.previewButton = document.getElementsByName(&#039;preview&#039;)[0] || null;&lt;br /&gt;
							wikEd.editArticle = false;&lt;br /&gt;
							wikEd.viewDeleted = true;&lt;br /&gt;
							wikEd.rearrange = true;&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set page detection error indicator&lt;br /&gt;
	if (wikEd.textarea === null) {&lt;br /&gt;
		wikEd.SetLogo();&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// do not turn on when code editor is active&lt;br /&gt;
	if (wikEd.useCodeEditor === true) {&lt;br /&gt;
		wikEd.disabled = true;&lt;br /&gt;
		wikEd.SetLogo(&#039;incompatible&#039;, &#039;Code Editor&#039;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check if the textarea is read-only&lt;br /&gt;
	if (wikEd.config.skipReadOnlyTest === false) {&lt;br /&gt;
		if ( (wikEd.textarea.getAttribute(&#039;readonly&#039;) !== null) || (wikEd.saveButton === null) ) {&lt;br /&gt;
			wikEd.readOnly = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check for section edits&lt;br /&gt;
	var section = document.getElementsByName(&#039;wpSection&#039;);&lt;br /&gt;
	if (&lt;br /&gt;
		section !== null &amp;amp;&amp;amp;&lt;br /&gt;
		section.length &amp;gt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
		/^\d+$/.test(section[0].value) === true&lt;br /&gt;
	) {&lt;br /&gt;
		wikEd.editSection = section[0].value;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get missing wg variables from footer link (code copied to wikEdDiff.js)&lt;br /&gt;
	if (wikEd.wikiGlobals.wgArticlePath === undefined) {&lt;br /&gt;
		var printfooter = document.body.getElementsByClassName(&#039;printfooter&#039;)[0];&lt;br /&gt;
		if (printfooter !== undefined) {&lt;br /&gt;
			var articleLink = printfooter.getElementsByTagName(&#039;a&#039;)[0];&lt;br /&gt;
			if (articleLink !== undefined) {&lt;br /&gt;
				var regExpMatch = /^(https?:\/\/[^\/]*)(\/([^\/]*\/)*)([^\/]*)$/.exec(articleLink.href);&lt;br /&gt;
				if (regExpMatch !== null) {&lt;br /&gt;
					wikEd.wikiGlobals.wgServer = regExpMatch[1];&lt;br /&gt;
					wikEd.wikiGlobals.wgArticlePath = regExpMatch[1] + regExpMatch[2] + &#039;$1&#039;;&lt;br /&gt;
					wikEd.wikiGlobals.wgPageName = regExpMatch[4] || &#039;&#039;;&lt;br /&gt;
					wikEd.wikiGlobals.wgTitle = decodeURIComponent( regExpMatch[4].replace(/_/g, &#039; &#039;) );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get missing wg variables from form action url&lt;br /&gt;
	if (wikEd.wikiGlobals.wgScript === undefined) {&lt;br /&gt;
		var form = wikEd.editForm;&lt;br /&gt;
		if ( form !== null &amp;amp;&amp;amp; form.action.indexOf( &#039;/Special:EditWatchlist&#039; ) !== -1 ) {&lt;br /&gt;
			form = document.getElementById( &#039;searchform&#039; );&lt;br /&gt;
		}&lt;br /&gt;
		if ( form !== null &amp;amp;&amp;amp; form.action.indexOf( &#039;/index.php&#039; ) !== -1 ) {&lt;br /&gt;
			wikEd.wikiGlobals.wgScript = form.action.replace(/^https?:\/\/[^\/]*|\?.*$/g, &#039;&#039;);&lt;br /&gt;
			wikEd.wikiGlobals.wgScriptPath = wikEd.wikiGlobals.wgScript.replace(/\/index\.php/, &#039;&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get current page name&lt;br /&gt;
	wikEd.pageName = wikEd.wikiGlobals.wgPageName;&lt;br /&gt;
&lt;br /&gt;
	// get current namespace&lt;br /&gt;
	if (wikEd.pageName !== null) {&lt;br /&gt;
		var colonPos = wikEd.pageName.indexOf(&#039;:&#039;);&lt;br /&gt;
		if (colonPos == -1) {&lt;br /&gt;
			wikEd.pageNamespace = &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.pageNamespace = wikEd.pageName.substr(0, colonPos);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get MediaWiki file paths&lt;br /&gt;
	wikEd.GetPaths();&lt;br /&gt;
&lt;br /&gt;
	// check if we can call external API for redlink detection&lt;br /&gt;
	var regExpDomains = new RegExp(&#039;//(.*?\\.)?(&#039; + wikEd.config.externalApiDomains.replace(/\s*,\s*/g, &#039;|&#039;).replace(/\./g, &#039;\\.&#039;) + &#039;$)&#039;, &#039;g&#039;);&lt;br /&gt;
	wikEd.useExternalApi = regExpDomains.test(window.location.origin);&lt;br /&gt;
&lt;br /&gt;
	// get page elements&lt;br /&gt;
	wikEd.catLinks = document.getElementById(&#039;catlinks&#039;);&lt;br /&gt;
&lt;br /&gt;
	// check if mw.loader is available&lt;br /&gt;
	if ( (window.mw !== undefined) &amp;amp;&amp;amp; (window.mw.loader !== undefined) &amp;amp;&amp;amp; (window.mw.config !== undefined) ) {&lt;br /&gt;
		wikEd.loader = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get wikibase defaults for linkification&lt;br /&gt;
	wikEd.wikibase.currentSite = {};&lt;br /&gt;
	wikEd.wikibase.currentSite.globalSiteId = wikEd.config.wbGlobalSiteId;&lt;br /&gt;
	wikEd.wikibase.repoUrl = wikEd.config.wbRepoUrl;&lt;br /&gt;
	wikEd.wikibase.repoArticlePath = wikEd.config.wbRepoArticlePath;&lt;br /&gt;
&lt;br /&gt;
	// get wikibase infos&lt;br /&gt;
	if (wikEd.loader === true) {&lt;br /&gt;
&lt;br /&gt;
		// prevent error if module is not installed&lt;br /&gt;
		try {&lt;br /&gt;
			window.mw.loader.using(&#039;wikibase.client.currentSite&#039;, function () {&lt;br /&gt;
				wikEd.wikibase.currentSite = window.mw.config.get(&#039;wbCurrentSite&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		catch (exception) {&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			window.mw.loader.using(&#039;wikibase.repoAccess&#039;, function () {&lt;br /&gt;
				wikEd.wikibase.repoUrl = window.mw.config.get(&#039;wbRepoUrl&#039;);&lt;br /&gt;
				wikEd.wikibase.repoArticlePath = window.mw.config.get(&#039;wbRepoArticlePath&#039;);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		catch (exception) {&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// initialize frame css, main css, buttons, and button bars&lt;br /&gt;
	wikEd.InitFrameCSS();&lt;br /&gt;
	wikEd.InitMainEditCSS();&lt;br /&gt;
	wikEd.InitButton();&lt;br /&gt;
	wikEd.InitButtonKey();&lt;br /&gt;
	wikEd.InitButtonBar();&lt;br /&gt;
	wikEd.InitHistoryLength();&lt;br /&gt;
	wikEd.InitIncompatibleScripts();&lt;br /&gt;
&lt;br /&gt;
	// check for incompatible scripts&lt;br /&gt;
	var incompatible = &#039;&#039;;&lt;br /&gt;
	if (wikEd.config.skipScriptTest === false) {&lt;br /&gt;
		for (var key in wikEd.config.incompatibleScripts) {&lt;br /&gt;
			if (Object.prototype.hasOwnProperty.call(wikEd.config.incompatibleScripts, key) === true) {&lt;br /&gt;
				var regExp = new RegExp(wikEd.config.incompatibleScripts[key].replace(/\.js$/g, &#039;&#039;), &#039;gim&#039;);&lt;br /&gt;
				if (regExp.test(wikEd.externalScriptsString) === true) {&lt;br /&gt;
					if (incompatible !== &#039;&#039;) {&lt;br /&gt;
						incompatible += &#039;, &#039;;&lt;br /&gt;
					}&lt;br /&gt;
					incompatible += key;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect incompatible add-ons&lt;br /&gt;
	if (wikEd.config.skipAddonTest === false) {&lt;br /&gt;
&lt;br /&gt;
		// Ginger add-on breaks undo history, corrupts text (&amp;lt;tag&amp;gt;&amp;lt;!-- --&amp;gt;)&lt;br /&gt;
		if (document.body.getAttribute(&#039;ginger_software_stylesheet&#039;) !== null) {&lt;br /&gt;
			if (incompatible !== &#039;&#039;) {&lt;br /&gt;
				incompatible += &#039;, &#039;;&lt;br /&gt;
			}&lt;br /&gt;
			incompatible += &#039;Ginger&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// incompatible script or add-on error&lt;br /&gt;
	if (incompatible !== &#039;&#039;) {&lt;br /&gt;
		wikEd.disabled = true;&lt;br /&gt;
		wikEd.SetLogo(&#039;incompatible&#039;, incompatible);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// define Unicode characters for fixing function&lt;br /&gt;
	wikEd.InitUnicode();&lt;br /&gt;
&lt;br /&gt;
	// detect if we add a new section (+ tab)&lt;br /&gt;
	if (/(\?|&amp;amp;)section=new\b/.test(window.location.search) === true) {&lt;br /&gt;
		wikEd.addNewSection = true;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		var section = document.getElementsByName(&#039;wpSection&#039;);&lt;br /&gt;
		if ( (section[0] !== undefined) &amp;amp;&amp;amp; (section[0].value == &#039;new&#039;) ) {&lt;br /&gt;
			wikEd.addNewSection = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get initial textarea dimensions&lt;br /&gt;
	wikEd.textareaBorderHeight = parseInt(wikEd.GetStyle(wikEd.textarea, &#039;borderTopWidth&#039;), 10) + parseInt(wikEd.GetStyle(wikEd.textarea, &#039;borderBottomWidth&#039;), 10);&lt;br /&gt;
	if (wikEd.GetStyle(wikEd.textarea, &#039;display&#039;) != &#039;none&#039;) {&lt;br /&gt;
		wikEd.textareaOffsetHeightInitial = wikEd.textarea.offsetHeight;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.textareaOffsetHeightInitial = wikEd.textarea.parentNode.clientHeight;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.textareaOffsetHeightInitial = wikEd.textarea.offsetHeight;&lt;br /&gt;
	wikEd.textareaHeight = (wikEd.textarea.offsetHeight - wikEd.textareaBorderHeight) + &#039;px&#039;;&lt;br /&gt;
	wikEd.textareaWidth = &#039;100%&#039;;&lt;br /&gt;
&lt;br /&gt;
	// setup the undo buffers and save the original text for local changes view&lt;br /&gt;
	wikEd.origVersion = wikEd.textarea.value;&lt;br /&gt;
&lt;br /&gt;
	// add stylesheet definitions&lt;br /&gt;
	wikEd.ApplyCSS(document, wikEd.config.mainEditCSS);&lt;br /&gt;
&lt;br /&gt;
	// get button settings from saved settings&lt;br /&gt;
	wikEd.using = wikEd.GetSavedSetting(&#039;wikEdSummaryUsing&#039;, wikEd.config.usingPreset);&lt;br /&gt;
	wikEd.useWikEd = ! wikEd.GetSavedSetting(&#039;wikEdUseClassic&#039;, ! wikEd.config.useWikEdPreset);&lt;br /&gt;
	wikEd.highlightSyntax = ! wikEd.GetSavedSetting(&#039;wikEdSyntaxOff&#039;, ! wikEd.config.highlightSyntaxPreset);&lt;br /&gt;
	wikEd.fullScreenMode = wikEd.GetSavedSetting(&#039;wikEdFullscreen&#039;, wikEd.config.fullScreenModePreset);&lt;br /&gt;
	wikEd.closeToolbar = wikEd.GetSavedSetting(&#039;wikEdCloseToolbar&#039;, wikEd.config.closeToolbarPreset);&lt;br /&gt;
	wikEd.refHide = wikEd.GetSavedSetting(&#039;wikEdRefHide&#039;, wikEd.config.refHidePreset);&lt;br /&gt;
	window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
	if (wikEd.config.tableMode === true) {&lt;br /&gt;
		wikEd.tableMode = wikEd.refHide;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.tableMode = false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect preview page&lt;br /&gt;
	if (/(\?|&amp;amp;)action=submit\b/.test(window.location.search) === true) {&lt;br /&gt;
		wikEd.previewPage = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// disable wikEd for Lupin&#039;s autoedit scripts&lt;br /&gt;
	if (/(\?|&amp;amp;)autoedit=/.test(window.location.search) === true) {&lt;br /&gt;
		wikEd.useWikEd = false;&lt;br /&gt;
		window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// disable wikEd for .js and .css pages&lt;br /&gt;
	if ( (wikEd.jsPage === true) || (wikEd.cssPage === true) ) {&lt;br /&gt;
		wikEd.noSpellcheck = true;&lt;br /&gt;
		if (wikEd.origVersion.length &amp;gt; 20000) {&lt;br /&gt;
			wikEd.useWikEd = false;&lt;br /&gt;
			window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.highlightSyntax = false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// disable highlighting for module namespace (Scribunto/Lua templates)&lt;br /&gt;
	if (wikEd.wikiGlobals.wgCanonicalNamespace == &#039;Module&#039;) {&lt;br /&gt;
		wikEd.noSpellcheck = true;&lt;br /&gt;
		wikEd.highlightSyntax = false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// no spellcheck for watchlist editing&lt;br /&gt;
	if (wikEd.editWatchlist === true) {&lt;br /&gt;
		wikEd.noSpellcheck = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// disable spellchecker for textarea&lt;br /&gt;
	if (wikEd.noSpellcheck === true) {&lt;br /&gt;
		wikEd.textarea.setAttribute(&#039;spellcheck&#039;, false);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// preset frame related styles to avoid browser crashes&lt;br /&gt;
	var styleFrameWrapperPosition;&lt;br /&gt;
	var styleFrameWrapperVisibility;&lt;br /&gt;
	var styleTextareaWrapperPosition;&lt;br /&gt;
	var styleTextareaWrapperVisibility;&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		styleFrameWrapperPosition = &#039;static&#039;;&lt;br /&gt;
		styleFrameWrapperVisibility = &#039;visible&#039;;&lt;br /&gt;
		styleTextareaWrapperPosition = &#039;absolute&#039;;&lt;br /&gt;
		styleTextareaWrapperVisibility = &#039;hidden&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		styleFrameWrapperPosition = &#039;absolute&#039;;&lt;br /&gt;
		styleFrameWrapperVisibility = &#039;hidden&#039;;&lt;br /&gt;
		styleTextareaWrapperPosition = &#039;static&#039;;&lt;br /&gt;
		styleTextareaWrapperVisibility = &#039;visible&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// find proper insertion point of input wrapper&lt;br /&gt;
&lt;br /&gt;
	// inside the wikiEditor interface&lt;br /&gt;
	var wikiEditor = document.body.getElementsByClassName(&#039;wikiEditor-ui&#039;)[0];&lt;br /&gt;
	if (wikiEditor !== undefined) {&lt;br /&gt;
		wikEd.wikiEditor = wikiEditor;&lt;br /&gt;
		wikEd.wikiEditorFrame = wikEd.wikiEditor.getElementsByTagName(&#039;IFRAME&#039;)[0] || null;&lt;br /&gt;
		wikEd.wikiEditorTop = document.body.getElementsByClassName(&#039;wikiEditor-ui-top&#039;)[0] || null;&lt;br /&gt;
		wikEd.wikiEditorLeft = document.body.getElementsByClassName(&#039;wikiEditor-ui-left&#039;)[0] || null;&lt;br /&gt;
		wikEd.wikiEditorBar = document.body.getElementsByClassName(&#039;wikiEditor-ui-toolbar&#039;)[0] || null;&lt;br /&gt;
		wikEd.wikiEditorBottom = document.body.getElementsByClassName(&#039;wikiEditor-ui-bottom&#039;)[0] || null;&lt;br /&gt;
		wikEd.wikiEditorText = document.body.getElementsByClassName(&#039;wikiEditor-ui-text&#039;)[0] || null;&lt;br /&gt;
		wikEd.textareaContainer = wikEd.wikiEditor;&lt;br /&gt;
		if (wikEd.wikiEditorBar === null) {&lt;br /&gt;
			wikEd.SetLogo(&#039;incompatible&#039;, &#039;WikiEditor (delayed)&#039;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// before original textarea container (multiple nested containers for semantic forms)&lt;br /&gt;
	else {&lt;br /&gt;
		var node = wikEd.textarea;&lt;br /&gt;
		var parent = node.parentNode;&lt;br /&gt;
		while (wikEd.GetFirstChildNode(parent) == wikEd.GetLastChildNode(parent) ) {&lt;br /&gt;
			if (/^(SPAN|DIV|P)$/.test(parent.nodeName) === false) {&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			node = parent;&lt;br /&gt;
			parent = node.parentNode;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.textareaContainer = node;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create input wrapper, contains the whole wikEd and wikiEditor user interface, is the fullscreen container&lt;br /&gt;
	wikEd.inputWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.inputWrapper.id = &#039;wikEdInputWrapper&#039;;&lt;br /&gt;
	wikEd.inputWrapper.className = &#039;wikEdInputWrapper&#039;;&lt;br /&gt;
	if (wikEd.wikiEditor !== null) {&lt;br /&gt;
		wikEd.inputWrapper = wikEd.wikiEditor.parentNode.insertBefore(wikEd.inputWrapper, wikEd.wikiEditor);&lt;br /&gt;
		wikEd.inputWrapper.appendChild(wikEd.wikiEditor);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.textareaContainer.parentNode.insertBefore(wikEd.inputWrapper, wikEd.textareaContainer);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create editor wrapper, contains captcha, toolbar, debug, buttons bar, textarea, toc, but not the summary&lt;br /&gt;
	wikEd.editorWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.editorWrapper.id = &#039;wikEdEditorWrapper&#039;;&lt;br /&gt;
	wikEd.editorWrapper.className = &#039;wikEdEditorWrapper&#039;;&lt;br /&gt;
	if (wikEd.wikiEditor !== null) {&lt;br /&gt;
		wikEd.wikiEditor.parentNode.insertBefore(wikEd.editorWrapper, wikEd.wikiEditor);&lt;br /&gt;
		wikEd.editorWrapper.appendChild(wikEd.wikiEditor);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.inputWrapper.appendChild(wikEd.editorWrapper);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create buttons wrapper for toolbar, wikiEditor, and wikEd button bars&lt;br /&gt;
	wikEd.buttonsWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.buttonsWrapper.id = &#039;wikEdButtonsWrapper&#039;;&lt;br /&gt;
	wikEd.buttonsWrapper.className = &#039;wikEdButtonsWrapper&#039;;&lt;br /&gt;
	if (wikEd.wikiEditor !== null) {&lt;br /&gt;
		wikEd.wikiEditorBar.parentNode.insertBefore(wikEd.buttonsWrapper, wikEd.wikiEditorBar);&lt;br /&gt;
		wikEd.buttonsWrapper.appendChild(wikEd.wikiEditorBar);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.editorWrapper.appendChild(wikEd.buttonsWrapper);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create toolbar wrapper&lt;br /&gt;
	wikEd.toolbarWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.toolbarWrapper.id = &#039;wikEdToolbarWrapper&#039;;&lt;br /&gt;
	wikEd.toolbarWrapper.className = &#039;wikEdToolbarWrapper&#039;;&lt;br /&gt;
	wikEd.buttonsWrapper.appendChild(wikEd.toolbarWrapper);&lt;br /&gt;
&lt;br /&gt;
	// fill toolbar wrapper&lt;br /&gt;
	wikEd.toolbar = document.getElementById(&#039;toolbar&#039;);&lt;br /&gt;
	if (wikEd.toolbar !== null) {&lt;br /&gt;
		wikEd.toolbarWrapper.appendChild(wikEd.toolbar);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.wikiEditorBar !== null) {&lt;br /&gt;
		wikEd.toolbarWrapper.appendChild(wikEd.wikiEditorBar);&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.buttonsWrapper.appendChild(wikEd.toolbarWrapper);&lt;br /&gt;
&lt;br /&gt;
	// create debug textarea wrapper&lt;br /&gt;
	wikEd.debugWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.debugWrapper.id = &#039;wikEdDebugWrapper&#039;;&lt;br /&gt;
	wikEd.debugWrapper.className = &#039;wikEdDebugWrapper&#039;;&lt;br /&gt;
	wikEd.debugWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
	wikEd.editorWrapper.insertBefore(wikEd.debugWrapper, wikEd.editorWrapper.firstChild);&lt;br /&gt;
&lt;br /&gt;
	// create captcha wrapper&lt;br /&gt;
	if ( (wikEd.rearrange === true) &amp;amp;&amp;amp; (wikEd.readOnly === false) ) {&lt;br /&gt;
		wikEd.captchaWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.captchaWrapper.id = &#039;wikEdCaptchaWrapper&#039;;&lt;br /&gt;
		wikEd.captchaWrapper.className = &#039;wikEdCaptchaWrapper&#039;;&lt;br /&gt;
		wikEd.editorWrapper.insertBefore(wikEd.captchaWrapper, wikEd.editorWrapper.firstChild);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create editor wrapper, contains toolbar, textarea, toc, but not the summary&lt;br /&gt;
	wikEd.editWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.editWrapper.id = &#039;wikEdEditWrapper&#039;;&lt;br /&gt;
	wikEd.editWrapper.className = &#039;wikEdEditWrapper&#039;;&lt;br /&gt;
	if (wikEd.wikiEditor !== null) {&lt;br /&gt;
		wikEd.textarea.parentNode.appendChild(wikEd.editWrapper);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.inputWrapper.appendChild(wikEd.editWrapper);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create textarea wrapper&lt;br /&gt;
	wikEd.textareaWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.textareaWrapper.id = &#039;wikEdTextareaWrapper&#039;;&lt;br /&gt;
	wikEd.textareaWrapper.className = &#039;wikEdTextareaWrapper&#039;;&lt;br /&gt;
	wikEd.textareaWrapper.style.position = styleTextareaWrapperPosition;&lt;br /&gt;
	wikEd.textareaWrapper.style.visibility = styleTextareaWrapperVisibility;&lt;br /&gt;
	wikEd.editWrapper.appendChild(wikEd.textareaWrapper);&lt;br /&gt;
&lt;br /&gt;
	// create frame wrapper&lt;br /&gt;
	wikEd.frameWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.frameWrapper.id = &#039;wikEdFrameWrapper&#039;;&lt;br /&gt;
	wikEd.frameWrapper.className = &#039;wikEdFrameWrapper&#039;;&lt;br /&gt;
	wikEd.frameWrapper.style.position = styleFrameWrapperPosition;&lt;br /&gt;
	wikEd.frameWrapper.style.visibility = styleFrameWrapperVisibility;&lt;br /&gt;
	wikEd.textareaWrapper.parentNode.appendChild(wikEd.frameWrapper);&lt;br /&gt;
&lt;br /&gt;
	// create console wrapper for buttons, summary, and submit&lt;br /&gt;
	if (wikEd.rearrange === true) {&lt;br /&gt;
		wikEd.consoleWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.consoleWrapper.id = &#039;wikEdConsoleWrapper&#039;;&lt;br /&gt;
		wikEd.consoleWrapper.className = &#039;wikEdConsoleWrapper&#039;;&lt;br /&gt;
		wikEd.inputWrapper.appendChild(wikEd.consoleWrapper);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create button bar wrapper&lt;br /&gt;
	wikEd.buttonBarWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.buttonBarWrapper.id = &#039;wikEdButtonBarWrapper&#039;;&lt;br /&gt;
	wikEd.buttonBarWrapper.className = &#039;wikEdButtonBarWrapper&#039;;&lt;br /&gt;
	wikEd.buttonsWrapper.appendChild(wikEd.buttonBarWrapper);&lt;br /&gt;
&lt;br /&gt;
	// create summary wrapper for summary, minor edit, and watch this page&lt;br /&gt;
	if (wikEd.rearrange === true) {&lt;br /&gt;
		wikEd.summaryWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.summaryWrapper.id = &#039;wikEdSummaryWrapper&#039;;&lt;br /&gt;
		wikEd.summaryWrapper.className = &#039;wikEdSummaryWrapper&#039;;&lt;br /&gt;
&lt;br /&gt;
		// add summary above the edit field if we add a new section (+ tab)&lt;br /&gt;
		if (wikEd.addNewSection === true) {&lt;br /&gt;
			wikEd.consoleTopWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
			wikEd.consoleTopWrapper.id = &#039;wikEdConsoleTopWrapper&#039;;&lt;br /&gt;
			wikEd.consoleTopWrapper.className = &#039;wikEdConsoleTopWrapper&#039;;&lt;br /&gt;
			wikEd.consoleTopWrapper.appendChild(wikEd.summaryWrapper);&lt;br /&gt;
			wikEd.inputWrapper.insertBefore(wikEd.consoleTopWrapper, wikEd.inputWrapper.firstChild);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.consoleWrapper.appendChild(wikEd.summaryWrapper);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// create summary input wrapper&lt;br /&gt;
		wikEd.summaryInputWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.summaryInputWrapper.id = &#039;wikEdSummaryInputWrapper&#039;;&lt;br /&gt;
		wikEd.summaryInputWrapper.className = &#039;wikEdSummaryInputWrapper&#039;;&lt;br /&gt;
		wikEd.summaryWrapper.appendChild(wikEd.summaryInputWrapper);&lt;br /&gt;
&lt;br /&gt;
		// create minor edit and watch page wrapper&lt;br /&gt;
		wikEd.editOptionsWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.editOptionsWrapper.id = &#039;wikEdEditOptionsWrapper&#039;;&lt;br /&gt;
		wikEd.editOptionsWrapper.className = &#039;wikEdEditOptionsWrapper&#039;;&lt;br /&gt;
&lt;br /&gt;
		// create submit wrapper for submit elements&lt;br /&gt;
		wikEd.submitWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.submitWrapper.id = &#039;wikEdSubmitWrapper&#039;;&lt;br /&gt;
		wikEd.submitWrapper.className = &#039;wikEdSubmitWrapper&#039;;&lt;br /&gt;
		wikEd.consoleWrapper.appendChild(wikEd.submitWrapper);&lt;br /&gt;
&lt;br /&gt;
		// create submit buttons wrapper for submit buttons and help links&lt;br /&gt;
		wikEd.submitButtonsWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.submitButtonsWrapper.id = &#039;wikEdSubmitButtonsWrapper&#039;;&lt;br /&gt;
		wikEd.submitButtonsWrapper.className = &#039;wikEdSubmitButtonsWrapper&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create preview wrapper for preview and diff box&lt;br /&gt;
	if (wikEd.enableLocalPreview !== false) {&lt;br /&gt;
		wikEd.localPrevWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.localPrevWrapper.id = &#039;wikEdLocalPrevWrapper&#039;;&lt;br /&gt;
		wikEd.localPrevWrapper.className = &#039;wikEdLocalPrevWrapper&#039;;&lt;br /&gt;
		wikEd.localPrevWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
		if (wikEd.rearrange === true) {&lt;br /&gt;
			wikEd.inputWrapper.appendChild(wikEd.localPrevWrapper);&lt;br /&gt;
		}&lt;br /&gt;
		else if (wikEd.saveButton !== null) {&lt;br /&gt;
			wikEd.saveButton.parentNode.appendChild(wikEd.localPrevWrapper);&lt;br /&gt;
		}&lt;br /&gt;
		else if (wikEd.previewButton !== null) {&lt;br /&gt;
			wikEd.previewButton.parentNode.appendChild(wikEd.localPrevWrapper);&lt;br /&gt;
		}&lt;br /&gt;
		else if (wikEd.diffPreviewButton !== null) {&lt;br /&gt;
			wikEd.diffPreviewButton.parentNode.appendChild(wikEd.localPrevWrapper);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create insert wrapper for insert special chars links&lt;br /&gt;
	if (wikEd.rearrange === true) {&lt;br /&gt;
		wikEd.insertWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.insertWrapper.id = &#039;wikEdInsertWrapper&#039;;&lt;br /&gt;
		wikEd.insertWrapper.className = &#039;wikEdInsertWrapper&#039;;&lt;br /&gt;
		wikEd.inputWrapper.appendChild(wikEd.insertWrapper);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// fill the wrappers&lt;br /&gt;
&lt;br /&gt;
	// create debug textarea and add to debug wrapper&lt;br /&gt;
	wikEd.debug = document.createElement(&#039;textarea&#039;);&lt;br /&gt;
	wikEd.debug.id = &#039;wikEdDebugTextarea&#039;;&lt;br /&gt;
	wikEd.debug.className = &#039;wikEdDebugTextarea&#039;;&lt;br /&gt;
	wikEd.debug.rows = 20;&lt;br /&gt;
	wikEd.debug.setAttribute(&#039;spellcheck&#039;, false);&lt;br /&gt;
	wikEd.debugWrapper.appendChild(wikEd.debug);&lt;br /&gt;
&lt;br /&gt;
	// display startup error messages&lt;br /&gt;
	if (wikEd.config.debugStartUp !== &#039;&#039;) {&lt;br /&gt;
		wikEd.Debug(wikEd.config.debugStartUp);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// wikEdDiff enhanced ajax diff&lt;br /&gt;
	if (typeof wikEd.diffTable == &#039;object&#039;) {&lt;br /&gt;
		if ( (wikEd.diffTable !== null) &amp;amp;&amp;amp; (wikEd.diff === true) ) {&lt;br /&gt;
			if (wikEd.Diff !== undefined) {&lt;br /&gt;
				wikEd.Diff();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// hide toolbar wrapper&lt;br /&gt;
	if (wikEd.closeToolbar === true) {&lt;br /&gt;
		wikEd.toolbarWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.toolbarWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// call wikibits:mwSetupToolbar() now because it would terminate with an error after setting textarea to display: none&lt;br /&gt;
	if (wikEd.toolbar !== null) {&lt;br /&gt;
		if (wikEd.toolbar.getElementsByTagName(&#039;IMG&#039;).length === 0) {&lt;br /&gt;
			if (window.mwSetupToolbar !== undefined) {&lt;br /&gt;
				window.mwSetupToolbar();&lt;br /&gt;
				window.removeEventListener(&#039;load&#039;, window.mwSetupToolbar, false);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// dropdowns from toolbar should go over wikEd toolbar&lt;br /&gt;
	if (wikEd.wikiEditorBar !== null) {&lt;br /&gt;
		wikEd.wikiEditorBar.style.zIndex = &#039;5&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// move editpage-copywarn out of summary wrapper&lt;br /&gt;
	// needs to be done before appending editOptions to summary wrapper otherwise a linebreak stays (Mozilla bug)&lt;br /&gt;
	if (wikEd.rearrange === true) {&lt;br /&gt;
		var copywarn = document.getElementById(&#039;editpage-copywarn&#039;);&lt;br /&gt;
		if (copywarn !== null) {&lt;br /&gt;
			wikEd.inputWrapper.parentNode.insertBefore(copywarn, wikEd.inputWrapper.nextSibling);&lt;br /&gt;
			copywarn.style.clear = &#039;both&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add a link to the wikEd help page&lt;br /&gt;
	var editHelp = document.getElementsByClassName(&#039;editHelp&#039;)[0];&lt;br /&gt;
	if (editHelp !== undefined) {&lt;br /&gt;
		if (typeof wikEd.config.helpPageLink == &#039;string&#039;) {&lt;br /&gt;
			wikEd.editHelp = document.createElement(&#039;span&#039;);&lt;br /&gt;
			wikEd.editHelp.id = &#039;wikEdEditHelp&#039;;&lt;br /&gt;
			wikEd.editHelp.className = &#039;wikEdEditHelp&#039;;&lt;br /&gt;
			wikEd.editHelp.innerHTML = wikEd.config.helpPageLink.replace(/\{wikEdHomeBaseUrl\}/g, wikEd.config.homeBaseUrl);&lt;br /&gt;
			editHelp.parentNode.insertBefore(wikEd.editHelp, editHelp.nextSibling);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add submit buttons to submit wrapper, leaving only checkboxes in editOptions&lt;br /&gt;
	if (wikEd.rearrange === true) {&lt;br /&gt;
		var editButtons = document.getElementsByClassName(&#039;editButtons&#039;)[0];&lt;br /&gt;
		if (editButtons === undefined) {&lt;br /&gt;
			if (wikEd.saveButton !== null) {&lt;br /&gt;
&lt;br /&gt;
				// edit watchlist, semantic forms&lt;br /&gt;
				if (wikEd.editWatchlist === true) {&lt;br /&gt;
					editButtons = wikEd.saveButton;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// semantic forms&lt;br /&gt;
				else {&lt;br /&gt;
					editButtons = wikEd.saveButton.parentNode;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else if (wikEd.previewButton !== null) {&lt;br /&gt;
&lt;br /&gt;
				// edit watchlist&lt;br /&gt;
				if (wikEd.editWatchlist === true) {&lt;br /&gt;
					editButtons = wikEd.previewButton;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					editButtons = wikEd.previewButton.parentNode;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else if (wikEd.diffPreviewButton !== null) {&lt;br /&gt;
				editButtons = wikEd.diffPreviewButton.parentNode;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if ( (editButtons !== undefined) &amp;amp;&amp;amp; (editButtons !== null) ) {&lt;br /&gt;
			wikEd.submitButtonsWrapper.appendChild(editButtons);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get edit checkboxes&lt;br /&gt;
	var editCheckboxes;&lt;br /&gt;
	if (wikEd.editForm !== null) {&lt;br /&gt;
		editCheckboxes = wikEd.editForm.getElementsByClassName(&#039;editCheckboxes&#039;)[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// non-standard page (old, semantic forms...)&lt;br /&gt;
	if (editCheckboxes === undefined) {&lt;br /&gt;
		var checkbox = document.getElementById(&#039;wpMinoredit&#039;);&lt;br /&gt;
		if (checkbox === null) {&lt;br /&gt;
			checkbox = document.getElementById(&#039;wpWatchthis&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		var summary = document.getElementsByName(&#039;wpSummary&#039;)[0];&lt;br /&gt;
		if ( (summary !== undefined) &amp;amp;&amp;amp; (checkbox !== null) ) {&lt;br /&gt;
&lt;br /&gt;
			// get checkbox container, e.g. semantic forms &amp;lt;p&amp;gt;&lt;br /&gt;
			if ( (summary.nextSibling == checkbox.parentNode) || (summary.parentNode.nextSibling == checkbox.parentNode) ) {&lt;br /&gt;
				editCheckboxes = checkbox.parentNode;&lt;br /&gt;
				editCheckboxes.className = &#039;wikEdEditCheckboxes&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// old MediaWiki versions: create edit options container&lt;br /&gt;
			else {&lt;br /&gt;
				editCheckboxes = document.createElement(&#039;div&#039;);&lt;br /&gt;
				editCheckboxes.id = &#039;wikEdEditCheckboxes&#039;;&lt;br /&gt;
				editCheckboxes.className = &#039;wikEdEditCheckboxes&#039;;&lt;br /&gt;
				if (summary.nextSibling == checkbox) {&lt;br /&gt;
					var node = checkbox;&lt;br /&gt;
					while (node !== null) {&lt;br /&gt;
						var nextNode = node.nextSibling;&lt;br /&gt;
						editCheckboxes.appendChild(node);&lt;br /&gt;
						node = nextNode;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add summary elements to summary input wrapper&lt;br /&gt;
	if (wikEd.rearrange === true) {&lt;br /&gt;
		wikEd.summaryLabel = document.getElementById(&#039;wpSummaryLabel&#039;);&lt;br /&gt;
		if (wikEd.summaryLabel !== null) {&lt;br /&gt;
			wikEd.summaryInputWrapper.appendChild(wikEd.summaryLabel);&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.summaryText = document.getElementsByName(&#039;wpSummary&#039;)[0] || null;&lt;br /&gt;
		if (wikEd.summaryText !== null) {&lt;br /&gt;
			wikEd.summaryInputWrapper.appendChild(wikEd.summaryText);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add submit buttons, edit options, and edit help to submit wrapper&lt;br /&gt;
	if (wikEd.submitWrapper !== null) {&lt;br /&gt;
		if (wikEd.submitButtonsWrapper !== null) {&lt;br /&gt;
			wikEd.submitWrapper.appendChild(wikEd.submitButtonsWrapper);&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.editOptionsWrapper !== null) {&lt;br /&gt;
			wikEd.submitWrapper.appendChild(wikEd.editOptionsWrapper);&lt;br /&gt;
			if (editCheckboxes !== undefined) {&lt;br /&gt;
				wikEd.editOptionsWrapper.appendChild(editCheckboxes);&lt;br /&gt;
&lt;br /&gt;
				// remove linebreak before minor edit checkbox&lt;br /&gt;
				var node = editCheckboxes.firstChild;&lt;br /&gt;
				while (node !== null) {&lt;br /&gt;
					if (node.tagName !== null) {&lt;br /&gt;
						if (node.tagName == &#039;BR&#039;) {&lt;br /&gt;
							node.parentNode.removeChild(node);&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					node = node.nextSibling;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add empty editOptions to wikEdConsoleWrapper&lt;br /&gt;
	if (wikEd.consoleWrapper !== null) {&lt;br /&gt;
		var editOptions = document.getElementsByClassName(&#039;editOptions&#039;)[0];&lt;br /&gt;
		if (editOptions !== undefined) {&lt;br /&gt;
			wikEd.consoleWrapper.appendChild(editOptions);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add textBoxTable or textarea to textarea wrapper&lt;br /&gt;
	wikEd.textBoxTable = document.getElementById(&#039;textBoxTable&#039;);&lt;br /&gt;
	if (wikEd.textBoxTable !== null) {&lt;br /&gt;
		wikEd.textareaWrapper.appendChild(wikEd.textBoxTable);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.textareaWrapper.appendChild(wikEd.textarea);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// fill captcha wrapper with elements between form and textarea (table)&lt;br /&gt;
	if (wikEd.captchaWrapper !== null) {&lt;br /&gt;
		if ( (wikEd.editUpload === false) &amp;amp;&amp;amp; (wikEd.editWatchlist === false) ) {&lt;br /&gt;
			var node = wikEd.editForm.firstChild;&lt;br /&gt;
			while (node !== null) {&lt;br /&gt;
				if ( (node == wikEd.inputWrapper) || (node == wikEd.wikiEditor) || (node == wikEd.captchaWrapper)  ) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				var nextNode = node.nextSibling;&lt;br /&gt;
				if (node.tagName != &#039;INPUT&#039;) {&lt;br /&gt;
					wikEd.captchaWrapper.appendChild(node);&lt;br /&gt;
				}&lt;br /&gt;
				node = nextNode;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create editing frame wrapper&lt;br /&gt;
	wikEd.frameOuter = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.frameOuter.id = &#039;wikEdFrameOuter&#039;;&lt;br /&gt;
	wikEd.frameOuter.className = &#039;wikEdFrameOuter&#039;;&lt;br /&gt;
	wikEd.frameWrapper.appendChild(wikEd.frameOuter);&lt;br /&gt;
&lt;br /&gt;
	wikEd.frameInner = document.createElement(&#039;div&#039;);&lt;br /&gt;
	wikEd.frameInner.id = &#039;wikEdFrameInner&#039;;&lt;br /&gt;
	wikEd.frameInner.className = &#039;wikEdFrameInner&#039;;&lt;br /&gt;
	wikEd.frameOuter.appendChild(wikEd.frameInner);&lt;br /&gt;
&lt;br /&gt;
	// remove frame border if textarea has none&lt;br /&gt;
	if (wikEd.textareaBorderHeight === 0) {&lt;br /&gt;
		wikEd.frameInner.style.borderWidth = &#039;0&#039;;&lt;br /&gt;
		wikEd.frameOuter.style.borderWidth = &#039;0&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create editing frame and initialize after iframe loading&lt;br /&gt;
	wikEd.frame = document.createElement(&#039;iframe&#039;);&lt;br /&gt;
	wikEd.frame.addEventListener(&#039;load&#039;, wikEd.FrameLoadHandler, false);&lt;br /&gt;
	wikEd.frame.id = &#039;wikEdFrame&#039;;&lt;br /&gt;
	wikEd.frame.className = &#039;wikEdFrame&#039;;&lt;br /&gt;
	wikEd.frameInner.appendChild(wikEd.frame);&lt;br /&gt;
&lt;br /&gt;
	// set frame height and width, border divs shrink around&lt;br /&gt;
	wikEd.frameBorderHeight = parseInt(wikEd.GetStyle(wikEd.frameOuter, &#039;borderTopWidth&#039;), 10) + parseInt(wikEd.GetStyle(wikEd.frameOuter, &#039;borderBottomWidth&#039;), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, &#039;borderTopWidth&#039;), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, &#039;borderBottomWidth&#039;), 10);&lt;br /&gt;
	wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + &#039;px&#039;;&lt;br /&gt;
	wikEd.frame.style.height = wikEd.frameHeight;&lt;br /&gt;
&lt;br /&gt;
	wikEd.frameBorderWidth = parseInt(wikEd.GetStyle(wikEd.frameOuter, &#039;borderLeftWidth&#039;), 10) + parseInt(wikEd.GetStyle(wikEd.frameOuter, &#039;borderRightWidth&#039;), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, &#039;borderLeftWidth&#039;), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, &#039;borderRightWidth&#039;), 10);&lt;br /&gt;
	wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + &#039;px&#039;;&lt;br /&gt;
	wikEd.frame.style.width = wikEd.frameWidth;&lt;br /&gt;
&lt;br /&gt;
	// generate button bars and add them to the buttons wrapper&lt;br /&gt;
	// form wrapper added against summary input submit defaulting to this button&lt;br /&gt;
	if (wikEd.readOnly === false) {&lt;br /&gt;
		wikEd.buttonBarFormat = wikEd.MakeButtonBar(wikEd.config.buttonBar.format);&lt;br /&gt;
		wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFormat);&lt;br /&gt;
&lt;br /&gt;
		wikEd.buttonBarTextify = wikEd.MakeButtonBar(wikEd.config.buttonBar.textify);&lt;br /&gt;
		wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarTextify);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	wikEd.buttonBarControl = wikEd.MakeButtonBar(wikEd.config.buttonBar.control);&lt;br /&gt;
	wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarControl);&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.config.buttonBar.custom1[6].length &amp;gt; 0) {&lt;br /&gt;
		wikEd.buttonBarCustom1 = wikEd.MakeButtonBar(wikEd.config.buttonBar.custom1);&lt;br /&gt;
		wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarCustom1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	wikEd.buttonBarFind = wikEd.MakeButtonBar(wikEd.config.buttonBar.find);&lt;br /&gt;
	wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFind);&lt;br /&gt;
&lt;br /&gt;
	// inactivate replace buttons for read-only pages&lt;br /&gt;
	if (wikEd.readOnly === true) {&lt;br /&gt;
		document.getElementById(&#039;wikEdReplaceAll&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
		document.getElementById(&#039;wikEdReplacePrev&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
		document.getElementById(&#039;wikEdReplaceNext&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.readOnly === false) {&lt;br /&gt;
		wikEd.buttonBarFix = wikEd.MakeButtonBar(wikEd.config.buttonBar.fix);&lt;br /&gt;
		wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFix);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.config.buttonBar.custom2[6].length &amp;gt; 0) {&lt;br /&gt;
		wikEd.buttonBarCustom2 = wikEd.MakeButtonBar(wikEd.config.buttonBar.custom2);&lt;br /&gt;
		wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarCustom2);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var br = document.createElement(&#039;br&#039;);&lt;br /&gt;
	br.style.clear = &#039;both&#039;;&lt;br /&gt;
	wikEd.buttonsWrapper.appendChild(br);&lt;br /&gt;
	wikEd.caseSensitive = document.getElementById(&#039;wikEdCaseSensitive&#039;);&lt;br /&gt;
	wikEd.regExp = document.getElementById(&#039;wikEdRegExp&#039;);&lt;br /&gt;
	wikEd.findAhead = document.getElementById(&#039;wikEdFindAhead&#039;);&lt;br /&gt;
	wikEd.findText = document.getElementById(&#039;wikEdFindText&#039;);&lt;br /&gt;
	wikEd.replaceText = document.getElementById(&#039;wikEdReplaceText&#039;);&lt;br /&gt;
&lt;br /&gt;
	// add preview box top bar to submit wrapper&lt;br /&gt;
	wikEd.buttonBarPreview = wikEd.MakeButtonBar(wikEd.config.buttonBar.preview);&lt;br /&gt;
	if ( (wikEd.rearrange === true) &amp;amp;&amp;amp; (wikEd.submitWrapper !== null) ) {&lt;br /&gt;
		if ( (wikEd.fullScreenMode === true) &amp;amp;&amp;amp; (wikEd.editArticle === true) &amp;amp;&amp;amp; (wikEd.useWikEd === true) ) {&lt;br /&gt;
			wikEd.buttonBarPreview.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.submitWrapper.appendChild(wikEd.buttonBarPreview);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add pasted button bar to frame wrapper&lt;br /&gt;
	wikEd.buttonBarPasted = wikEd.MakeButtonBar(wikEd.config.buttonBar.pasted);&lt;br /&gt;
	wikEd.buttonBarPasted.style.visibility = &#039;hidden&#039;;&lt;br /&gt;
	wikEd.frameInner.insertBefore(wikEd.buttonBarPasted, wikEd.frameInner.firstChild);&lt;br /&gt;
&lt;br /&gt;
	// add article and diff preview containers and their bottom bar to preview wrapper&lt;br /&gt;
	if (wikEd.localPrevWrapper !== null) {&lt;br /&gt;
&lt;br /&gt;
		// article preview&lt;br /&gt;
		wikEd.previewArticle = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.previewArticle.id = &#039;wikEdPreviewArticle&#039;;&lt;br /&gt;
		wikEd.previewArticle.className = &#039;wikEdPreviewArticle&#039;;&lt;br /&gt;
		wikEd.previewArticle.display = &#039;none&#039;;&lt;br /&gt;
		wikEd.localPrevWrapper.appendChild(wikEd.previewArticle);&lt;br /&gt;
&lt;br /&gt;
		// diff preview&lt;br /&gt;
		wikEd.previewDiff = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wikEd.previewDiff.id = &#039;wikEdPreviewDiff&#039;;&lt;br /&gt;
		wikEd.previewDiff.className = &#039;wikEdPreviewDiff&#039;;&lt;br /&gt;
		wikEd.previewDiff.display = &#039;none&#039;;&lt;br /&gt;
		wikEd.localPrevWrapper.appendChild(wikEd.previewDiff);&lt;br /&gt;
&lt;br /&gt;
		// add preview container bottom bar to preview wrapper&lt;br /&gt;
		wikEd.buttonBarPreview2 = wikEd.MakeButtonBar(wikEd.config.buttonBar.preview2);&lt;br /&gt;
		wikEd.localPrevWrapper.appendChild(wikEd.buttonBarPreview2);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add jump box to standard preview&lt;br /&gt;
	wikEd.wikiPreview = document.getElementById(&#039;wikiPreview&#039;);&lt;br /&gt;
	if (wikEd.wikiPreview !== null) {&lt;br /&gt;
		if (wikEd.wikiPreview.firstChild !== null) {&lt;br /&gt;
			wikEd.buttonBarJump = wikEd.MakeButtonBar(wikEd.config.buttonBar.jump);&lt;br /&gt;
			wikEd.wikiPreview.insertBefore(wikEd.buttonBarJump, wikEd.wikiPreview.firstChild);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add insert special chars to insert wrapper&lt;br /&gt;
	if (wikEd.insertWrapper !== null) {&lt;br /&gt;
		var insert = document.getElementById(&#039;mw-edittools-charinsert&#039;);&lt;br /&gt;
		if (insert === null) {&lt;br /&gt;
			insert = document.getElementById(&#039;editpage-specialchars&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if (insert !== null) {&lt;br /&gt;
			wikEd.insertWrapper.appendChild(insert);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// wrappers filled&lt;br /&gt;
&lt;br /&gt;
	// add local preview button next to submit button&lt;br /&gt;
	if (wikEd.enableLocalPreview !== false) {&lt;br /&gt;
		var previewSpan = document.createElement(&#039;span&#039;);&lt;br /&gt;
		previewSpan.innerHTML = wikEd.MakeButtonCode(82, &#039;button&#039;);&lt;br /&gt;
		if (wikEd.previewButton !== null) {&lt;br /&gt;
			wikEd.previewButton.parentNode.insertBefore(previewSpan, wikEd.previewButton.nextSibling);&lt;br /&gt;
		}&lt;br /&gt;
		else if (wikEd.saveButton !== null) {&lt;br /&gt;
			wikEd.saveButton.parentNode.insertBefore(previewSpan, wikEd.saveButton.nextSibling);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.submitWrapper.insertBefore(previewSpan, wikEd.submitWrapper.firstChild);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add local diff button next to submit button&lt;br /&gt;
		if ( ( (wikEd.diffPreviewButton !== null) || (wikEd.editWatchlist === true) ) &amp;amp;&amp;amp; (wikEd.readOnly === false) ) {&lt;br /&gt;
			var diffSpan = document.createElement(&#039;span&#039;);&lt;br /&gt;
			diffSpan.innerHTML = wikEd.MakeButtonCode(83, &#039;button&#039;);&lt;br /&gt;
			if (wikEd.diffPreviewButton !== null) {&lt;br /&gt;
				wikEd.diffPreviewButton.parentNode.insertBefore(diffSpan, wikEd.diffPreviewButton.nextSibling);&lt;br /&gt;
			}&lt;br /&gt;
			else if (previewSpan !== null) {&lt;br /&gt;
				previewSpan.parentNode.insertBefore(diffSpan, previewSpan.nextSibling);&lt;br /&gt;
			}&lt;br /&gt;
			else if (wikEd.previewButton !== null) {&lt;br /&gt;
				wikEd.previewButton.parentNode.insertBefore(diffSpan, wikEd.previewButton.nextSibling);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// correct tab order between check boxes and submits&lt;br /&gt;
	wikEd.frame.tabIndex = wikEd.textarea.tabIndex;&lt;br /&gt;
&lt;br /&gt;
	// initialize image buttons&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdRefHide&#039;),         &#039;wikEdRefHide&#039;, null, wikEd.refHide);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdHighlightSyntax&#039;), &#039;wikEdHighlightSyntax&#039;, null, wikEd.highlightSyntax);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdUseWikEd&#039;),        &#039;wikEdUseWikEd&#039;, null, wikEd.useWikEd);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdCloseToolbar&#039;),    &#039;wikEdCloseToolbar&#039;, null, wikEd.closeToolbar);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdFullScreen&#039;),      &#039;wikEdFullScreen&#039;, null, wikEd.fullScreenMode);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdUsing&#039;),           &#039;wikEdUsing&#039;, null, wikEd.using);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdCaseSensitive&#039;),   &#039;wikEdCaseSensitive&#039;, null, false);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdRegExp&#039;),          &#039;wikEdRegExp&#039;, null, false);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdFindAhead&#039;),       &#039;wikEdFindAhead&#039;, null, wikEd.config.findAheadSelected);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdClose&#039;),           &#039;wikEdClose&#039;, null, false, &#039;wikEdButton&#039;);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdClose2&#039;),          &#039;wikEdClose2&#039;, null, false, &#039;wikEdButton&#039;);&lt;br /&gt;
	wikEd.Button(document.getElementById(&#039;wikEdTableMode&#039;),       &#039;wikEdTableMode&#039;, null, wikEd.tableMode);&lt;br /&gt;
&lt;br /&gt;
	// grey out fullscreen button&lt;br /&gt;
	if ( (wikEd.editArticle === false) || (wikEd.useWikEd === false) ) {&lt;br /&gt;
		document.getElementById(&#039;wikEdFullScreen&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// grey out close toolbar button&lt;br /&gt;
	if (wikEd.rearrange === false) {&lt;br /&gt;
		document.getElementById(&#039;wikEdCloseToolbar&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// hide typo fix button until typo fix rules are loaded and parsed&lt;br /&gt;
	wikEd.fixRegExTypo = document.getElementById(&#039;wikEdFixRegExTypo&#039;);&lt;br /&gt;
	if (wikEd.fixRegExTypo !== null) {&lt;br /&gt;
		wikEd.fixRegExTypo.style.display = &#039;none&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// hide buttons if API is not available&lt;br /&gt;
	if ( (wikEd.wikiGlobals.wgEnableAPI !== true) &amp;amp;&amp;amp; (wikEd.wikiGlobals.wgEnableAPI != &#039;true&#039;) ) {&lt;br /&gt;
		var fixRedirect = document.getElementById(&#039;wikEdFixRedirect&#039;);&lt;br /&gt;
		if (fixRedirect !== null) {&lt;br /&gt;
			fixRedirect.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add a clear summary button left to the summary input field&lt;br /&gt;
	if (wikEd.summaryText !== null) {&lt;br /&gt;
		var clearSummaryForm = document.createElement(&#039;form&#039;);&lt;br /&gt;
		clearSummaryForm.id = &#039;wikEdClearSummaryForm&#039;;&lt;br /&gt;
		clearSummaryForm.className = &#039;wikEdClearSummaryForm&#039;;&lt;br /&gt;
		wikEd.summaryText.parentNode.insertBefore(clearSummaryForm, wikEd.summaryText);&lt;br /&gt;
&lt;br /&gt;
		wikEd.clearSummary = document.createElement(&#039;button&#039;);&lt;br /&gt;
		wikEd.clearSummary.id = &#039;wikEdClearSummary&#039;;&lt;br /&gt;
		wikEd.clearSummary.className = &#039;wikEdClearSummary&#039;;&lt;br /&gt;
		wikEd.clearSummary.alt = wikEd.config.text[&#039;wikEdClearSummary alt&#039;];&lt;br /&gt;
		wikEd.clearSummary.title = wikEd.config.text[&#039;wikEdClearSummary title&#039;];&lt;br /&gt;
		clearSummaryForm.appendChild(wikEd.clearSummary);&lt;br /&gt;
&lt;br /&gt;
		wikEd.clearSummaryImg = document.createElement(&#039;img&#039;);&lt;br /&gt;
		wikEd.clearSummaryImg.id = &#039;wikEdClearSummaryImg&#039;;&lt;br /&gt;
		wikEd.clearSummaryImg.src = wikEd.config.image[&#039;clearSummary&#039;];&lt;br /&gt;
		wikEd.clearSummaryImg.alt = &#039;Clear summary&#039;;&lt;br /&gt;
		wikEd.clearSummary.appendChild(wikEd.clearSummaryImg);&lt;br /&gt;
&lt;br /&gt;
		// remember button width, might be without image&lt;br /&gt;
		wikEd.clearSummaryWidth = wikEd.clearSummary.offsetWidth;&lt;br /&gt;
&lt;br /&gt;
		// make the summary a combo box&lt;br /&gt;
		var summaryComboInput = document.createElement(&#039;span&#039;);&lt;br /&gt;
		summaryComboInput.id = &#039;wikEdSummaryComboInput&#039;;&lt;br /&gt;
		summaryComboInput.className = &#039;wikEdSummaryComboInput&#039;;&lt;br /&gt;
		summaryComboInput = wikEd.summaryText.parentNode.insertBefore(summaryComboInput, wikEd.summaryText);&lt;br /&gt;
&lt;br /&gt;
		wikEd.summaryText = wikEd.summaryText.parentNode.removeChild(wikEd.summaryText);&lt;br /&gt;
		wikEd.summaryText.className = &#039;wikEdSummaryText&#039;;&lt;br /&gt;
		wikEd.summaryTextWidth = wikEd.summaryWrapper.offsetWidth - wikEd.summaryInputWrapper.offsetWidth;&lt;br /&gt;
		if (wikEd.summaryTextWidth &amp;lt; 150) {&lt;br /&gt;
			wikEd.summaryTextWidth = 150;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.summaryText.style.width = wikEd.summaryTextWidth + &#039;px&#039;;&lt;br /&gt;
&lt;br /&gt;
		wikEd.summarySelect = document.createElement(&#039;select&#039;);&lt;br /&gt;
		wikEd.summarySelect.id = &#039;wikEdSummarySelect&#039;;&lt;br /&gt;
		wikEd.summarySelect.className = &#039;wikEdSummarySelect&#039;;&lt;br /&gt;
&lt;br /&gt;
		summaryComboInput.appendChild(wikEd.summaryText);&lt;br /&gt;
		summaryComboInput.appendChild(wikEd.summarySelect);&lt;br /&gt;
&lt;br /&gt;
		// repair summary combo css (e.g. Wikisource MediaWiki:Common.css/Tweaks.css)&lt;br /&gt;
		wikEd.summaryText.style.setProperty(&#039;position&#039;, &#039;absolute&#039;, &#039;important&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// shorten submit button texts&lt;br /&gt;
	if (wikEd.previewButton !== null) {&lt;br /&gt;
		wikEd.previewButton.value = wikEd.config.text.shortenedPreview;&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.diffPreviewButton !== null) {&lt;br /&gt;
		wikEd.diffPreviewButton.value = wikEd.config.text.shortenedChanges;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set up combo input boxes with history&lt;br /&gt;
	wikEd.fieldHist [&#039;find&#039;] = [];&lt;br /&gt;
	wikEd.savedName.find = &#039;wikEdFindHistory&#039;;&lt;br /&gt;
	wikEd.inputElement.find = new Object(wikEd.findText);&lt;br /&gt;
	wikEd.selectElement.find = new Object(document.getElementById(&#039;wikEdFindSelect&#039;));&lt;br /&gt;
	wikEd.selectElement.find.title = wikEd.config.text[&#039;wikEdFindSelect title&#039;];&lt;br /&gt;
&lt;br /&gt;
	wikEd.fieldHist [&#039;replace&#039;] = [];&lt;br /&gt;
	wikEd.savedName.replace = &#039;wikEdReplaceHistory&#039;;&lt;br /&gt;
	wikEd.inputElement.replace = new Object(wikEd.replaceText);&lt;br /&gt;
	wikEd.selectElement.replace = new Object(document.getElementById(&#039;wikEdReplaceSelect&#039;));&lt;br /&gt;
	wikEd.selectElement.replace.title = wikEd.config.text[&#039;wikEdReplaceSelect title&#039;];&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.summaryInputWrapper !== null) {&lt;br /&gt;
		wikEd.fieldHist [&#039;summary&#039;] = [];&lt;br /&gt;
		wikEd.savedName.summary = &#039;wikEdSummaryHistory&#039;;&lt;br /&gt;
		wikEd.inputElement.summary = new Object(wikEd.summaryText);&lt;br /&gt;
		wikEd.selectElement.summary = new Object(document.getElementById(&#039;wikEdSummarySelect&#039;));&lt;br /&gt;
		wikEd.selectElement.summary.title = wikEd.config.text[&#039;wikEdSummarySelect title&#039;];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// adjust the select field widths to that of the text input fields&lt;br /&gt;
	wikEd.ResizeComboInput(&#039;find&#039;);&lt;br /&gt;
	wikEd.ResizeComboInput(&#039;replace&#039;);&lt;br /&gt;
	if (wikEd.summaryText !== null) {&lt;br /&gt;
		wikEd.ResizeComboInput(&#039;summary&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// hide the button bars per saved setting&lt;br /&gt;
	if (wikEd.buttonBarFormat !== null) {&lt;br /&gt;
		wikEd.ButtonBarInit(wikEd.buttonBarFormat);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarTextify !== null) {&lt;br /&gt;
		wikEd.ButtonBarInit(wikEd.buttonBarTextify);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarControl !== null) {&lt;br /&gt;
		wikEd.ButtonBarInit(wikEd.buttonBarControl);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarCustom1 !== null) {&lt;br /&gt;
		wikEd.ButtonBarInit(wikEd.buttonBarCustom1);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarFind !== null) {&lt;br /&gt;
		wikEd.ButtonBarInit(wikEd.buttonBarFind);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarFix !== null) {&lt;br /&gt;
		wikEd.ButtonBarInit(wikEd.buttonBarFix);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarCustom2 !== null) {&lt;br /&gt;
		wikEd.ButtonBarInit(wikEd.buttonBarCustom2);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// copy page warnings above edit window&lt;br /&gt;
	if ( (wikEd.config.doCloneWarnings === true) &amp;amp;&amp;amp; (wikEd.editForm !== null) ) {&lt;br /&gt;
		if ( (wikEd.clonedWarnings === false) &amp;amp;&amp;amp; (wikEd.previewPage === false) &amp;amp;&amp;amp; (/(.*\n){2}/.test(wikEd.origVersion) ) === true) {&lt;br /&gt;
			var divs = document.getElementsByTagName(&#039;div&#039;);&lt;br /&gt;
			var divWarnings = [];&lt;br /&gt;
			var editnoticeArea = false;&lt;br /&gt;
			for (var i = 0; i &amp;lt; divs.length; i ++) {&lt;br /&gt;
				var div = divs[i];&lt;br /&gt;
				if (/editnotice/.test(div.id) === true) {&lt;br /&gt;
					if (editnoticeArea === false) {&lt;br /&gt;
						divWarnings.push(div);&lt;br /&gt;
						editnoticeArea = true;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else if (/mw-.*?warning/.test(div.className) === true) {&lt;br /&gt;
					divWarnings.push(div);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// create clone wrapper&lt;br /&gt;
			if (divWarnings.length &amp;gt; 0) {&lt;br /&gt;
				var cloneWrapper = document.createElement(&#039;div&#039;);&lt;br /&gt;
				cloneWrapper.id = &#039;wikEdClonedWarnings&#039;;&lt;br /&gt;
				var cloneNote = document.createElement(&#039;div&#039;);&lt;br /&gt;
				cloneNote.id = &#039;wikEdClonedWarningsNote&#039;;&lt;br /&gt;
				cloneNote.innerHTML = wikEd.config.text[&#039;clonedWarningsNote&#039;];&lt;br /&gt;
				cloneWrapper.appendChild(cloneNote);&lt;br /&gt;
				for (var i = 0; i &amp;lt; divWarnings.length; i ++) {&lt;br /&gt;
					var clone = divWarnings[i].cloneNode(true);&lt;br /&gt;
&lt;br /&gt;
					// ignore redlink-only edit warnings&lt;br /&gt;
					var html = clone.innerHTML;&lt;br /&gt;
					html = html.replace(/&amp;lt;a\b[^&amp;gt;].*?\bclass=&amp;quot;new&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/a&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
					html = html.replace(/&amp;lt;(.|\n)*?&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
					html = html.replace(/\s*/g, &#039;&#039;);&lt;br /&gt;
					if (html === &#039;&#039;) {&lt;br /&gt;
						continue;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					cloneWrapper.appendChild(clone);&lt;br /&gt;
					wikEd.clonedWarnings = true;&lt;br /&gt;
				}&lt;br /&gt;
				if (wikEd.clonedWarnings === true) {&lt;br /&gt;
					wikEd.inputWrapper.parentNode.insertBefore(cloneWrapper, wikEd.inputWrapper);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// init and resize frame after buttons and summary are in place, wait until iframe has been loaded&lt;br /&gt;
	if (wikEd.frameLoaded === false) {&lt;br /&gt;
		wikEd.frame.addEventListener(&#039;load&#039;, wikEd.InitializeFrame, false);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.InitializeFrame();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// scroll to edit window and focus if not preview page or Semantic Form&lt;br /&gt;
	if ( (scrollToEditFocus === true) &amp;amp;&amp;amp; (wikEd.previewPage === false) &amp;amp;&amp;amp; (wikEd.editSemanticForm === false) ) {&lt;br /&gt;
&lt;br /&gt;
		// focus the input field&lt;br /&gt;
		if ( (wikEd.config.focusEdit === true) &amp;amp;&amp;amp; (wikEd.useWikEd === false) ) {&lt;br /&gt;
			wikEd.textarea.setSelectionRange(0, 0);&lt;br /&gt;
			wikEd.textarea.focus();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// scroll&lt;br /&gt;
		if ( (wikEd.fullScreenMode === false) &amp;amp;&amp;amp; (wikEd.config.scrollToEdit === true) ) {&lt;br /&gt;
			window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper) - 2);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register edit button click events&lt;br /&gt;
	for (var buttonId in wikEd.editButtonHandler) {&lt;br /&gt;
		if (Object.prototype.hasOwnProperty.call(wikEd.editButtonHandler, buttonId) === true) {&lt;br /&gt;
			var buttonObj = document.getElementById(buttonId);&lt;br /&gt;
			if (buttonObj !== null) {&lt;br /&gt;
				buttonObj.addEventListener(&#039;click&#039;, wikEd.EditButtonHandler, true);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register summary shrinking event after loading the &#039;Clear summary&#039; image handler&lt;br /&gt;
	if (wikEd.clearSummaryImg !== null) {&lt;br /&gt;
		wikEd.clearSummaryImg.addEventListener(&#039;load&#039;, wikEd.ShrinkSummaryHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register summary resize event for window resizing&lt;br /&gt;
	window.addEventListener(&#039;resize&#039;, wikEd.ResizeWindowHandler, true);&lt;br /&gt;
&lt;br /&gt;
	// register document events&lt;br /&gt;
	document.addEventListener(&#039;keydown&#039;, wikEd.KeyHandler, true);&lt;br /&gt;
&lt;br /&gt;
	// dblclick on wrapper events&lt;br /&gt;
	wikEd.debugWrapper.addEventListener(&#039;dblclick&#039;, wikEd.DebugHandler, true);&lt;br /&gt;
	wikEd.localPrevWrapper.addEventListener(&#039;dblclick&#039;, wikEd.PrevWrapperHandler, true);&lt;br /&gt;
&lt;br /&gt;
	// register find ahead events&lt;br /&gt;
	wikEd.findText.addEventListener(&#039;keyup&#039;, wikEd.FindAhead, true);&lt;br /&gt;
&lt;br /&gt;
	// register submit button events&lt;br /&gt;
	if (wikEd.saveButton !== null) {&lt;br /&gt;
		wikEd.saveButton.addEventListener(&#039;click&#039;, wikEd.SaveButtonHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.previewButton !== null) {&lt;br /&gt;
		wikEd.previewButton.addEventListener(&#039;click&#039;, wikEd.PreviewButtonHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.diffPreviewButton !== null) {&lt;br /&gt;
		wikEd.diffPreviewButton.addEventListener(&#039;click&#039;, wikEd.DiffPreviewButtonHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set button bar grip area events&lt;br /&gt;
	if (wikEd.buttonBarFormat !== null) {&lt;br /&gt;
		wikEd.buttonBarFormat.firstChild.firstChild.addEventListener(&#039;click&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarTextify !== null) {&lt;br /&gt;
		wikEd.buttonBarTextify.firstChild.firstChild.addEventListener(&#039;click&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarControl !== null) {&lt;br /&gt;
		wikEd.buttonBarControl.firstChild.firstChild.addEventListener(&#039;click&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarCustom1 !== null) {&lt;br /&gt;
		if (wikEd.buttonBarCustom1.firstChild.firstChild !== null) {&lt;br /&gt;
			wikEd.buttonBarCustom1.firstChild.firstChild.addEventListener(&#039;click&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarFind !== null) {&lt;br /&gt;
		wikEd.buttonBarFind.firstChild.firstChild.addEventListener(&#039;click&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarFix !== null) {&lt;br /&gt;
		wikEd.buttonBarFix.firstChild.firstChild.addEventListener(&#039;click&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.buttonBarCustom2 !== null) {&lt;br /&gt;
		if (wikEd.buttonBarCustom2.firstChild.firstChild !== null) {&lt;br /&gt;
			wikEd.buttonBarCustom2.firstChild.firstChild.addEventListener(&#039;click&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register combo box events&lt;br /&gt;
	if (wikEd.summarySelect !== null) {&lt;br /&gt;
		wikEd.summarySelect.addEventListener(&#039;change&#039;, function () { wikEd.ChangeComboInput(&#039;summary&#039;); }, false);&lt;br /&gt;
		wikEd.summarySelect.addEventListener(&#039;focus&#039;, function () { wikEd.SetComboOptions(&#039;summary&#039;); }, false);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.selectElement.find !== null) {&lt;br /&gt;
		wikEd.selectElement.find.addEventListener(&#039;change&#039;, function () { wikEd.ChangeComboInput(&#039;find&#039;); }, false);&lt;br /&gt;
		wikEd.selectElement.find.addEventListener(&#039;focus&#039;, function () { wikEd.SetComboOptions(&#039;find&#039;); }, false);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.selectElement.replace !== null) {&lt;br /&gt;
		wikEd.selectElement.replace.addEventListener(&#039;change&#039;, function () { wikEd.ChangeComboInput(&#039;replace&#039;); }, false);&lt;br /&gt;
		wikEd.selectElement.replace.addEventListener(&#039;focus&#039;, function () { wikEd.SetComboOptions(&#039;replace&#039;); }, false);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register the clear summary click handler&lt;br /&gt;
	if (wikEd.clearSummary !== null) {&lt;br /&gt;
		wikEd.clearSummary.addEventListener(&#039;click&#039;, wikEd.ClearSummaryHandler, false);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register double click handler on wiki preview area&lt;br /&gt;
	if (wikEd.wikiPreview !== null) {&lt;br /&gt;
		wikEd.wikiPreview.addEventListener(&#039;dblclick&#039;, wikEd.WikiPreviewHandler, false);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register special char insert select handler for fullscreen resizing&lt;br /&gt;
	if (wikEd.insertWrapper !== null) {&lt;br /&gt;
		var select = wikEd.insertWrapper.getElementsByTagName(&#039;select&#039;)[0];&lt;br /&gt;
		if (select !== undefined) {&lt;br /&gt;
			select.addEventListener(&#039;change&#039;, wikEd.InsertChangeHandler, true);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// select the text on focus for find and replace fields, tab/shift-tab between find and replace fields&lt;br /&gt;
	if (wikEd.findText !== null) {&lt;br /&gt;
		wikEd.findText.addEventListener(&#039;focus&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
		wikEd.findText.addEventListener(&#039;keydown&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.replaceText !== null) {&lt;br /&gt;
		wikEd.replaceText.addEventListener(&#039;focus&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
		wikEd.replaceText.addEventListener(&#039;keydown&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check if dynamically inserted addon tags have to be removed: Web of Trust (WOT)&lt;br /&gt;
	if (document.getElementById(&#039;wot-logo&#039;) !== null) {&lt;br /&gt;
		wikEd.cleanNodes = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// override insertTags function used by standard button toolbar and editpage special chars with wikEd replacement&lt;br /&gt;
&lt;br /&gt;
	// window.mw.toolbar.insertTags&lt;br /&gt;
	if ( (window.mw !== undefined) &amp;amp;&amp;amp; (window.mw.toolbar !== undefined) &amp;amp;&amp;amp; (typeof window.mw.toolbar.insertTags === &#039;function&#039;) ) {&lt;br /&gt;
		if (wikEd.InsertTagsOriginal === null) {&lt;br /&gt;
			wikEd.InsertTagsOriginal = window.mw.toolbar.insertTags;&lt;br /&gt;
		}&lt;br /&gt;
		window.mw.toolbar.insertTags = wikEd.InsertTags;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// deprecated insertTags function in wikibits.js&lt;br /&gt;
	else if (typeof window.insertTags == &#039;function&#039;) {&lt;br /&gt;
		if (wikEd.InsertTagsOriginal === null) {&lt;br /&gt;
			wikEd.InsertTagsOriginal = window.insertTags;&lt;br /&gt;
		}&lt;br /&gt;
		window.insertTags = wikEd.InsertTags;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (typeof jQuery == &#039;function&#039;) {&lt;br /&gt;
		// hook wikEd into the enhanced new edit toolbar, not Greasemonkey compatible&lt;br /&gt;
		jQuery(&#039;#wpTextbox1&#039;).bind(&#039;encapsulateSelection&#039;, function (e, before, inside, after) {&lt;br /&gt;
			if (wikEd.useWikEd === true) {&lt;br /&gt;
				wikEd.InsertTags(before, after, inside);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		// allow other code to cause us to update the textarea via textSelection( &#039;getContents&#039; )&lt;br /&gt;
		$( &#039;#wpTextbox1&#039; ).textSelection(&lt;br /&gt;
			&#039;register&#039;,&lt;br /&gt;
			{&lt;br /&gt;
				getContents: function () {&lt;br /&gt;
					if ( wikEd &amp;amp;&amp;amp; wikEd.useWikEd ) {&lt;br /&gt;
						wikEd.UpdateTextarea();&lt;br /&gt;
					}&lt;br /&gt;
					return $( this ).val();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// update textarea before using UI LivePreview function, not Greasemonkey compatible&lt;br /&gt;
	if ( (typeof jQuery == &#039;function&#039;) &amp;amp;&amp;amp; (typeof window.mw == &#039;object&#039;) ) {&lt;br /&gt;
		jQuery(window.mw).bind(&#039;LivePreviewPrepare&#039;, function (event) {&lt;br /&gt;
			if (wikEd.useWikEd === true) {&lt;br /&gt;
				wikEd.UpdateTextarea();&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// override insertAtCursor function in wikia.com MediaWiki:Functions.js, not Greasemonkey compatible&lt;br /&gt;
	if (typeof window.insertAtCursor == &#039;function&#039;) {&lt;br /&gt;
		if (wikEd.InsertAtCursorOriginal === null) {&lt;br /&gt;
			wikEd.InsertAtCursorOriginal = window.insertAtCursor;&lt;br /&gt;
		}&lt;br /&gt;
		window.insertAtCursor = wikEd.InsertAtCursor;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// reset error indicator&lt;br /&gt;
	wikEd.SetLogo();&lt;br /&gt;
	wikEd.turnedOn = true;&lt;br /&gt;
&lt;br /&gt;
	// get frame resize grip image dimensions&lt;br /&gt;
	var resizeGripImage = document.createElement(&#039;img&#039;);&lt;br /&gt;
	resizeGripImage.id = &#039;wikEdResizeGrip&#039;;&lt;br /&gt;
	resizeGripImage.addEventListener(&#039;load&#039;, wikEd.ResizeGripLoadHandler, true);&lt;br /&gt;
	resizeGripImage.src = wikEd.config.image[&#039;resizeGrip&#039;];&lt;br /&gt;
&lt;br /&gt;
	// remove accesskeys that are defined in wikEd from page elements&lt;br /&gt;
	wikEd.DeleteAccesskeys();&lt;br /&gt;
&lt;br /&gt;
	// disable CodeEditor button when wikEd is active&lt;br /&gt;
	wikEd.DisableCodeEditorButton();&lt;br /&gt;
&lt;br /&gt;
	// run scheduled custom functions&lt;br /&gt;
	wikEd.ExecuteHook(wikEd.config.setupHook);&lt;br /&gt;
&lt;br /&gt;
	// load and parse RegExTypoFix rules if the button is enabled&lt;br /&gt;
	wikEd.LoadTypoFixRules();&lt;br /&gt;
&lt;br /&gt;
	// done with setup and turn-on&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetPaths: get MediaWiki file paths from wikiGlobals if possible&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetPaths = function () {&lt;br /&gt;
&lt;br /&gt;
	// init MediaWiki file paths for use in regexps&lt;br /&gt;
	if (wikEd.wikiGlobals.wgServer !== undefined) {&lt;br /&gt;
		wikEd.server = wikEd.wikiGlobals.wgServer;&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.wikiGlobals.wgArticlePath !== undefined) {&lt;br /&gt;
		wikEd.articlePath = wikEd.wikiGlobals.wgArticlePath;&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.wikiGlobals.wgScriptPath !== undefined) {&lt;br /&gt;
		wikEd.scriptPath = wikEd.wikiGlobals.wgScriptPath;&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.wikiGlobals.wgScript !== undefined) {&lt;br /&gt;
		wikEd.script = wikEd.wikiGlobals.wgScript;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	wikEd.articlePath = wikEd.articlePath.replace(wikEd.server, &#039;&#039;);&lt;br /&gt;
	wikEd.scriptPath = wikEd.scriptPath.replace(wikEd.server, &#039;&#039;);&lt;br /&gt;
	wikEd.articlePath = wikEd.articlePath.replace(/\$1$/, &#039;&#039;);&lt;br /&gt;
	wikEd.scriptPath = wikEd.scriptPath.replace(/\/?$/, &#039;/&#039;);&lt;br /&gt;
	wikEd.scriptName = wikEd.script.replace(wikEd.scriptPath, &#039;&#039;);&lt;br /&gt;
	wikEd.scriptURL = wikEd.server + wikEd.scriptPath;&lt;br /&gt;
&lt;br /&gt;
	// prepare for use in regexps&lt;br /&gt;
	wikEd.server = wikEd.server.replace(/(\W)/g, &#039;\\$1&#039;);&lt;br /&gt;
	wikEd.articlePath = wikEd.articlePath.replace(/(\W)/g, &#039;\\$1&#039;);&lt;br /&gt;
	wikEd.script = wikEd.script.replace(/(\W)/g, &#039;\\$1&#039;);&lt;br /&gt;
	wikEd.scriptPath = wikEd.scriptPath.replace(/(\W)/g, &#039;\\$1&#039;);&lt;br /&gt;
	wikEd.scriptName = wikEd.scriptName.replace(/(\W)/g, &#039;\\$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FrameLoadHandler: load handler for iframe&lt;br /&gt;
//   Chrome fires iframe load event immediately after element creation, Firefox fires much later and then deletes already added content&lt;br /&gt;
&lt;br /&gt;
wikEd.FrameLoadHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// remove event listener&lt;br /&gt;
	wikEd.frame.removeEventListener(&#039;load&#039;, wikEd.FrameLoadHandler, false);&lt;br /&gt;
&lt;br /&gt;
	// set frame loaded flag&lt;br /&gt;
	wikEd.frameLoaded = true;&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InitializeFrame: initialize editing iframe after loading&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InitializeFrame = function () {&lt;br /&gt;
&lt;br /&gt;
	// remove event listener&lt;br /&gt;
	wikEd.frame.removeEventListener(&#039;load&#039;, wikEd.InitializeFrame, false);&lt;br /&gt;
&lt;br /&gt;
	// get object shortcuts&lt;br /&gt;
	wikEd.frameWindow = wikEd.frame.contentWindow;&lt;br /&gt;
	wikEd.frameDocument = wikEd.frameWindow.document;&lt;br /&gt;
	wikEd.frameHtml = wikEd.frameDocument.documentElement;&lt;br /&gt;
	wikEd.frameBody = wikEd.frameDocument.body;&lt;br /&gt;
&lt;br /&gt;
	// set frame body properties&lt;br /&gt;
	if (wikEd.highlightSyntax === true) {&lt;br /&gt;
		if (wikEd.refHide === true) {&lt;br /&gt;
			wikEd.frameBody.className = &#039;wikEdFrameBodyNewbie&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.frameBody.className = &#039;wikEdFrameBodySyntax&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.frameBody.className = &#039;wikEdFrameBodyPlain&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.frameBody.contentEditable = &#039;true&#039;;&lt;br /&gt;
	if (wikEd.noSpellcheck === true) {&lt;br /&gt;
		wikEd.frameBody.spellcheck = &#039;false&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// disable table resizing controls in Firefox&lt;br /&gt;
	try {&lt;br /&gt;
		wikEd.frameDocument.execCommand(&#039;enableObjectResizing&#039;, false, &#039;false&#039;);&lt;br /&gt;
		wikEd.frameDocument.execCommand(&#039;enableInlineTableEditing&#039;, false, &#039;false&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	catch (exception) {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// display iframe, hide textarea, set fullscreen&lt;br /&gt;
	wikEd.SetEditArea(wikEd.useWikEd, true);&lt;br /&gt;
&lt;br /&gt;
	// add frame stylesheets&lt;br /&gt;
	wikEd.frameHtml.className = &#039;wikEdFrameHtml&#039;;&lt;br /&gt;
	wikEd.direction = wikEd.GetStyle(document.body, &#039;direction&#039;);&lt;br /&gt;
	wikEd.frameBody.style.direction = wikEd.direction;&lt;br /&gt;
	wikEd.ApplyCSS(wikEd.frameDocument, wikEd.config.frameCSS);&lt;br /&gt;
	wikEd.HighlightNamedHideButtonsStylesheet = new wikEd.StyleSheet(wikEd.frameDocument);&lt;br /&gt;
&lt;br /&gt;
	// copy textarea background style&lt;br /&gt;
	wikEd.textareaBackgroundColor = wikEd.GetStyle(wikEd.textarea, &#039;backgroundColor&#039;);&lt;br /&gt;
	if (wikEd.config.frameBackgroundColor === true) {&lt;br /&gt;
		wikEd.frameInner.style.setProperty(&#039;background-color&#039;, wikEd.textareaBackgroundColor);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// adjust font size (px)&lt;br /&gt;
	wikEd.textSizeInit = parseFloat(wikEd.GetStyle(wikEd.textarea, &#039;fontSize&#039;)) * wikEd.config.textSizeAdjust / 100;&lt;br /&gt;
	wikEd.textSize = wikEd.textSizeInit;&lt;br /&gt;
	wikEd.frameBody.style.fontSize = wikEd.textSize + &#039;px&#039;;&lt;br /&gt;
&lt;br /&gt;
	// copy textarea content into iframe and focus&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		wikEd.ScanPreviewRedlinks();&lt;br /&gt;
		wikEd.UpdateFrame();&lt;br /&gt;
		if ( (wikEd.config.focusEdit === true) &amp;amp;&amp;amp; (wikEd.previewPage === false) &amp;amp;&amp;amp; (wikEd.editSemanticForm === false) ) {&lt;br /&gt;
			wikEd.frameBody.focus();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// make read only&lt;br /&gt;
	if (wikEd.readOnly === true) {&lt;br /&gt;
		wikEd.frameBody.contentEditable = &#039;false&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// register frame events&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;keydown&#039;, wikEd.KeyFrameHandler, true);&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;keyup&#039;, wikEd.KeyFrameHandler, true);&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;keypress&#039;, wikEd.KeyFrameHandler, true);&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;click&#039;, wikEd.KeyFrameHandler, true);&lt;br /&gt;
&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;keydown&#039;, wikEd.KeyHandler, true);&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;mousemove&#039;, wikEd.ResizeGripHandler, true);&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;dblclick&#039;, wikEd.ResizeFrameResetHandler, true);&lt;br /&gt;
&lt;br /&gt;
	// register paste events&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;paste&#039;, wikEd.PasteFrameHandler, true);&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;drop&#039;, wikEd.PasteFrameHandler, true);&lt;br /&gt;
	wikEd.frameDocument.addEventListener(&#039;paste&#039;, wikEd.KeyFrameHandler, true);&lt;br /&gt;
&lt;br /&gt;
	// fullscreen mode&lt;br /&gt;
	if (wikEd.fullScreenMode === true) {&lt;br /&gt;
		wikEd.FullScreen(true, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// needed for upload and edit raw watchlist&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.ResizeWindowHandler();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// unload (leaving page) events&lt;br /&gt;
	window.addEventListener(&#039;pagehide&#039;, wikEd.UnloadHandler, false);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.CodeEditorCheck: check for active code editor and .js or .css page&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.CodeEditorCheck = function () {&lt;br /&gt;
&lt;br /&gt;
	wikEd.jsPage = false;&lt;br /&gt;
	wikEd.cssPage = false;&lt;br /&gt;
	wikEd.useCodeEditor = false;&lt;br /&gt;
&lt;br /&gt;
	// check if .js or .css page&lt;br /&gt;
	if ( (wikEd.wikiGlobals.wgCanonicalNamespace == &#039;MediaWiki&#039;) || ( (wikEd.wikiGlobals.wgCanonicalNamespace == &#039;User&#039;) &amp;amp;&amp;amp; (wikEd.wikiGlobals.wgTitle.indexOf(&#039;/&#039;) &amp;gt;= 0) ) ) {&lt;br /&gt;
		if (/\.js$/.test(wikEd.wikiGlobals.wgTitle) === true) {&lt;br /&gt;
			wikEd.jsPage = true;&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
		else if (/\.css$/.test(wikEd.wikiGlobals.wgTitle) === true) {&lt;br /&gt;
			wikEd.cssPage = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check for code editor&lt;br /&gt;
	if ( (wikEd.jsPage === true) || (wikEd.cssPage === true) ) {&lt;br /&gt;
		if (wikEd.wikiGlobals.wgPageContentModel === undefined) {&lt;br /&gt;
			if (wikEd.GetCookie(&#039;wikiEditor-0-codeEditor-enabled&#039;) == 1) {&lt;br /&gt;
				wikEd.useCodeEditor = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if (wikEd.wikiGlobals.wgPageContentModel != &#039;wikitext&#039;) {&lt;br /&gt;
			if (wikEd.GetCookie(&#039;wikiEditor-0-codeEditor-enabled&#039;) == 1) {&lt;br /&gt;
				wikEd.useCodeEditor = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// wait for landing patch: https://gerrit.wikimedia.org/r/#/c/130068/&lt;br /&gt;
		if ( (window.mw !== undefined) &amp;amp;&amp;amp; (window.mw.user !== undefined) &amp;amp;&amp;amp; (window.mw.user.options !== undefined) ) {&lt;br /&gt;
			if (window.mw.user.options.get(&#039;usebetatoolbar&#039;) == 1) {&lt;br /&gt;
				wikEd.useBetaToolbar = true;&lt;br /&gt;
				if (window.mw.user.options.get(&#039;usecodeeditor&#039;) == 1) {&lt;br /&gt;
					wikEd.useCodeEditor = true;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DisableCodeEditorButton: disable CodeEditor button when wikEd is active&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DisableCodeEditorButton = function () {&lt;br /&gt;
&lt;br /&gt;
	if ( (wikEd.config.disableCodeEditorButton === true) &amp;amp;&amp;amp; ( (wikEd.useBetaToolbar === true) || (wikEd.wikiEditorBar !== null) ) ) {&lt;br /&gt;
		var buttons = document.body.getElementsByClassName(&#039;tool-button&#039;);&lt;br /&gt;
		var disabled = false;&lt;br /&gt;
		for (var i = 0; i &amp;lt; buttons.length; i ++) {&lt;br /&gt;
			var rel = buttons[i].getAttribute(&#039;rel&#039;);&lt;br /&gt;
			var title = buttons[i].getAttribute(&#039;title&#039;);&lt;br /&gt;
			if (rel == &#039;codeEditor&#039;) {&lt;br /&gt;
				var buttonClone = buttons[i].cloneNode(true);&lt;br /&gt;
				buttonClone.setAttribute(&#039;rel&#039;, rel + &#039;_disabled_by_wikEd&#039;);&lt;br /&gt;
				buttonClone.setAttribute(&#039;title&#039;, title + wikEd.config.text[&#039;wikEdCodeEditorButtonDisabled&#039;]);&lt;br /&gt;
				buttons[i].style.display = &#039;none&#039;;&lt;br /&gt;
				buttons[i].parentNode.insertBefore(buttonClone, buttons[i]);&lt;br /&gt;
				disabled = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// poll between 0.1 and 12 s&lt;br /&gt;
		if ( (disabled === false) &amp;amp;&amp;amp; (wikEd.codeEditorButtonPollCount &amp;lt; 15) ) {&lt;br /&gt;
			var delay = 100 + wikEd.codeEditorButtonPollCount * 100;&lt;br /&gt;
			wikEd.codeEditorButtonPollCount ++;&lt;br /&gt;
			window.setTimeout(wikEd.DisableCodeEditorButton, delay);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DeleteAccesskeys: remove accesskeys that are defined in wikEd from page elements&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DeleteAccesskeys = function () {&lt;br /&gt;
&lt;br /&gt;
	var accesskeyTags = [&#039;textarea&#039;, &#039;input&#039;, &#039;a&#039;];&lt;br /&gt;
	for (var i = 0; i &amp;lt; accesskeyTags.length; i ++) {&lt;br /&gt;
		var accesskeyElements = document.getElementsByTagName(accesskeyTags[i]);&lt;br /&gt;
		for (var j = 0; j &amp;lt; accesskeyElements.length; j ++) {&lt;br /&gt;
			var attribute = accesskeyElements[j].getAttribute(&#039;accesskey&#039;);&lt;br /&gt;
			if (attribute !== null) {&lt;br /&gt;
				if (wikEd.buttonKeyCode[ attribute.toUpperCase().charCodeAt(0) ] !== undefined) {&lt;br /&gt;
					accesskeyElements[j].setAttribute(&#039;accesskey&#039;, null);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AutoUpdate: check for the latest version and force-reload to update&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AutoUpdate = function () {&lt;br /&gt;
&lt;br /&gt;
	// check only on non-interaction pages&lt;br /&gt;
	if (/(\?|&amp;amp;)action=/.test(window.location.search) === true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check if autoupdate is enabled&lt;br /&gt;
	if (wikEd.config.autoUpdate !== true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// install bugfix (fix script duplication after @namespace change in version 0.9.127)&lt;br /&gt;
	if (wikEd.greasemonkey === true) {&lt;br /&gt;
		var currentVersion = wikEd.VersionToNumber(wikEd.programVersion);&lt;br /&gt;
		if (currentVersion &amp;lt; 9127000) {&lt;br /&gt;
			var updatePopup = wikEd.config.text.wikEdGreasemonkeyAutoUpdateBugfix;&lt;br /&gt;
			var updateURL = wikEd.config.autoUpdateScriptUrlBugfix;&lt;br /&gt;
			var protocol = document.location.href.replace(/\/\/.*/, &#039;&#039;);&lt;br /&gt;
			updateURL = updateURL.replace(/^(?=\/\/)/, protocol);&lt;br /&gt;
			updatePopup = updatePopup.replace(/\{updateURL\}/g, updateURL);&lt;br /&gt;
			window.alert(updatePopup);&lt;br /&gt;
			window.location.href = updateURL;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check for forced update check&lt;br /&gt;
	var forcedUpdate = false;&lt;br /&gt;
	if (wikEd.config.forcedUpdate !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// get version numbers from strings&lt;br /&gt;
		var currentVersion = wikEd.VersionToNumber(wikEd.programVersion);&lt;br /&gt;
		var forcedVersion = wikEd.VersionToNumber(wikEd.config.forcedUpdate);&lt;br /&gt;
&lt;br /&gt;
		// schedule forced update check&lt;br /&gt;
		if ( (currentVersion !== &#039;&#039;) &amp;amp;&amp;amp; (forcedVersion !== &#039;&#039;) ) {&lt;br /&gt;
			if (forcedVersion &amp;gt; currentVersion) {&lt;br /&gt;
				forcedUpdate = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check for regular update&lt;br /&gt;
	var regularUpdate = false;&lt;br /&gt;
	var currentDate = new Date();&lt;br /&gt;
	if (forcedUpdate === false) {&lt;br /&gt;
&lt;br /&gt;
		// get date of last update check&lt;br /&gt;
		var lastCheckStr = wikEd.GetPersistent(&#039;wikEdAutoUpdate&#039;);&lt;br /&gt;
		var lastCheckDate = new Date(lastCheckStr);&lt;br /&gt;
&lt;br /&gt;
		// fix missing or corrupt saved setting&lt;br /&gt;
		if (isNaN(lastCheckDate.valueOf()) === true) {&lt;br /&gt;
			wikEd.SetPersistent(&#039;wikEdAutoUpdate&#039;, &#039;January 1, 1970&#039;, 0, &#039;/&#039;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get the hours since last update check&lt;br /&gt;
		var diffHours = (currentDate - lastCheckDate) / 1000 / 60 / 60;&lt;br /&gt;
		if (wikEd.greasemonkey === true) {&lt;br /&gt;
			if (diffHours &amp;gt; wikEd.config.autoUpdateHoursGM) {&lt;br /&gt;
				regularUpdate = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if (diffHours &amp;gt; wikEd.config.autoUpdateHours) {&lt;br /&gt;
			regularUpdate = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// perform AJAX request to get latest version number&lt;br /&gt;
	if ( (forcedUpdate === true) || (regularUpdate === true) ) {&lt;br /&gt;
&lt;br /&gt;
		// save current update check date&lt;br /&gt;
		wikEd.SetPersistent(&#039;wikEdAutoUpdate&#039;, currentDate.toUTCString(), 0, &#039;/&#039;);&lt;br /&gt;
&lt;br /&gt;
		// make the ajax request&lt;br /&gt;
		wikEd.AjaxRequest(&#039;GET&#039;, wikEd.config.autoUpdateUrl, null, &#039;text/plain&#039;, function (ajax) {&lt;br /&gt;
&lt;br /&gt;
			// get response&lt;br /&gt;
			var html = ajax.responseText;&lt;br /&gt;
&lt;br /&gt;
			// get version numbers from strings&lt;br /&gt;
			var currentVersion = wikEd.VersionToNumber(wikEd.programVersion);&lt;br /&gt;
			var newVersion = wikEd.VersionToNumber(html);&lt;br /&gt;
&lt;br /&gt;
			// check if downloaded version is newer and perform update&lt;br /&gt;
			if ( (currentVersion !== &#039;&#039;) &amp;amp;&amp;amp; (newVersion !== &#039;&#039;) ) {&lt;br /&gt;
				if (newVersion &amp;gt; currentVersion) {&lt;br /&gt;
					wikEd.DoUpdate();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.VersionToNumber: parse version string (1.22.333a) into number 122333097&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.VersionToNumber = function (versionStr) {&lt;br /&gt;
&lt;br /&gt;
	var regExpMatchVer = versionStr.match(/(\d+)\.(\d+)\.(\d+)(\w?)/);&lt;br /&gt;
	if (regExpMatchVer === null) {&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	var versionNumber = Number(regExpMatchVer[1]) * 100000000 + Number(regExpMatchVer[2]) * 1000000 + Number(regExpMatchVer[3]) * 1000 + (regExpMatchVer[4] + &#039;0&#039;).charCodeAt(0);&lt;br /&gt;
	return versionNumber;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DoUpdate: actually perform update&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DoUpdate = function () {&lt;br /&gt;
&lt;br /&gt;
	// update Greasemonkey script by navigating to the script code page&lt;br /&gt;
	if (wikEd.greasemonkey === true) {&lt;br /&gt;
		var updatePopup = wikEd.config.text.wikEdGreasemonkeyAutoUpdate;&lt;br /&gt;
		updatePopup = updatePopup.replace(/\{updateURL\}/g, wikEd.config.autoUpdateUrl);&lt;br /&gt;
		window.alert(updatePopup);&lt;br /&gt;
		window.location.href = wikEd.config.autoUpdateScriptUrl;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// update wikEd by reloading the page with cache bypassing (equivalent to Shift-Reload or Shift-F5)&lt;br /&gt;
	else {&lt;br /&gt;
		window.location.reload(true);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LoadTypoFixRules: load and parse RegExTypoFix rules if the button is enabled&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LoadTypoFixRules = function () {&lt;br /&gt;
&lt;br /&gt;
	// load RegExTypoFix rules per Ajax if enabled&lt;br /&gt;
	if ( (wikEd.config.regExTypoFix === false) || (wikEd.readOnly === true) || (wikEd.typoRulesFind.length &amp;gt; 0) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// make the ajax request&lt;br /&gt;
	var sep = &#039;&amp;amp;&#039;;&lt;br /&gt;
	if (wikEd.config.regExTypoFixURL.indexOf(&#039;?&#039;) == -1) {&lt;br /&gt;
		sep = &#039;?&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	wikEd.AjaxRequest(&#039;GET&#039;, wikEd.config.regExTypoFixURL + sep + wikEd.programVersion, null, &#039;text/plain&#039;, function (ajax) {&lt;br /&gt;
&lt;br /&gt;
		// get response&lt;br /&gt;
		var rulesTxt = ajax.responseText;&lt;br /&gt;
&lt;br /&gt;
		// parse regexp rules&lt;br /&gt;
		var regExp = /&amp;lt;(?:Typo)?\s+(?:word=&amp;quot;(.*?)&amp;quot;\s+)?find=&amp;quot;(.*?)&amp;quot;\s+replace=&amp;quot;(.*?)&amp;quot;\s*\/?&amp;gt;/g;&lt;br /&gt;
		var regExpMatch;&lt;br /&gt;
		while ( (regExpMatch = regExp.exec(rulesTxt)) !== null) {&lt;br /&gt;
&lt;br /&gt;
			// check if this is a valid regexp&lt;br /&gt;
			var regExpFind;&lt;br /&gt;
			try {&lt;br /&gt;
				regExpFind = new RegExp(regExpMatch[2], &#039;gm&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			catch (exception) {&lt;br /&gt;
				var msg = &#039;Invalid RegExTypoFix rule:\nfind=&#039; + regExpMatch[2] + &#039;\nreplace=&#039; + regExpMatch[3];&lt;br /&gt;
				wikEd.ConsoleLog(msg);&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// save regexp and replace&lt;br /&gt;
			wikEd.typoRulesFind.push(regExpFind);&lt;br /&gt;
			wikEd.typoRulesReplace.push(regExpMatch[3]);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// display typo fix button&lt;br /&gt;
		if (wikEd.typoRulesFind.length &amp;gt; 0) {&lt;br /&gt;
			if (wikEd.fixRegExTypo !== null) {&lt;br /&gt;
				wikEd.fixRegExTypo.style.display = &#039;inline&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return;&lt;br /&gt;
	});&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.EditButtonHandler: handler for clicks on edit buttons&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.EditButtonHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// execute the button click handler code, obj required in eval context&lt;br /&gt;
	var obj = event.currentTarget;&lt;br /&gt;
	eval(wikEd.editButtonHandler[obj.id]);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ShrinkSummaryHandler: shrink the summary after loading the &#039;Clear summary&#039; image&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ShrinkSummaryHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	var diffWidth = wikEd.clearSummary.offsetWidth - wikEd.clearSummaryWidth;&lt;br /&gt;
	wikEd.inputElement.summary.style.width = (wikEd.inputElement.summary.offsetWidth - diffWidth) + &#039;px&#039;;&lt;br /&gt;
	wikEd.selectElement.summary.style.width = (wikEd.selectElement.summary.offsetWidth - diffWidth) + &#039;px&#039;;&lt;br /&gt;
	wikEd.clearSummaryWidth = wikEd.clearSummary.offsetWidth;&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InsertChangeHandler: resize fullscreen after changing insert special char selection&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InsertChangeHandler = function (event) {&lt;br /&gt;
	if (wikEd.fullscreen === true) {&lt;br /&gt;
		wikEd.ResizeWindowHandler();&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeWindowHandler: adjust fullscreen frame and summary width after resizing the window&lt;br /&gt;
//   browser&#039;s dynamic table resizing interferes if wikEd is inserted in table (Special:Upload)&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeWindowHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// fullscreen resizing&lt;br /&gt;
	if (wikEd.fullscreen === true) {&lt;br /&gt;
		var captchaHeight = wikEd.captchaWrapper.offsetHeight;&lt;br /&gt;
		var debugHeight = wikEd.debugWrapper.offsetHeight;&lt;br /&gt;
		var buttonsHeight = wikEd.buttonsWrapper.offsetHeight;&lt;br /&gt;
&lt;br /&gt;
		var consoleTopHeight = 0;&lt;br /&gt;
		if (wikEd.consoleTopWrapper !== null) {&lt;br /&gt;
			consoleTopHeight = wikEd.consoleTopWrapper.offsetHeight;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var consoleHeight = wikEd.consoleWrapper.offsetHeight;&lt;br /&gt;
&lt;br /&gt;
		var insertHeight = 0;&lt;br /&gt;
		if (wikEd.insertWrapper !== null) {&lt;br /&gt;
			insertHeight = wikEd.insertWrapper.offsetHeight;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var windowHeight = window.innerHeight;&lt;br /&gt;
		var frameHeight = windowHeight - captchaHeight - debugHeight - buttonsHeight - consoleTopHeight - consoleHeight - insertHeight - wikEd.frameBorderHeight;&lt;br /&gt;
		if (frameHeight &amp;lt; 100) {&lt;br /&gt;
			frameHeight = 100;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.frame.style.height = frameHeight + &#039;px&#039;;&lt;br /&gt;
		wikEd.frame.style.width = (wikEd.frameWrapper.clientWidth - wikEd.frameBorderWidth) + &#039;px&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// adjust frame size&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.frameWidth = (wikEd.frameWrapper.clientWidth - wikEd.frameBorderWidth) + &#039;px&#039;;&lt;br /&gt;
		wikEd.frame.style.height = wikEd.frameHeight;&lt;br /&gt;
		wikEd.frame.style.width = wikEd.frameWidth;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.ResizeSummary();&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.WikiPreviewHandler: event handler for wiki preview: scroll to edit field on double click&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.WikiPreviewHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// filter out selecting double clicks on text&lt;br /&gt;
	var sel = window.getSelection();&lt;br /&gt;
&lt;br /&gt;
	// explicitOriginalTarget (Firefox)&lt;br /&gt;
	var textTarget = event.explicitOriginalTarget;&lt;br /&gt;
	if (textTarget !== undefined) {&lt;br /&gt;
		if (textTarget.nodeName == &#039;#text&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// ignore for non-blank selection&lt;br /&gt;
	else if ( (sel !== null) &amp;amp;&amp;amp; (/^\s*$/.test(sel.toString()) === false) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	sel.collapseToEnd();&lt;br /&gt;
&lt;br /&gt;
	window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.UnloadHandler: save editing frame to cached textarea&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.UnloadHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// update textarea if not already done in submit handlers&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		if (wikEd.textareaUpdated === false) {&lt;br /&gt;
			wikEd.UpdateTextarea();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SaveButtonHandler: &#039;Save page&#039; onsubmit click handler for submit button&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SaveButtonHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.saveButton.removeEventListener(&#039;click&#039;, wikEd.SaveButtonHandler, true);&lt;br /&gt;
&lt;br /&gt;
	// update textarea&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		wikEd.UpdateTextarea();&lt;br /&gt;
		wikEd.textareaUpdated = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check for interfering scripts or gadgets: mwEmbed for file uploads&lt;br /&gt;
	if ( (wikEd.editUpload === true) &amp;amp;&amp;amp; (window.MW_EMBED_VERSION !== undefined) ) {&lt;br /&gt;
		wikEd.saveButton.addEventListener(&#039;click&#039;, wikEd.SaveButtonHandler, true);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add &amp;quot;using wikEd&amp;quot; to summary, not for adding a new section (+ tab)&lt;br /&gt;
	if (wikEd.summaryText !== null) {&lt;br /&gt;
		var text = wikEd.summaryText.value;&lt;br /&gt;
		text = text.replace(/^[, ]+/, &#039;&#039;);&lt;br /&gt;
		text = text.replace(/[, ]+$/, &#039;&#039;);&lt;br /&gt;
		wikEd.AddToHistory(&#039;summary&#039;);&lt;br /&gt;
&lt;br /&gt;
		if ( (wikEd.using === true) &amp;amp;&amp;amp; (text !== &#039;&#039;) ) {&lt;br /&gt;
			if (text.lastIndexOf(wikEd.config.summaryUsing) &amp;lt; 0) {&lt;br /&gt;
				if (wikEd.addNewSection !== true) {&lt;br /&gt;
					text += &#039; &#039; + wikEd.config.summaryUsing;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.summaryText.value = text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// submit&lt;br /&gt;
	wikEd.saveButton.click();&lt;br /&gt;
&lt;br /&gt;
	// reinstate handler in case the browser back button will be used&lt;br /&gt;
	wikEd.saveButton.addEventListener(&#039;click&#039;, wikEd.SaveButtonHandler, true);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PreviewButtonHandler: &#039;Show preview&#039; click handler&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PreviewButtonHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		wikEd.UpdateTextarea();&lt;br /&gt;
		wikEd.textareaUpdated = true;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DiffPreviewButtonHandler: &#039;Show changes&#039; click handler&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DiffPreviewButtonHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// interrupt fullscreen mode&lt;br /&gt;
	if (wikEd.fullscreen === true) {&lt;br /&gt;
		wikEd.FullScreen(false);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		wikEd.UpdateTextarea();&lt;br /&gt;
		wikEd.textareaUpdated = true;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LinkifyHandler: open innermost highlighted link in new window/tab on ctrl/meta-click&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LinkifyHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if ( (event.shiftKey === false) &amp;amp;&amp;amp; ( (event.ctrlKey === true) || (event.metaKey === true) ) &amp;amp;&amp;amp; (event.altKey === false) ) {&lt;br /&gt;
		var node = event.target;&lt;br /&gt;
		while (node !== null) {&lt;br /&gt;
			var id = node.id;&lt;br /&gt;
			if ( (id !== null) &amp;amp;&amp;amp; (id.indexOf(&#039;wikEdWikiLink&#039;) === 0) ) {&lt;br /&gt;
				if (Object.prototype.hasOwnProperty.call(wikEd.wikiLinks, id) === true) {&lt;br /&gt;
					var linkUrl = wikEd.wikiLinks[id].url;&lt;br /&gt;
					event.stopPropagation();&lt;br /&gt;
					window.open(linkUrl);&lt;br /&gt;
					window.focus();&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			node = node.parentNode;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ButtonBarGripHandler: click, mouseover handler, see also wikEd.ButtonBarInit()&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ButtonBarGripHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	event.stopPropagation();&lt;br /&gt;
&lt;br /&gt;
	var grip = event.target;&lt;br /&gt;
	var gripWrapper = grip.parentNode;&lt;br /&gt;
	var buttonsWrapper = gripWrapper.nextSibling;&lt;br /&gt;
	var barInnerWrapper = gripWrapper.parentNode;&lt;br /&gt;
	var bar = barInnerWrapper.parentNode;&lt;br /&gt;
	if (event.type == &#039;click&#039;) {&lt;br /&gt;
		buttonsWrapper.style.position = &#039;static&#039;;&lt;br /&gt;
&lt;br /&gt;
		// hide the buttons bar&lt;br /&gt;
		if (buttonsWrapper.className != &#039;wikEdButtonBarButtonsWrapperHidden&#039;) {&lt;br /&gt;
			buttonsWrapper.className = &#039;wikEdButtonBarButtonsWrapperHidden&#039;;&lt;br /&gt;
			barInnerWrapper.className = &#039;wikEdButtonBarInnerWrapperHidden&#039;;&lt;br /&gt;
			gripWrapper.className = &#039;wikEdButtonBarGripWrapperHidden&#039;;&lt;br /&gt;
			wikEd.buttonsWrapperWidth[bar.id] = buttonsWrapper.offsetWidth;&lt;br /&gt;
			buttonsWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
			grip.addEventListener(&#039;mouseover&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
			wikEd.SetPersistent(bar.id + &#039;Hidden&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// unhide the buttons bar&lt;br /&gt;
		else {&lt;br /&gt;
			buttonsWrapper.className = &#039;wikEdButtonBarButtonsWrapperVisible&#039;;&lt;br /&gt;
			barInnerWrapper.className = &#039;wikEdButtonBarInnerWrapperVisible&#039;;&lt;br /&gt;
			gripWrapper.className = &#039;wikEdButtonBarGripWrapperVisible&#039;;&lt;br /&gt;
			buttonsWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
			grip.removeEventListener(&#039;mouseover&#039;, wikEd.ButtonBarGripHandler, false);&lt;br /&gt;
			wikEd.SetPersistent(bar.id + &#039;Hidden&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// show the buttons bar on mouseover&lt;br /&gt;
	else if (event.type == &#039;mouseover&#039;) {&lt;br /&gt;
		if (buttonsWrapper.className == &#039;wikEdButtonBarButtonsWrapperHidden&#039;) {&lt;br /&gt;
			bar.addEventListener(&#039;mouseout&#039;, wikEd.ButtonBarHandler, false);&lt;br /&gt;
&lt;br /&gt;
			// browsers sometimes give offsetTop/offsetLeft - 1, + 0.5 seems to help&lt;br /&gt;
&lt;br /&gt;
			// show buttons to the right&lt;br /&gt;
			if (bar.offsetParent.clientWidth &amp;gt; grip.offsetLeft + grip.offsetWidth + wikEd.buttonsWrapperWidth[bar.id] + 0.5) {&lt;br /&gt;
				buttonsWrapper.style.left = (grip.offsetLeft + grip.offsetWidth + 0.5) + &#039;px&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// show buttons to the left&lt;br /&gt;
			else {&lt;br /&gt;
				buttonsWrapper.style.left = (gripWrapper.offsetLeft - wikEd.buttonsWrapperWidth[bar.id] + 0.5) + &#039;px&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			buttonsWrapper.style.top = (gripWrapper.offsetTop + 0.5) + &#039;px&#039;;&lt;br /&gt;
			buttonsWrapper.style.position = &#039;absolute&#039;;&lt;br /&gt;
			buttonsWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ButtonBarHandler: mouseout handler&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ButtonBarHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	event.stopPropagation();&lt;br /&gt;
	var bar = event.currentTarget;&lt;br /&gt;
	var barInnerWrapper = bar.firstChild;&lt;br /&gt;
	var gripWrapper = barInnerWrapper.firstChild;&lt;br /&gt;
	var grip = gripWrapper.firstChild;&lt;br /&gt;
	var buttonsWrapper = gripWrapper.nextSibling;&lt;br /&gt;
	var buttons = buttonsWrapper.firstChild;&lt;br /&gt;
&lt;br /&gt;
	// hide the buttons&lt;br /&gt;
	if (event.type == &#039;mouseout&#039;) {&lt;br /&gt;
		if (buttonsWrapper.className == &#039;wikEdButtonBarButtonsWrapperHidden&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// filter the events for mouseouts actually leaving the bar&lt;br /&gt;
			if (&lt;br /&gt;
				(&lt;br /&gt;
					( (event.target == grip) || (event.target == gripWrapper) ) &amp;amp;&amp;amp;&lt;br /&gt;
					(event.relatedTarget != gripWrapper) &amp;amp;&amp;amp; (event.relatedTarget != buttonsWrapper) &amp;amp;&amp;amp; (event.relatedTarget != buttons) &amp;amp;&amp;amp; (event.relatedTarget.parentNode != buttons)&lt;br /&gt;
				) ||&lt;br /&gt;
				(&lt;br /&gt;
					( (event.target.parentNode.parentNode == buttons) || (event.target.parentNode == buttons) || (event.target == buttons) || (event.target == buttonsWrapper) ) &amp;amp;&amp;amp;&lt;br /&gt;
					(event.relatedTarget.parentNode.parentNode != buttons) &amp;amp;&amp;amp; (event.relatedTarget.parentNode != buttons) &amp;amp;&amp;amp; (event.relatedTarget != buttons) &amp;amp;&amp;amp; (event.relatedTarget != buttonsWrapper) &amp;amp;&amp;amp; (event.relatedTarget != gripWrapper) &amp;amp;&amp;amp; (event.relatedTarget != grip)&lt;br /&gt;
				)&lt;br /&gt;
			) {&lt;br /&gt;
				bar.removeEventListener(&#039;mouseout&#039;, wikEd.ButtonBarHandler, false);&lt;br /&gt;
				buttonsWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
				buttonsWrapper.style.position = &#039;static&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// clear the summary click handler&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ClearSummaryHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	event.preventDefault();&lt;br /&gt;
&lt;br /&gt;
	// clear the summary if it is only a paragraph name&lt;br /&gt;
	if ( /^\/\* .*? \*\/ *$/.test(wikEd.summaryText.value) === true) {&lt;br /&gt;
		wikEd.summaryText.value = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// clear the summary but leave paragraph names&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.summaryText.value = wikEd.summaryText.value.replace(/^((\/\* .*? \*\/ *)?).*()/,&lt;br /&gt;
			function(p, p1, p2, p3) {&lt;br /&gt;
				if (p1.length &amp;gt; 0) {&lt;br /&gt;
					p1 = p1 + &#039; &#039;;&lt;br /&gt;
				}&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.summaryText.focus();&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FindReplaceHandler: find and replace: tab and shift-tab between fields, select on focus&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FindReplaceHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// tab / shift-tab between fields&lt;br /&gt;
	if (event.type == &#039;keydown&#039;) {&lt;br /&gt;
		if (event.keyCode == 9) {&lt;br /&gt;
			if (event.target == wikEd.findText) {&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				wikEd.replaceText.removeEventListener(&#039;focus&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
				wikEd.replaceText.focus();&lt;br /&gt;
				wikEd.replaceText.addEventListener(&#039;focus&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
			}&lt;br /&gt;
			else if (event.target == wikEd.replaceText) {&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				wikEd.findText.removeEventListener(&#039;focus&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
				wikEd.findText.focus();&lt;br /&gt;
				wikEd.findText.addEventListener(&#039;focus&#039;, wikEd.FindReplaceHandler, true);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// select on focus&lt;br /&gt;
	else if (event.type == &#039;focus&#039;) {&lt;br /&gt;
		event.target.setSelectionRange(0, this.textLength);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.KeyFrameHandler: event handler for key and mouse events in the frame&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.KeyFrameHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
&lt;br /&gt;
		// textarea no longer up to date&lt;br /&gt;
		if ( event.type == &#039;paste&#039; ) {&lt;br /&gt;
			wikEd.textareaUpdated = false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// invalidate wikify/textify of recently pasted text and textarea status for printable char key presses&lt;br /&gt;
		else if ( (event.type == &#039;keydown&#039;) || (event.type == &#039;keypress&#039;) ) {&lt;br /&gt;
			switch (event.keyCode) {&lt;br /&gt;
&lt;br /&gt;
				// keys that do not change text&lt;br /&gt;
				case 16: // shift&lt;br /&gt;
				case 17: // ctrl&lt;br /&gt;
				case 18: // alt&lt;br /&gt;
				case 19: // pause/break&lt;br /&gt;
				case 20: // caps lock&lt;br /&gt;
				case 33: // page up&lt;br /&gt;
				case 34: // page down&lt;br /&gt;
				case 35: // end&lt;br /&gt;
				case 36: // home&lt;br /&gt;
				case 37: // left&lt;br /&gt;
				case 38: // up&lt;br /&gt;
				case 39: // right&lt;br /&gt;
				case 40: // down&lt;br /&gt;
				case 45: // insert&lt;br /&gt;
				case 91: // windows left&lt;br /&gt;
				case 91: // windows right&lt;br /&gt;
				case 93: // select&lt;br /&gt;
				case 112: // F1&lt;br /&gt;
				case 113: // F2&lt;br /&gt;
				case 114: // F3&lt;br /&gt;
				case 115: // F4&lt;br /&gt;
				case 116: // F5&lt;br /&gt;
				case 117: // F6&lt;br /&gt;
				case 118: // F7&lt;br /&gt;
				case 119: // F8&lt;br /&gt;
				case 120: // F9&lt;br /&gt;
				case 121: // F10&lt;br /&gt;
				case 122: // F11&lt;br /&gt;
				case 123: // F12&lt;br /&gt;
				case 144: // num lock&lt;br /&gt;
				case 145: // scroll lock&lt;br /&gt;
				case 182: // my computer&lt;br /&gt;
				case 183: // my calculator&lt;br /&gt;
				case 224: // apple&lt;br /&gt;
					break;&lt;br /&gt;
&lt;br /&gt;
				// escape ends wikify/textify, all others change text&lt;br /&gt;
				default:&lt;br /&gt;
&lt;br /&gt;
					// textarea no longer up to date&lt;br /&gt;
					if (event.keyCode !== 27) { // escape&lt;br /&gt;
						wikEd.textareaUpdated = false;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// invalidate wikify/textify&lt;br /&gt;
					wikEd.PastedOff();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		switch (event.type) {&lt;br /&gt;
&lt;br /&gt;
			// keydown event&lt;br /&gt;
			case &#039;keydown&#039;:&lt;br /&gt;
				switch (event.keyCode) {&lt;br /&gt;
&lt;br /&gt;
					// tab key, switch between form elements instead of adding multiple spaces&lt;br /&gt;
					case 9:&lt;br /&gt;
						if ( (event.shiftKey === false) &amp;amp;&amp;amp; (event.ctrlKey === false) &amp;amp;&amp;amp; (event.altKey === false) &amp;amp;&amp;amp; (event.metaKey === false) ) {&lt;br /&gt;
							event.preventDefault();&lt;br /&gt;
&lt;br /&gt;
							// focus the next form element&lt;br /&gt;
							if (wikEd.addNewSection === true) {&lt;br /&gt;
								document.getElementById(&#039;wpMinoredit&#039;).focus();&lt;br /&gt;
							}&lt;br /&gt;
							else {&lt;br /&gt;
								wikEd.summaryText.focus();&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// scroll to text input top&lt;br /&gt;
							if (wikEd.fullscreen === false) {&lt;br /&gt;
								window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// after cursor movements set cursor position into closest highest text node so that highlighting does not bleed out&lt;br /&gt;
			case &#039;keyup&#039;:&lt;br /&gt;
				switch (event.keyCode) {&lt;br /&gt;
					case 17: // ctrl-v&lt;br /&gt;
					case 46: // del&lt;br /&gt;
						wikEd.AntiHighlightBleeding({});&lt;br /&gt;
						break;&lt;br /&gt;
					case 37: // left&lt;br /&gt;
					case 38: // up&lt;br /&gt;
					case 33: // page up&lt;br /&gt;
					case  8: // backspace&lt;br /&gt;
						wikEd.AntiHighlightBleeding({}, null, &#039;left&#039;);&lt;br /&gt;
						break;&lt;br /&gt;
					case 39: // right&lt;br /&gt;
					case 40: // down&lt;br /&gt;
					case 34: // page down&lt;br /&gt;
						wikEd.AntiHighlightBleeding({}, null, &#039;right&#039;);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;click&#039;:&lt;br /&gt;
				wikEd.AntiHighlightBleeding({});&lt;br /&gt;
&lt;br /&gt;
				// invalidate wikify/textify of recently pasted text after selecting text&lt;br /&gt;
				if ( (wikEd.paste !== null) &amp;amp;&amp;amp; (wikEd.paste.polling === false) ) {&lt;br /&gt;
					var sel = wikEd.GetSelection();&lt;br /&gt;
					if (sel.isCollapsed === false) {&lt;br /&gt;
&lt;br /&gt;
						// check if clicking into selected pasted text&lt;br /&gt;
						var range = sel.getRangeAt(0);&lt;br /&gt;
						if (range != wikEd.keepSelRange) {&lt;br /&gt;
							wikEd.PastedOff();&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				// run through, no break&lt;br /&gt;
&lt;br /&gt;
			case &#039;keypress&#039;:&lt;br /&gt;
			case &#039;paste&#039;:&lt;br /&gt;
&lt;br /&gt;
				// grey out inactive buttons&lt;br /&gt;
				wikEd.InactiveButtons();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PasteFrameHandler: event handler for paste and drop events in the edit frame&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PasteFrameHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd !== true) {&lt;br /&gt;
		event.stopPropagation();&lt;br /&gt;
		wikEd.paste = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var sel = wikEd.GetSelection();&lt;br /&gt;
	var range = sel.getRangeAt(0);&lt;br /&gt;
&lt;br /&gt;
	// ignore if still processing previous event&lt;br /&gt;
	if ( (wikEd.paste !== null) &amp;amp;&amp;amp; (wikEd.paste.polling === false) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.paste = {&lt;br /&gt;
		eventType:        event.type,&lt;br /&gt;
		atStart:          false,&lt;br /&gt;
		polling:          true,&lt;br /&gt;
		blockStart:       false,&lt;br /&gt;
		blockEnd:         false,&lt;br /&gt;
		pasteAtEndOfLine: false,&lt;br /&gt;
		offset:           null,&lt;br /&gt;
		prevNode:         null,&lt;br /&gt;
		prevUp:           null,&lt;br /&gt;
		parent:           null,&lt;br /&gt;
		prevNodeIndex:    null,&lt;br /&gt;
		rangeStartNode:   null,&lt;br /&gt;
		rangeStartOffset: null,&lt;br /&gt;
		rangeStartAfter:  null,&lt;br /&gt;
		last:             &#039;&#039;,&lt;br /&gt;
		dropHtml:         null,&lt;br /&gt;
		sel:              sel,&lt;br /&gt;
		range:            range&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// get position info before event is performed&lt;br /&gt;
	var startNode = range.startContainer;&lt;br /&gt;
	var startOffset = range.startOffset;&lt;br /&gt;
	var endNode = range.endContainer;&lt;br /&gt;
	var endOffset = range.endOffset;&lt;br /&gt;
	switch (event.type) {&lt;br /&gt;
&lt;br /&gt;
	// drop&lt;br /&gt;
		case &#039;drop&#039;:&lt;br /&gt;
			if (event.dataTransfer === undefined) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.paste.dropHtml = event.dataTransfer.getData(&#039;text/html&#039;);&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// paste&lt;br /&gt;
		case &#039;paste&#039;:&lt;br /&gt;
&lt;br /&gt;
			// find first previous node up as anchor to recover start node after insertion&lt;br /&gt;
			wikEd.PasteFindPreviousNode();&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// needed to check if pasted content has been added to frame&lt;br /&gt;
	wikEd.paste.startNode = startNode;&lt;br /&gt;
	wikEd.paste.startOffset = startOffset;&lt;br /&gt;
	wikEd.paste.endNode = endNode;&lt;br /&gt;
	wikEd.paste.endOffset = endOffset;&lt;br /&gt;
&lt;br /&gt;
	wikEd.paste.startNodePreviousSibling = startNode.previousSibling;&lt;br /&gt;
	wikEd.paste.startNodeNextSibling = startNode.nextSibling;&lt;br /&gt;
	wikEd.paste.endNodePreviousSibling = endNode.previousSibling;&lt;br /&gt;
	wikEd.paste.endNodeNextSibling = endNode.nextSibling;&lt;br /&gt;
&lt;br /&gt;
	// detect and process pasted content in edit frame by polling&lt;br /&gt;
	wikEd.paste.pollCount = 1;&lt;br /&gt;
	window.setTimeout(wikEd.PastePoll, 1);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PasteFindPreviousNode: find first previous node up relative to selection as an anchor to recover start node after insertion&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PasteFindPreviousNode = function () {&lt;br /&gt;
&lt;br /&gt;
	var sel = wikEd.paste.sel;&lt;br /&gt;
	var range = sel.getRangeAt(0);&lt;br /&gt;
	var node = range.startContainer;&lt;br /&gt;
	var offset = range.startOffset;&lt;br /&gt;
	var prevNode = node.previousSibling;&lt;br /&gt;
&lt;br /&gt;
	// correct startNode into leaf node&lt;br /&gt;
	if ( (node.nodeName != &#039;#text&#039;) &amp;amp;&amp;amp; (offset &amp;gt; 0) ) {&lt;br /&gt;
		var childs = node.childNodes;&lt;br /&gt;
		if ( (childs.length &amp;gt; 0) &amp;amp;&amp;amp; (offset &amp;lt; childs.length) ) {&lt;br /&gt;
			node = childs.item(offset);&lt;br /&gt;
			offset = 0;&lt;br /&gt;
			prevNode = node.previousSibling;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// test for paste at end of line after br&lt;br /&gt;
	if ( (node.nodeName == &#039;#text&#039;) &amp;amp;&amp;amp; (offset == node.textContent.length) ) {&lt;br /&gt;
		if ( (node.nextSibling !== null) &amp;amp;&amp;amp; (node.nextSibling.nodeName == &#039;BR&#039;) ) {&lt;br /&gt;
			wikEd.paste.pasteAtEndOfLine = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else if (node.nodeName == &#039;BR&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// not in empty line&lt;br /&gt;
		if ( (node.previousSibling === null) || (node.previousSibling.nodeName != &#039;BR&#039;) ) {&lt;br /&gt;
			wikEd.paste.pasteAtEndOfLine = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// correct &amp;lt;br&amp;gt; into previous text node&lt;br /&gt;
	if ( (node.nodeName == &#039;BR&#039;) &amp;amp;&amp;amp; (prevNode !== null) &amp;amp;&amp;amp; (prevNode.nodeName == &#039;#text&#039;) ) {&lt;br /&gt;
		node = prevNode;&lt;br /&gt;
		offset = node.textContent.length;&lt;br /&gt;
		prevNode = node.previousSibling;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// ascend to first node with a previous sibling&lt;br /&gt;
	var prevUp = 0;&lt;br /&gt;
	while ( (node != wikEd.frameBody) &amp;amp;&amp;amp; (prevNode === null) ) {&lt;br /&gt;
		node = node.parentNode;&lt;br /&gt;
		prevUp ++;&lt;br /&gt;
		prevNode = node.previousSibling;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// save paste location reference to drop object&lt;br /&gt;
	if ( (node == wikEd.frameBody) &amp;amp;&amp;amp; (offset === 0) ) {&lt;br /&gt;
		wikEd.paste.atStart = true;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.paste.offset = offset;&lt;br /&gt;
		wikEd.paste.prevNode = prevNode;&lt;br /&gt;
		wikEd.paste.prevUp = prevUp;&lt;br /&gt;
&lt;br /&gt;
		// find prevNode index&lt;br /&gt;
		wikEd.paste.parent = prevNode.parentNode;&lt;br /&gt;
		wikEd.paste.prevNodeIndex = null;&lt;br /&gt;
		var parentNodes = wikEd.paste.parent.childNodes;&lt;br /&gt;
		for (var i = 0; i &amp;lt; parentNodes.length; i ++) {&lt;br /&gt;
			if (prevNode === parentNodes.item(i)) {&lt;br /&gt;
				wikEd.paste.prevNodeIndex = i;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PastePoll: detect and process pasted content in edit frame by polling&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PastePoll = function () {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.paste === null) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.paste.pollCount &amp;gt; 100) {&lt;br /&gt;
		wikEd.paste = null;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var sel = wikEd.paste.sel;&lt;br /&gt;
	var range = sel.getRangeAt(0);&lt;br /&gt;
	var startNode = range.startContainer;&lt;br /&gt;
	var startOffset = range.startOffset;&lt;br /&gt;
	var endNode = range.endContainer;&lt;br /&gt;
	var endOffset = range.endOffset;&lt;br /&gt;
&lt;br /&gt;
	// check if pasted content has already been added to frame&lt;br /&gt;
	if (&lt;br /&gt;
		(startNode === wikEd.paste.startNode) &amp;amp;&amp;amp;&lt;br /&gt;
		(startOffset === wikEd.paste.startOffset) &amp;amp;&amp;amp;&lt;br /&gt;
		(endNode === wikEd.paste.endNode) &amp;amp;&amp;amp;&lt;br /&gt;
		(endOffset === wikEd.paste.endOffset) &amp;amp;&amp;amp;&lt;br /&gt;
&lt;br /&gt;
		(startNode.previousSibling === wikEd.paste.startNodePreviousSibling) &amp;amp;&amp;amp;&lt;br /&gt;
		(startNode.nextSibling === wikEd.paste.startNodeNextSibling) &amp;amp;&amp;amp;&lt;br /&gt;
		(endNode.previousSibling === wikEd.paste.endNodePreviousSibling) &amp;amp;&amp;amp;&lt;br /&gt;
		(endNode.nextSibling === wikEd.paste.endNodeNextSibling)&lt;br /&gt;
	) {&lt;br /&gt;
&lt;br /&gt;
	// schedule next poll, typically requires only one or two polls&lt;br /&gt;
		wikEd.paste.pollCount ++;&lt;br /&gt;
		window.setTimeout(wikEd.PastePoll, 1);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.paste.polling = false;&lt;br /&gt;
&lt;br /&gt;
	// select dropped or pasted text; Chrome selects pasted text automatically&lt;br /&gt;
	if (range.collapsed === true) {&lt;br /&gt;
		switch (wikEd.paste.eventType) {&lt;br /&gt;
&lt;br /&gt;
			// drop&lt;br /&gt;
			case &#039;drop&#039;:&lt;br /&gt;
				if (wikEd.paste.dropHtml !== null) {&lt;br /&gt;
&lt;br /&gt;
					// plainTextify dropHtml&lt;br /&gt;
					var div = document.createElement(&#039;div&#039;);&lt;br /&gt;
					div.innerHTML = wikEd.paste.dropHtml;&lt;br /&gt;
					var obj = {};&lt;br /&gt;
					wikEd.GetInnerHTML(obj, div);&lt;br /&gt;
					var plainText = obj.plain;&lt;br /&gt;
					plainText = plainText.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
					plainText = plainText.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
					plainText = plainText.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
					// select using backwards built-in find&lt;br /&gt;
					if ( (typeof wikEd.frameWindow.find == &#039;function&#039;) &amp;amp;&amp;amp; (plainText.length &amp;gt; 0) ) {&lt;br /&gt;
&lt;br /&gt;
						// Chrome (but keeps selection in first place)&lt;br /&gt;
						var found = wikEd.Find(obj, plainText, true, true, false, false);&lt;br /&gt;
&lt;br /&gt;
						// Firefox (removes \n)&lt;br /&gt;
						if (found === false) {&lt;br /&gt;
							var plainTextCrop = plainText.replace(/\n+/g, &#039;&#039;);&lt;br /&gt;
							found = wikEd.Find(obj, plainTextCrop, true, true, false, false);&lt;br /&gt;
							if (found === true) {&lt;br /&gt;
&lt;br /&gt;
								// extend selection into removed \n&lt;br /&gt;
								range = sel.getRangeAt(0);&lt;br /&gt;
&lt;br /&gt;
								// extend left&lt;br /&gt;
								var regExpMatchStart = /^\n+/.exec(plainText);&lt;br /&gt;
								if (regExpMatchStart !== null) {&lt;br /&gt;
									var newlines = regExpMatchStart[0].length;&lt;br /&gt;
									var node = range.startContainer;&lt;br /&gt;
									var offset = range.startOffset;&lt;br /&gt;
&lt;br /&gt;
									if ( (node.nodeName == &#039;#text&#039;) &amp;amp;&amp;amp; (offset === 0) ) {&lt;br /&gt;
										for (var i = 0; i &amp;lt; newlines; i ++) {&lt;br /&gt;
											var nextNode = node.previousSibling;&lt;br /&gt;
											if ( (nextNode === null) || (nextNode.nodeName != &#039;BR&#039;) ) {&lt;br /&gt;
												break;&lt;br /&gt;
											}&lt;br /&gt;
											node = nextNode;&lt;br /&gt;
										}&lt;br /&gt;
										if (node.nodeName == &#039;BR&#039;) {&lt;br /&gt;
											range.setStartBefore(node);&lt;br /&gt;
										}&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
&lt;br /&gt;
								// extend right&lt;br /&gt;
								var regExpMatchEnd = /\n+$/.exec(plainText);&lt;br /&gt;
								if (regExpMatchEnd !== null) {&lt;br /&gt;
									var newlines = regExpMatchEnd[0].length;&lt;br /&gt;
									var node = range.endContainer;&lt;br /&gt;
									var offset = range.endOffset;&lt;br /&gt;
									if ( (node.nodeName == &#039;#text&#039;) &amp;amp;&amp;amp; (offset == node.textContent.length) ) {&lt;br /&gt;
										for (var i = 0; i &amp;lt; newlines; i ++) {&lt;br /&gt;
											var nextNode = node.nextSibling;&lt;br /&gt;
											if ( (nextNode === null) || (nextNode.nodeName != &#039;BR&#039;) ) {&lt;br /&gt;
												break;&lt;br /&gt;
											}&lt;br /&gt;
											node = nextNode;&lt;br /&gt;
										}&lt;br /&gt;
										if (node.nodeName == &#039;BR&#039;) {&lt;br /&gt;
											range.setEndAfter(node);&lt;br /&gt;
										}&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// paste&lt;br /&gt;
			case &#039;paste&#039;:&lt;br /&gt;
				wikEd.SelectPasted();&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	range = sel.getRangeAt(0);&lt;br /&gt;
	wikEd.paste.range = range.cloneRange();&lt;br /&gt;
	wikEd.EditButton(null, &#039;wikEdPasting&#039;);&lt;br /&gt;
	if (wikEd.paste === null) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// display floating pasted toolbar&lt;br /&gt;
	if (range.getClientRects === undefined) {&lt;br /&gt;
		wikEd.buttonBarPasted.style.left = &#039;1px&#039;;&lt;br /&gt;
		wikEd.buttonBarPasted.style.top = &#039;1px&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get cursor rectangle position&lt;br /&gt;
	else {&lt;br /&gt;
		var barWidth = wikEd.buttonBarPasted.offsetWidth;&lt;br /&gt;
		var barHeight = wikEd.buttonBarPasted.offsetHeight;&lt;br /&gt;
&lt;br /&gt;
		// extend collapsed caret range to start, get last line coords&lt;br /&gt;
		range.setStart(wikEd.frameBody, 0);&lt;br /&gt;
		var rectList = range.getClientRects();&lt;br /&gt;
		var rect = rectList[rectList.length - 1];&lt;br /&gt;
&lt;br /&gt;
		// vertical pos&lt;br /&gt;
		if (rect.bottom + barHeight &amp;lt;= parseInt(wikEd.frameHeight)) {&lt;br /&gt;
			wikEd.buttonBarPasted.style.top = rect.bottom + &#039;px&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.buttonBarPasted.style.bottom = &#039;1px&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// horizontal pos&lt;br /&gt;
		if (rect.right + barWidth &amp;lt;= parseInt(wikEd.frameWidth)) {&lt;br /&gt;
			wikEd.buttonBarPasted.style.left = rect.right + &#039;px&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.buttonBarPasted.style.right = &#039;1px&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove selection&lt;br /&gt;
	sel.collapseToEnd();&lt;br /&gt;
&lt;br /&gt;
	wikEd.PastedSwitch();&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SelectPasted: select pasted text&lt;br /&gt;
//   does not work good for Chromium that normalizes ranges into text nodes, see https://code.google.com/p/chromium/issues/detail?id=271445&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SelectPasted = function () {&lt;br /&gt;
&lt;br /&gt;
	var sel = wikEd.paste.sel;&lt;br /&gt;
	var range = sel.getRangeAt(0);&lt;br /&gt;
&lt;br /&gt;
	// insert at start&lt;br /&gt;
	if (wikEd.paste.atStart === true) {&lt;br /&gt;
		range.setStart(wikEd.frameBody, 0);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// recover start node from saved previous node&lt;br /&gt;
	else {&lt;br /&gt;
		var offset = wikEd.paste.offset;&lt;br /&gt;
&lt;br /&gt;
		// reverse navigate back down to start node, start at prevNode, then descend prevUp levels&lt;br /&gt;
		var preStartNode = null;&lt;br /&gt;
		var prevNode = wikEd.paste.prevNode;&lt;br /&gt;
&lt;br /&gt;
		// node has been replaced&lt;br /&gt;
		if (prevNode.parentNode === null) {&lt;br /&gt;
			prevNode = wikEd.paste.parent.childNodes.item(wikEd.paste.prevNodeIndex);&lt;br /&gt;
			wikEd.paste.pasteAtEndOfLine = false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var node = prevNode;&lt;br /&gt;
		var up = wikEd.paste.prevUp;&lt;br /&gt;
		if (node.nextSibling !== null) {&lt;br /&gt;
			node = node.nextSibling;&lt;br /&gt;
			for (var i = 0; i &amp;lt; up; i ++) {&lt;br /&gt;
				var child = node.firstChild;&lt;br /&gt;
				if (child === null) {&lt;br /&gt;
					wikEd.paste = null;&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
				node = child;&lt;br /&gt;
			}&lt;br /&gt;
			preStartNode = node;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// move up to first next node when element has been inserted at top level&lt;br /&gt;
		else {&lt;br /&gt;
			while ( (node.nextSibling === null) &amp;amp;&amp;amp; (node.nodeName != &#039;BODY&#039;) ) {&lt;br /&gt;
				node = node.parentNode;&lt;br /&gt;
			}&lt;br /&gt;
			if (node.nodeName != &#039;BODY&#039;) {&lt;br /&gt;
				preStartNode = node.nextSibling;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// set range start&lt;br /&gt;
		if (preStartNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
			range.setStart(preStartNode, offset);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// start after prevNode&lt;br /&gt;
		else {&lt;br /&gt;
			range.setStartAfter(prevNode);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// needed for Chrome&lt;br /&gt;
		sel.removeAllRanges();&lt;br /&gt;
		sel.addRange(range);&lt;br /&gt;
&lt;br /&gt;
		// check if range starts with a block&lt;br /&gt;
		var node = range.startContainer;&lt;br /&gt;
		var offset = range.startOffset;&lt;br /&gt;
&lt;br /&gt;
		// before or after text in textnode&lt;br /&gt;
		if (node.nodeName == &#039;#text&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// get first insert parent with left sibling, from inside the insert up&lt;br /&gt;
			if (offset === 0) {&lt;br /&gt;
				while ( (node.previousSibling === null) &amp;amp;&amp;amp; (node.nodeName != &#039;BODY&#039;) ) {&lt;br /&gt;
					node = node.parentNode;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// find first insert sibling to right, from ouside into insert&lt;br /&gt;
			else if (offset == node.textContent.length) {&lt;br /&gt;
				while ( (node.nextSibling === null) &amp;amp;&amp;amp; (node.nodeName != &#039;BODY&#039;) ) {&lt;br /&gt;
					node = node.parentNode;&lt;br /&gt;
				}&lt;br /&gt;
				if (node.nodeName != &#039;BODY&#039;) {&lt;br /&gt;
					node = node.nextSibling;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.paste.pasteAtEndOfLine === true) {&lt;br /&gt;
			node = node.nextSibling;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// check if block element&lt;br /&gt;
		if ( (node !== null) &amp;amp;&amp;amp;  (node.nodeName != &#039;BODY&#039;) &amp;amp;&amp;amp; (node.nodeType == node.ELEMENT_NODE) ) {&lt;br /&gt;
			if (wikEd.frameWindow.getComputedStyle(node).getPropertyValue(&#039;display&#039;) == &#039;block&#039;) {&lt;br /&gt;
				wikEd.paste.blockStart = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// check if range ends with a block&lt;br /&gt;
		var node = range.endContainer;&lt;br /&gt;
		var offset = range.endOffset;&lt;br /&gt;
&lt;br /&gt;
		// before or after text in textnode&lt;br /&gt;
		if (node.nodeName == &#039;#text&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// get first insert parent with right sibling, from inside the insert up&lt;br /&gt;
			if (offset == node.textContent.length) {&lt;br /&gt;
				while ( (node.nextSibling === null) &amp;amp;&amp;amp; (node.nodeName != &#039;BODY&#039;) ) {&lt;br /&gt;
					node = node.parentNode;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// find first insert sibling to left, from ouside into insert&lt;br /&gt;
			else if (offset === 0) {&lt;br /&gt;
				while ( (node.previousSibling === null) &amp;amp;&amp;amp; (node.nodeName != &#039;BODY&#039;) ) {&lt;br /&gt;
					node = node.parentNode;&lt;br /&gt;
				}&lt;br /&gt;
				if (node.nodeName != &#039;BODY&#039;) {&lt;br /&gt;
					node = node.previousSibling;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// check if block element&lt;br /&gt;
		if ( (node.nodeName != &#039;BODY&#039;) &amp;amp;&amp;amp; (node.nodeType == node.ELEMENT_NODE) ) {&lt;br /&gt;
			if (wikEd.GetStyle(node, &#039;display&#039;) == &#039;block&#039;) {&lt;br /&gt;
				wikEd.paste.blockEnd = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// return if no content is selected&lt;br /&gt;
	if (range.collapsed === true) {&lt;br /&gt;
		wikEd.paste = null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PastedSwitch: set wikify/textify indicator after pasting wikified text&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PastedSwitch = function () {&lt;br /&gt;
&lt;br /&gt;
	if ( (wikEd.paste === null) || (wikEd.paste.polling === true) ) {&lt;br /&gt;
		wikEd.PastedOff();&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		if (wikEd.paste.last == &#039;wikify&#039;) {&lt;br /&gt;
			document.getElementById(&#039;wikEdPastedTextify&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
			document.getElementById(&#039;wikEdPastedWikify&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else if (wikEd.paste.last == &#039;textify&#039;) {&lt;br /&gt;
			document.getElementById(&#039;wikEdPastedTextify&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
			document.getElementById(&#039;wikEdPastedWikify&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		document.getElementById(&#039;wikEdPastedTextify&#039;).style.cursor = &#039;&#039;;&lt;br /&gt;
		document.getElementById(&#039;wikEdPastedWikify&#039;).style.cursor = &#039;&#039;;&lt;br /&gt;
		wikEd.buttonBarPasted.style.visibility = &#039;visible&#039;;&lt;br /&gt;
&lt;br /&gt;
		// show text selection when mouse hovers over bar&lt;br /&gt;
		wikEd.buttonBarPasted.addEventListener(&#039;mouseenter&#039;, wikEd.ButtonBarPastedHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PastedOff: invalidate wikify/textify of recently pasted wikified text&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PastedOff = function () {&lt;br /&gt;
&lt;br /&gt;
	wikEd.buttonBarPasted.removeEventListener(&#039;mouseenter&#039;, wikEd.ButtonBarPastedHandler, false);&lt;br /&gt;
	wikEd.buttonBarPasted.removeEventListener(&#039;mouseleave&#039;, wikEd.ButtonBarPastedHandler, false);&lt;br /&gt;
	wikEd.paste = null;&lt;br /&gt;
	wikEd.buttonBarPasted.style.visibility = &#039;hidden&#039;;&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PastedClose: handler for pastedClose button on floating paste button bar&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PastedClose = function () {&lt;br /&gt;
&lt;br /&gt;
	var sel = wikEd.GetSelection();&lt;br /&gt;
	sel.collapseToEnd();&lt;br /&gt;
	wikEd.PastedOff();&lt;br /&gt;
	wikEd.frameWindow.focus();&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ButtonBarPastedHandler: show text selection when mouse hovers over floating paste button bar&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ButtonBarPastedHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (event.target == wikEd.buttonBarPasted) {&lt;br /&gt;
&lt;br /&gt;
		// add selection&lt;br /&gt;
		if (event.type == &#039;mouseenter&#039;) {&lt;br /&gt;
			wikEd.buttonBarPasted.removeEventListener(&#039;mouseenter&#039;, wikEd.ButtonBarPastedHandler, false);&lt;br /&gt;
			if ( (wikEd.paste !== null) &amp;amp;&amp;amp; (wikEd.paste.sel !== null) &amp;amp;&amp;amp; (wikEd.paste.range !== null) ) {&lt;br /&gt;
				wikEd.paste.sel.removeAllRanges();&lt;br /&gt;
				wikEd.paste.sel.addRange(wikEd.paste.range);&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.buttonBarPasted.addEventListener(&#039;mouseleave&#039;, wikEd.ButtonBarPastedHandler, false);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// remove selection&lt;br /&gt;
		else if (event.type == &#039;mouseleave&#039;) {&lt;br /&gt;
			wikEd.buttonBarPasted.removeEventListener(&#039;mouseleave&#039;, wikEd.ButtonBarPastedHandler, false);&lt;br /&gt;
			if ( (wikEd.paste !== null) &amp;amp;&amp;amp; (wikEd.paste.sel !== null) ) {&lt;br /&gt;
				wikEd.paste.sel.collapseToEnd();&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.buttonBarPasted.addEventListener(&#039;mouseenter&#039;, wikEd.ButtonBarPastedHandler, false);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AntiHighlightBleeding: set cursor position into closest highest text node so that highlighting does not bleed out&lt;br /&gt;
//   does not work under Google Chrome that forces the cursor into the previous node&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AntiHighlightBleeding = function (obj, editButtonInsert, direction) {&lt;br /&gt;
&lt;br /&gt;
	// check if disabled&lt;br /&gt;
	if (wikEd.config.antiHighlightBleeding !== true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get selection object&lt;br /&gt;
	if (obj.sel === undefined) {&lt;br /&gt;
		obj.sel = wikEd.GetSelection();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// only if no text is selected&lt;br /&gt;
	var range = obj.sel.getRangeAt(0);&lt;br /&gt;
	if ( (obj.sel.isCollapsed !== true) || (range.collapsed !== true) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get focus node&lt;br /&gt;
	var focusNode = obj.sel.focusNode;&lt;br /&gt;
	var focusOffset = obj.sel.focusOffset;&lt;br /&gt;
	if (focusNode === null) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// correct focusNode into leaf node&lt;br /&gt;
	if ( (focusNode.childNodes !== null) &amp;amp;&amp;amp; (focusNode.childNodes.length &amp;gt; 0) ) {&lt;br /&gt;
		if (focusOffset &amp;lt; focusNode.childNodes.length) {&lt;br /&gt;
			focusNode = focusNode.childNodes.item(focusOffset);&lt;br /&gt;
			focusOffset = 0;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// pasting behind &amp;quot;&amp;lt;br&amp;gt;: &amp;quot; (list)&lt;br /&gt;
		else {&lt;br /&gt;
			focusNode = focusNode.childNodes.item(focusOffset - 1);&lt;br /&gt;
			focusOffset = focusNode.childNodes.length;&lt;br /&gt;
		}&lt;br /&gt;
		if (focusNode.tagName != &#039;BR&#039;) {&lt;br /&gt;
			range.setStart(focusNode, focusOffset);&lt;br /&gt;
			range.setEnd(focusNode, focusOffset);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// do not further correct if focus is linebreak if key but not if edit button&lt;br /&gt;
	if ( (focusNode.tagName == &#039;BR&#039;) &amp;amp;&amp;amp; (editButtonInsert !== true) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// do not leave opened hide box (refs, templates, charents, and table code)&lt;br /&gt;
	var node = focusNode;&lt;br /&gt;
	var hidden = false;&lt;br /&gt;
	while (node !== null) {&lt;br /&gt;
		if (/^wikEd(Ref|Templ|CharEntity|Table)Show$/.test(node.className) === true) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// detect hidden node&lt;br /&gt;
		if (&lt;br /&gt;
			( (wikEd.refHide === true) &amp;amp;&amp;amp; (/^((wikEd(Ref|Templ|CharEntity|Table))|(wikEdTableBR))$/.test(node.className) === true) ) ||&lt;br /&gt;
			(/^(wikEdScroll(Before|After))$/.test(node.className) === true)&lt;br /&gt;
		) {&lt;br /&gt;
			focusNode = node;&lt;br /&gt;
			hidden = true;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		node = node.parentNode;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect start of text&lt;br /&gt;
	var startOfText = false;&lt;br /&gt;
	if (focusOffset === 0) {&lt;br /&gt;
		startOfText = true;&lt;br /&gt;
		var node = focusNode;&lt;br /&gt;
		while ( (node !== null) &amp;amp;&amp;amp; (node != wikEd.frameBody) ) {&lt;br /&gt;
			if (node.previousSibling !== null) {&lt;br /&gt;
				startOfText = false;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			node = node.parentNode;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (startOfText === true) {&lt;br /&gt;
		range.setStartBefore(wikEd.frameBody);&lt;br /&gt;
		range.setEndBefore(wikEd.frameBody);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get next text-like node to the left if we are not in the middle of a text node&lt;br /&gt;
	var leftNode = focusNode;&lt;br /&gt;
	var leftLevel = 0;&lt;br /&gt;
	if ( (focusNode.nodeName != &#039;#text&#039;) || (focusOffset === 0) || (hidden === true) ) {&lt;br /&gt;
		var objLeft = {&lt;br /&gt;
			&#039;backwards&#039;: true&lt;br /&gt;
		};&lt;br /&gt;
		wikEd.GetNextTextNode(objLeft, focusNode, 0);&lt;br /&gt;
		if (objLeft.foundNode !== undefined) {&lt;br /&gt;
			leftNode = objLeft.foundNode;&lt;br /&gt;
			leftLevel = objLeft.foundLevel;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get next text-like node to the right if we are not in the middle of a text node&lt;br /&gt;
	var rightNode = focusNode;&lt;br /&gt;
	var rightLevel = 0;&lt;br /&gt;
	if ( (focusNode.nodeName != &#039;#text&#039;) || (focusOffset == focusNode.textContent.length) || (hidden === true) ) {&lt;br /&gt;
		var objRight = {&lt;br /&gt;
			&#039;backwards&#039;: false&lt;br /&gt;
		};&lt;br /&gt;
		wikEd.GetNextTextNode(objRight, focusNode, 0);&lt;br /&gt;
		if (objRight.foundNode !== undefined) {&lt;br /&gt;
			rightNode = objRight.foundNode;&lt;br /&gt;
			rightLevel = objRight.foundLevel;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check if we need to correct the focus node to higher level text-like node&lt;br /&gt;
	var correctTo = &#039;&#039;;&lt;br /&gt;
	if (leftNode != rightNode) {&lt;br /&gt;
&lt;br /&gt;
		// get out of hidden element&lt;br /&gt;
		if (hidden === true) {&lt;br /&gt;
&lt;br /&gt;
			// direction&lt;br /&gt;
			if ( (direction == &#039;right&#039;) &amp;amp;&amp;amp; (rightNode !== null) ) {&lt;br /&gt;
				correctTo = &#039;right&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else if ( (direction == &#039;left&#039;) &amp;amp;&amp;amp; (leftNode !== null) ) {&lt;br /&gt;
				correctTo = &#039;left&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// right, left&lt;br /&gt;
			else if (rightNode !== null) {&lt;br /&gt;
				correctTo = &#039;right&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else if (leftNode !== null) {&lt;br /&gt;
				correctTo = &#039;left&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// BR&lt;br /&gt;
		else if ( (focusNode.tagName == &#039;BR&#039;) &amp;amp;&amp;amp; (editButtonInsert === true) ) {&lt;br /&gt;
			correctTo = &#039;left&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// correct into heighest neighboring node&lt;br /&gt;
		else if ( (leftNode !== null) &amp;amp;&amp;amp; (leftLevel &amp;gt; rightLevel) &amp;amp;&amp;amp; (leftNode != focusNode) )  {&lt;br /&gt;
			correctTo = &#039;left&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else if ( (rightNode !== null) &amp;amp;&amp;amp; (leftLevel &amp;lt; rightLevel) &amp;amp;&amp;amp; (rightNode != focusNode) ) {&lt;br /&gt;
			correctTo = &#039;right&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// same level, set focus outside tag markups: [ [[ | || &amp;lt;&lt;br /&gt;
		else if ( (leftNode !== null) &amp;amp;&amp;amp; (rightNode !== null) &amp;amp;&amp;amp; (leftLevel == rightLevel) ) {&lt;br /&gt;
&lt;br /&gt;
			// get class names&lt;br /&gt;
			var leftClass = &#039;&#039;;&lt;br /&gt;
			if (leftNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
				leftClass = leftNode.parentNode.className;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				leftClass = leftNode.className;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var rightClass = &#039;&#039;;&lt;br /&gt;
			if (rightNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
				rightClass = rightNode.parentNode.className;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				rightClass = rightNode.className;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// class names contains &#039;Tag&#039;&lt;br /&gt;
			if ( (/wikEd.*?Tag/.test(leftClass) !== true) &amp;amp;&amp;amp; (/wikEd.*?Tag/.test(rightClass) === true) &amp;amp;&amp;amp; (leftNode != focusNode) ) {&lt;br /&gt;
				correctTo = &#039;left&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else if ( (/wikEd.*?Tag/.test(leftClass) === true) &amp;amp;&amp;amp; (/wikEd.*?Tag/.test(rightClass) !== true) &amp;amp;&amp;amp; (rightNode != focusNode) ) {&lt;br /&gt;
				correctTo = &#039;right&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set focus to the next left node&lt;br /&gt;
	if (correctTo == &#039;left&#039;) {&lt;br /&gt;
		var node;&lt;br /&gt;
&lt;br /&gt;
		// insert new text node after linebreak and focus&lt;br /&gt;
		if (leftNode.tagName == &#039;BR&#039;) {&lt;br /&gt;
			node = wikEd.frameDocument.createTextNode(&#039;&#039;);&lt;br /&gt;
			leftNode.parentNode.insertBefore(node, leftNode.nextSibling);&lt;br /&gt;
			range.setStart(node, 0);&lt;br /&gt;
			range.setEnd(node, 0);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			node = leftNode;&lt;br /&gt;
			if (node.nodeName == &#039;#text&#039;) {&lt;br /&gt;
				range.setStart(node, node.textContent.length);&lt;br /&gt;
				range.setEnd(node, node.textContent.length);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				range.setStartAfter(node);&lt;br /&gt;
				range.setEndAfter(node);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set focus to the next right node&lt;br /&gt;
	else if (correctTo == &#039;right&#039;) {&lt;br /&gt;
		var node;&lt;br /&gt;
&lt;br /&gt;
		// insert new text node before linebreak&lt;br /&gt;
		if (rightNode.tagName == &#039;BR&#039;) {&lt;br /&gt;
			var node = wikEd.frameDocument.createTextNode(&#039;&#039;);&lt;br /&gt;
			rightNode.parentNode.insertBefore(node, rightNode);&lt;br /&gt;
			range.setStart(node, 0);&lt;br /&gt;
			range.setEnd(node, 0);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			node = rightNode;&lt;br /&gt;
			if (node.nodeName == &#039;#text&#039;) {&lt;br /&gt;
				range.setStart(node, 0);&lt;br /&gt;
				range.setEnd(node, 0);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				range.setStartBefore(node);&lt;br /&gt;
				range.setEndBefore(node);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeGripLoadHandler: event handler to determine grip background image size&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeGripLoadHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.resizeGripWidth = event.currentTarget.width;&lt;br /&gt;
	wikEd.resizeGripHeight = event.currentTarget.height;&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeGripHandler: event handler for mouse over resize grip background image&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeGripHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// Firefox bug during startup (&amp;quot;wikEd is not defined&amp;quot;)&lt;br /&gt;
	if (wikEd === undefined) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		if (event.type == &#039;mousemove&#039;) {&lt;br /&gt;
			if ( (event.shiftKey === false) &amp;amp;&amp;amp; (event.ctrlKey === false) &amp;amp;&amp;amp; (event.altKey === false) &amp;amp;&amp;amp; (event.metaKey === false) ) {&lt;br /&gt;
&lt;br /&gt;
				// move into grip&lt;br /&gt;
				if (wikEd.resizeFrameMouseOverGrip === false) {&lt;br /&gt;
					if (event.clientY &amp;gt;= wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) {&lt;br /&gt;
						if (event.clientX &amp;gt;= wikEd.frameBody.clientWidth - wikEd.resizeGripWidth) {&lt;br /&gt;
							if ( (event.clientY &amp;lt; wikEd.frameBody.clientHeight) &amp;amp;&amp;amp; (event.clientX &amp;lt; wikEd.frameBody.clientWidth) ) {&lt;br /&gt;
								wikEd.resizeFrameMouseOverGrip = true;&lt;br /&gt;
								if (wikEd.fullscreen === true) {&lt;br /&gt;
									wikEd.frameBody.style.cursor = &#039;alias&#039;;&lt;br /&gt;
								}&lt;br /&gt;
								else {&lt;br /&gt;
									wikEd.frameDocument.addEventListener(&#039;mousedown&#039;, wikEd.ResizeStartHandler, true);&lt;br /&gt;
									wikEd.frameBody.style.cursor = &#039;move&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// move out of grip&lt;br /&gt;
				else if (wikEd.resizeFrameActive === false) {&lt;br /&gt;
					if (&lt;br /&gt;
						(event.clientY &amp;lt; wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) ||&lt;br /&gt;
						(event.clientX &amp;lt; wikEd.frameBody.clientWidth - wikEd.resizeGripWidth)&lt;br /&gt;
					) {&lt;br /&gt;
						wikEd.resizeFrameMouseOverGrip = false;&lt;br /&gt;
						wikEd.frameDocument.removeEventListener(&#039;mousedown&#039;, wikEd.ResizeStartHandler, true);&lt;br /&gt;
						wikEd.frameBody.style.cursor = &#039;auto&#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeStartHandler: event handler to start the resizing of the editing frame&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeStartHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		if ( (event.type == &#039;mousedown&#039;) &amp;amp;&amp;amp; (event.button === 0) ) {&lt;br /&gt;
			if ( (event.shiftKey === false) &amp;amp;&amp;amp; (event.ctrlKey === false) &amp;amp;&amp;amp; (event.altKey === false) &amp;amp;&amp;amp; (event.metaKey === false) ) {&lt;br /&gt;
				if (event.clientY &amp;gt;= wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) {&lt;br /&gt;
					if (event.clientX &amp;gt;= wikEd.frameBody.clientWidth - wikEd.resizeGripWidth) {&lt;br /&gt;
						if ( (event.clientY &amp;lt; wikEd.frameBody.clientHeight) &amp;amp;&amp;amp; (event.clientX &amp;lt; wikEd.frameBody.clientWidth) ) {&lt;br /&gt;
							event.preventDefault();&lt;br /&gt;
							wikEd.resizeFrameActive = true;&lt;br /&gt;
&lt;br /&gt;
							wikEd.resizeFramePageYStart = event.pageY;&lt;br /&gt;
							wikEd.resizeFramePageXStart = event.pageX;&lt;br /&gt;
&lt;br /&gt;
							wikEd.resizeFrameOffsetHeight = wikEd.frame.offsetHeight;&lt;br /&gt;
							wikEd.resizeFrameOffsetWidth = wikEd.frame.offsetWidth;&lt;br /&gt;
							wikEd.frameDocument.addEventListener(&#039;mouseup&#039;, wikEd.ResizeStopHandler, true);&lt;br /&gt;
							document.addEventListener(&#039;mouseup&#039;, wikEd.ResizeStopHandler, true);&lt;br /&gt;
							wikEd.frameDocument.addEventListener(&#039;mousemove&#039;, wikEd.ResizeDragHandlerFrame, true);&lt;br /&gt;
							document.addEventListener(&#039;mousemove&#039;, wikEd.ResizeDragHandlerDocument, true);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeStopHandler: event handler to stop the resizing of the editing frame&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeStopHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		if ( (event === undefined) || (event.type == &#039;mouseup&#039;) ) {&lt;br /&gt;
			wikEd.frameDocument.removeEventListener(&#039;mouseup&#039;, wikEd.ResizeStopHandler, true);&lt;br /&gt;
			document.removeEventListener(&#039;mouseup&#039;, wikEd.ResizeStopHandler, true);&lt;br /&gt;
			wikEd.frameDocument.removeEventListener(&#039;mousemove&#039;, wikEd.ResizeDragHandlerFrame, true);&lt;br /&gt;
			document.removeEventListener(&#039;mousemove&#039;, wikEd.ResizeDragHandlerDocument, true);&lt;br /&gt;
&lt;br /&gt;
			if (&lt;br /&gt;
				(event === undefined) ||&lt;br /&gt;
				(event.clientY &amp;lt; wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) ||&lt;br /&gt;
				(event.clientX &amp;lt; wikEd.frameBody.clientWidth - wikEd.resizeGripWidth)&lt;br /&gt;
			) {&lt;br /&gt;
				wikEd.resizeFrameMouseOverGrip = false;&lt;br /&gt;
				wikEd.frameDocument.removeEventListener(&#039;mousedown&#039;, wikEd.ResizeStartHandler, true);&lt;br /&gt;
				wikEd.frameBody.style.cursor = &#039;auto&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.resizeFrameActive = false;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeDragHandlerFrame: event handler for editing frame resizing by mouse dragging (frame event)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeDragHandlerFrame = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (event.type == &#039;mousemove&#039;) {&lt;br /&gt;
		var diffY = event.pageY - wikEd.resizeFramePageYStart;&lt;br /&gt;
		var diffX = event.pageX - wikEd.resizeFramePageXStart;&lt;br /&gt;
&lt;br /&gt;
		var frameHeightNew = wikEd.resizeFrameOffsetHeight + diffY;&lt;br /&gt;
		var frameWidthNew = wikEd.resizeFrameOffsetWidth + diffX;&lt;br /&gt;
&lt;br /&gt;
		if (frameHeightNew &amp;gt;=  100) {&lt;br /&gt;
			wikEd.frameHeight = frameHeightNew + &#039;px&#039;;&lt;br /&gt;
			wikEd.frame.style.height = wikEd.frameHeight;&lt;br /&gt;
		}&lt;br /&gt;
		if (frameWidthNew &amp;gt;=  100) {&lt;br /&gt;
			wikEd.frameWidth = frameWidthNew + &#039;px&#039;;&lt;br /&gt;
			wikEd.frame.style.width = wikEd.frameWidth;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeDragHandlerDocument: event handler for editing frame resizing by mouse dragging (document event)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeDragHandlerDocument = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (event.type == &#039;mousemove&#039;) {&lt;br /&gt;
		var diffY = event.pageY - wikEd.resizeFramePageYStart - wikEd.GetOffsetTop(wikEd.frame);&lt;br /&gt;
		var diffX = event.pageX - wikEd.resizeFramePageXStart - wikEd.GetOffsetLeft(wikEd.frame);&lt;br /&gt;
&lt;br /&gt;
		var frameHeightNew = wikEd.resizeFrameOffsetHeight + diffY;&lt;br /&gt;
		var frameWidthNew = wikEd.resizeFrameOffsetWidth + diffX;&lt;br /&gt;
&lt;br /&gt;
		if (frameHeightNew &amp;gt;=  100) {&lt;br /&gt;
			wikEd.frameHeight = frameHeightNew + &#039;px&#039;;&lt;br /&gt;
			wikEd.frame.style.height = wikEd.frameHeight;&lt;br /&gt;
		}&lt;br /&gt;
		if (frameWidthNew &amp;gt;=  100) {&lt;br /&gt;
			wikEd.frameWidth = frameWidthNew + &#039;px&#039;;&lt;br /&gt;
			wikEd.frame.style.width = wikEd.frameWidth;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeFrameResetHandler: event handler to reset the editing frame size&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeFrameResetHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		if (event.type == &#039;dblclick&#039;) {&lt;br /&gt;
			if ( (event.shiftKey === false) &amp;amp;&amp;amp; (event.ctrlKey === false) &amp;amp;&amp;amp; (event.altKey === false) &amp;amp;&amp;amp; (event.metaKey === false) ) {&lt;br /&gt;
				if (event.clientY &amp;gt; wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) {&lt;br /&gt;
					if (event.clientX &amp;gt; wikEd.frameBody.clientWidth - wikEd.resizeGripWidth) {&lt;br /&gt;
						if ( (event.clientY &amp;lt; wikEd.frameBody.clientHeight) &amp;amp;&amp;amp; (event.clientX &amp;lt; wikEd.frameBody.clientWidth) ) {&lt;br /&gt;
&lt;br /&gt;
							// end fullscreen mode&lt;br /&gt;
							if (wikEd.fullscreen === true) {&lt;br /&gt;
								wikEd.FullScreen(false, true);&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// reset size to default&lt;br /&gt;
							wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + &#039;px&#039;;&lt;br /&gt;
							wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + &#039;px&#039;;&lt;br /&gt;
							wikEd.frame.style.height = wikEd.frameHeight;&lt;br /&gt;
							wikEd.frame.style.width = wikEd.frameWidth;&lt;br /&gt;
&lt;br /&gt;
							// end resizing&lt;br /&gt;
							wikEd.ResizeStopHandler();&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DebugHandler: event handler for debug textarea: clear (double click) or hide (shift/ctrl/alt-double click)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DebugHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if ( (event.shiftKey === true) || (event.ctrlKey === true) || (event.altKey === true) || (event.metaKey === true) ) {&lt;br /&gt;
		wikEd.debugWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
		wikEd.debugOpen = false;&lt;br /&gt;
&lt;br /&gt;
		// resize fullscreen frame&lt;br /&gt;
		if (wikEd.fullScreenMode === true) {&lt;br /&gt;
			wikEd.ResizeWindowHandler();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.debug.value = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.PrevWrapperHandler: event handler for preview box: scroll to edit field (double click) or close (shift/ctrl/alt-double click)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.PrevWrapperHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// close (shift/ctrl/alt-double click)&lt;br /&gt;
	if ( (event.shiftKey === true) || (event.ctrlKey === true) || (event.altKey === true) || (event.metaKey === true) ) {&lt;br /&gt;
		wikEd.previewArticle.style.display = &#039;none&#039;;&lt;br /&gt;
		wikEd.previewDiff.style.display = &#039;none&#039;;&lt;br /&gt;
		wikEd.localPrevWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
		wikEd.localPrevWrapper.style.height = &#039;auto&#039;;&lt;br /&gt;
&lt;br /&gt;
		// reinstate interrupted fullscreen mode&lt;br /&gt;
		if (wikEd.fullScreenMode === true) {&lt;br /&gt;
			wikEd.FullScreen(true);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// scroll to edit field (double click)&lt;br /&gt;
	else {&lt;br /&gt;
&lt;br /&gt;
		// filter out selecting double clicks on text&lt;br /&gt;
		var sel = window.getSelection();&lt;br /&gt;
&lt;br /&gt;
		// explicitOriginalTarget (Firefox)&lt;br /&gt;
		var textTarget = event.explicitOriginalTarget;&lt;br /&gt;
		if (textTarget !== undefined) {&lt;br /&gt;
			if (textTarget.nodeName == &#039;#text&#039;) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// ignore for non-blank selection&lt;br /&gt;
		else if ( (sel !== null) &amp;amp;&amp;amp; (/^\s*$/.test(sel.toString()) === false) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		sel.collapseToEnd();&lt;br /&gt;
&lt;br /&gt;
		// scroll to edit field&lt;br /&gt;
		window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetLogo: set the logo on top of the page&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetLogo = function (state, parameter) {&lt;br /&gt;
&lt;br /&gt;
	var src = &#039;&#039;;&lt;br /&gt;
	var alt = &#039;&#039;;&lt;br /&gt;
	var title = &#039;&#039;;&lt;br /&gt;
	if (state == &#039;error&#039;) {&lt;br /&gt;
		src = wikEd.config.image[&#039;error&#039;];&lt;br /&gt;
		alt = wikEd.config.text[&#039;wikEdLogo error alt&#039;];&lt;br /&gt;
		title = wikEd.config.text[&#039;wikEdLogo error title&#039;];&lt;br /&gt;
	}&lt;br /&gt;
	else if (state == &#039;browser&#039;) {&lt;br /&gt;
		src = wikEd.config.image[&#039;browser&#039;];&lt;br /&gt;
		alt = wikEd.config.text[&#039;wikEdLogo browser alt&#039;];&lt;br /&gt;
		title = wikEd.config.text[&#039;wikEdLogo browser title&#039;];&lt;br /&gt;
	}&lt;br /&gt;
	else if (state == &#039;incompatible&#039;) {&lt;br /&gt;
		src = wikEd.config.image[&#039;incompatible&#039;];&lt;br /&gt;
		alt = wikEd.config.text[&#039;wikEdLogo incompatible alt&#039;];&lt;br /&gt;
		title = wikEd.config.text[&#039;wikEdLogo incompatible title&#039;];&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		if (wikEd.disabled === true) {&lt;br /&gt;
			src = wikEd.config.image[&#039;disabled&#039;];&lt;br /&gt;
			alt = wikEd.config.text[&#039;wikEdLogo disabled alt&#039;];&lt;br /&gt;
			title = wikEd.config.text[&#039;wikEdLogo disabled title&#039;];&lt;br /&gt;
		}&lt;br /&gt;
		else if (wikEd.testVersion === true) {&lt;br /&gt;
			src = wikEd.config.image[&#039;testVersion&#039;];&lt;br /&gt;
			alt = wikEd.config.text[&#039;wikEdLogo testVersion alt&#039;];&lt;br /&gt;
			title = wikEd.config.text[&#039;wikEdLogo testVersion title&#039;];&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			src = wikEd.config.image[&#039;logo&#039;];&lt;br /&gt;
			alt = wikEd.config.text[&#039;wikEdLogo alt&#039;];&lt;br /&gt;
			title = wikEd.config.text[&#039;wikEdLogo title&#039;];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (parameter !== undefined) {&lt;br /&gt;
		title = title.replace(/\{wikEdParameter\}/g, parameter);&lt;br /&gt;
	}&lt;br /&gt;
	title = title.replace(/\{wikEdProgramVersion\}/g, wikEd.programVersion + wikEd.installationType);&lt;br /&gt;
	title = title.replace(/\{wikEdProgramDate\}/g, wikEd.programDate);&lt;br /&gt;
	wikEd.logo.src = src;&lt;br /&gt;
	wikEd.logo.alt = alt;&lt;br /&gt;
	wikEd.logo.title = title;&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.MakeButtonBar: generate button bar div element&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.MakeButtonBar = function (bar) {&lt;br /&gt;
&lt;br /&gt;
	// id outer, class outer, id inner, class inner, alt, button numbers&lt;br /&gt;
	var barId = bar[0];&lt;br /&gt;
	var barClass = bar[1];&lt;br /&gt;
	var buttonsId = bar[2];&lt;br /&gt;
	var buttonsClass = bar[3];&lt;br /&gt;
	var barHeight = bar[4];&lt;br /&gt;
	var gripTitle = bar[5];&lt;br /&gt;
	var buttonNumbers = bar[6];&lt;br /&gt;
	var barTitle = bar[7];&lt;br /&gt;
&lt;br /&gt;
	// collect the buttons&lt;br /&gt;
	var buttons = &#039;&#039;;&lt;br /&gt;
	for (var i = 0; i &amp;lt; buttonNumbers.length; i ++) {&lt;br /&gt;
		var buttonNo = buttonNumbers[i];&lt;br /&gt;
		switch (buttonNo) {&lt;br /&gt;
			case &#039;br&#039;:&lt;br /&gt;
				buttons += &#039;&amp;lt;br&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;find&#039;:&lt;br /&gt;
				buttons += &#039;&amp;lt;span class=&amp;quot;wikEdFindComboInput&amp;quot; id=&amp;quot;wikEdFindComboInput&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;input class=&amp;quot;wikEdCombo&amp;quot; id=&amp;quot;wikEdFindText&amp;quot; type=&amp;quot;text&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;select class=&amp;quot;wikEdCombo&amp;quot; id=&amp;quot;wikEdFindSelect&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;replace&#039;:&lt;br /&gt;
				buttons += &#039;&amp;lt;span class=&amp;quot;wikEdReplaceComboInput&amp;quot; id=&amp;quot;wikEdReplaceComboInput&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;input class=&amp;quot;wikEdCombo&amp;quot; id=&amp;quot;wikEdReplaceText&amp;quot; type=&amp;quot;text&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;select class=&amp;quot;wikEdCombo&amp;quot; id=&amp;quot;wikEdReplaceSelect&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
				buttons += &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			default:&lt;br /&gt;
				var currButton = wikEd.config.button[buttonNo];&lt;br /&gt;
				if (typeof currButton != &#039;object&#039;) {&lt;br /&gt;
					window.alert(&#039;Loading error: The button &amp;quot;&#039; + buttonNumbers[i] + &#039;&amp;quot; is not defined.&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				if ( (currButton[0] == &#039;wikEdSource&#039;) &amp;amp;&amp;amp; (wikEd.config.showSourceButton !== true) &amp;amp;&amp;amp; (wikEd.config.debug !== true) ) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				else if ( (currButton[0] == &#039;wikEdUsing&#039;) &amp;amp;&amp;amp; (wikEd.config.showUsingButton !== true) ) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				else if ( (currButton[0] == &#039;wikEdTableMode&#039;) &amp;amp;&amp;amp; (wikEd.config.showTableModeButton !== true) ) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// add button html code&lt;br /&gt;
				buttons += wikEd.MakeButtonCode(buttonNo);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create the button bar div&lt;br /&gt;
	var div = document.createElement(&#039;div&#039;);&lt;br /&gt;
	div.id = barId;&lt;br /&gt;
	div.className = barClass;&lt;br /&gt;
	if ( (barTitle !== undefined) &amp;amp;&amp;amp; (barTitle !== &#039;&#039;) ) {&lt;br /&gt;
		barTitle = barTitle.replace(/\{wikEdProgramVersion\}/g, wikEd.programVersion + wikEd.installationType);&lt;br /&gt;
		barTitle = barTitle.replace(/\{wikEdProgramDate\}/g, wikEd.programDate);&lt;br /&gt;
		div.title = barTitle;&lt;br /&gt;
	}&lt;br /&gt;
	var buttonsStyle = &#039;&#039;;&lt;br /&gt;
	if (barHeight &amp;gt; 0) {&lt;br /&gt;
		buttonsStyle = &#039; style=&amp;quot;height: &#039; + barHeight + &#039;px;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// make a grip bar&lt;br /&gt;
	var html = &#039;&#039;;&lt;br /&gt;
	if (gripTitle !== null) {&lt;br /&gt;
		var gripStyle = &#039;width: &#039; + wikEd.config.buttonBarGripWidth + &#039;px; &#039;;&lt;br /&gt;
		if (barHeight &amp;gt; 0) {&lt;br /&gt;
			gripStyle += &#039;height: &#039; + barHeight + &#039;px; &#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (gripStyle.length &amp;gt; 0){&lt;br /&gt;
			gripStyle = &#039; style=&amp;quot;&#039; + gripStyle + &#039;&amp;quot;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		html += &#039;&amp;lt;div class=&amp;quot;wikEdButtonBarInnerWrapperVisible&amp;quot; style=&amp;quot;height: &#039; + barHeight + &#039;px;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		html += &#039;&amp;lt;div class=&amp;quot;wikEdButtonBarGripWrapperVisible&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		html += &#039;&amp;lt;div class=&amp;quot;wikEdButtonBarGrip&amp;quot;&#039; + gripStyle + &#039; title=&amp;quot;&#039; + gripTitle + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		html += &#039;&amp;amp;nbsp;&#039;;&lt;br /&gt;
		html += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
		html += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		html += &#039;&amp;lt;div class=&amp;quot;wikEdButtonBarButtonsWrapperVisible&amp;quot;&#039; + buttonsStyle + &#039;&amp;gt;&#039;;&lt;br /&gt;
		html += &#039;&amp;lt;div id=&amp;quot;&#039; + buttonsId + &#039;&amp;quot; class=&amp;quot;&#039; + buttonsClass + &#039;&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		html += buttons;&lt;br /&gt;
		html += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
		html += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		html += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// make a standard no-grip bar&lt;br /&gt;
	else {&lt;br /&gt;
		html += &#039;&amp;lt;div id=&amp;quot;&#039; + buttonsId + &#039;&amp;quot; class=&amp;quot;&#039; + buttonsClass + &#039;&amp;quot;&#039; + buttonsStyle + &#039;&amp;gt;&#039;;&lt;br /&gt;
		html += buttons;&lt;br /&gt;
		html += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	div.innerHTML = html;&lt;br /&gt;
	return div;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.MakeButtonCode: create button code and register&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.MakeButtonCode = function (buttonNo, type) {&lt;br /&gt;
&lt;br /&gt;
	var currButton = wikEd.config.button[buttonNo];&lt;br /&gt;
&lt;br /&gt;
	// add accesskey information to button title&lt;br /&gt;
	var accessKey = &#039;&#039;;&lt;br /&gt;
	if (wikEd.config.buttonKey[buttonNo] !== undefined) {&lt;br /&gt;
		accessKey = &#039; [&#039; + wikEd.config.text[&#039;alt-shift&#039;] + wikEd.config.buttonKey[buttonNo][0] + &#039;]&#039;;&lt;br /&gt;
&lt;br /&gt;
		// initialize wikEd.buttonKeyCode[keyCode] = id&lt;br /&gt;
		wikEd.buttonKeyCode[ (wikEd.config.buttonKey[buttonNo][1]) ] = currButton[0];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add button html code&lt;br /&gt;
	var html;&lt;br /&gt;
	if (type == &#039;button&#039;) {&lt;br /&gt;
		html = &#039;&amp;lt;button type=&amp;quot;button&amp;quot; id=&amp;quot;&#039; + currButton[0] + &#039;&amp;quot; class=&amp;quot;&#039; + currButton[1] + &#039;&amp;quot; title=&amp;quot;&#039; + currButton[2] + accessKey +&#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + currButton[3] + &#039;&amp;quot; width=&amp;quot;&#039; + currButton[4] + &#039;&amp;quot; height=&amp;quot;&#039; + currButton[5] + &#039;&amp;quot; alt=&amp;quot;&#039; + currButton[6] + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		html = &#039;&amp;lt;img id=&amp;quot;&#039; + currButton[0] + &#039;&amp;quot; class=&amp;quot;&#039; + currButton[1] + &#039;&amp;quot; title=&amp;quot;&#039; + currButton[2] + accessKey +&#039;&amp;quot; src=&amp;quot;&#039; + currButton[3] + &#039;&amp;quot; width=&amp;quot;&#039; + currButton[4] + &#039;&amp;quot; height=&amp;quot;&#039; + currButton[5] + &#039;&amp;quot; alt=&amp;quot;&#039; + currButton[6] + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// collect click event info&lt;br /&gt;
	wikEd.editButtonHandler[ currButton[0] ] = currButton[7];&lt;br /&gt;
&lt;br /&gt;
	return html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ButtonBarInit: hide buttons bar, see also wikEd.ButtonBarGripHandler()&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ButtonBarInit = function (bar) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.GetSavedSetting(bar.id + &#039;Hidden&#039;) === true) {&lt;br /&gt;
		var barInnerWrapper = bar.firstChild;&lt;br /&gt;
		var gripWrapper = barInnerWrapper.firstChild;&lt;br /&gt;
		var grip = gripWrapper.firstChild;&lt;br /&gt;
		var buttonsWrapper = gripWrapper.nextSibling;&lt;br /&gt;
&lt;br /&gt;
		barInnerWrapper.className = &#039;wikEdButtonBarInnerWrapperHidden&#039;;&lt;br /&gt;
		gripWrapper.className = &#039;wikEdButtonBarGripWrapperHidden&#039;;&lt;br /&gt;
		buttonsWrapper.className = &#039;wikEdButtonBarButtonsWrapperHidden&#039;;&lt;br /&gt;
		wikEd.buttonsWrapperWidth[bar.id] = buttonsWrapper.offsetWidth;&lt;br /&gt;
		buttonsWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
		grip.addEventListener(&#039;mouseover&#039;, wikEd.ButtonBarGripHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetEditArea: apply css changes to switch between classic textarea and rich text frame&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetEditArea = function (useFrame, notFrame) {&lt;br /&gt;
&lt;br /&gt;
	var scrollRatio = null;&lt;br /&gt;
&lt;br /&gt;
	// turn rich text frame on&lt;br /&gt;
	if (useFrame === true) {&lt;br /&gt;
		scrollRatio = wikEd.textarea.scrollTop / wikEd.textarea.scrollHeight;&lt;br /&gt;
&lt;br /&gt;
		// remember resized textarea dimensions&lt;br /&gt;
		wikEd.textareaHeight = (wikEd.textarea.offsetHeight - wikEd.textareaBorderHeight) + &#039;px&#039;;&lt;br /&gt;
		wikEd.textareaWidth = &#039;100%&#039;;&lt;br /&gt;
&lt;br /&gt;
		wikEd.textareaWrapper.style.position = &#039;absolute&#039;;&lt;br /&gt;
		wikEd.textareaWrapper.style.visibility = &#039;hidden&#039;;&lt;br /&gt;
		wikEd.textarea.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
		if (notFrame !== true) {&lt;br /&gt;
			wikEd.frameWrapper.style.position = &#039;static&#039;;&lt;br /&gt;
			wikEd.frameWrapper.style.visibility = &#039;visible&#039;;&lt;br /&gt;
			wikEd.frameBody.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// set visibility of native toolbar&lt;br /&gt;
		if (wikEd.closeToolbar === true) {&lt;br /&gt;
			wikEd.toolbarWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.toolbarWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (wikEd.buttonBarFormat !== null) {&lt;br /&gt;
			wikEd.buttonBarFormat.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarTextify !== null) {&lt;br /&gt;
			wikEd.buttonBarTextify.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarCustom1 !== null) {&lt;br /&gt;
			wikEd.buttonBarCustom1.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarFind !== null) {&lt;br /&gt;
			wikEd.buttonBarFind.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarFix !== null) {&lt;br /&gt;
			wikEd.buttonBarFix.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarCustom2 !== null) {&lt;br /&gt;
			wikEd.buttonBarCustom2.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarControl !== null) {&lt;br /&gt;
			wikEd.buttonBarControl.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.frameBody.scrollTop = scrollRatio * wikEd.frameBody.scrollHeight;&lt;br /&gt;
		wikEd.ResizeWindowHandler();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// turn classic textarea on&lt;br /&gt;
	else {&lt;br /&gt;
		scrollRatio = wikEd.frameBody.scrollTop / wikEd.frameBody.scrollHeight;&lt;br /&gt;
		if (notFrame !== true) {&lt;br /&gt;
&lt;br /&gt;
			// get resized frame dimensions for textarea&lt;br /&gt;
			if (wikEd.useWikEd === true) {&lt;br /&gt;
				wikEd.textareaHeight = wikEd.frameHeight;&lt;br /&gt;
				wikEd.textareaWidth = &#039;100%&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.frameWrapper.style.position = &#039;absolute&#039;;&lt;br /&gt;
			wikEd.frameWrapper.style.visibility = &#039;hidden&#039;;&lt;br /&gt;
			// Mozilla or wikEd bug: &amp;lt;br&amp;gt; insertion before text a while after setting display to &#039;none&#039;, test with setTimeout(&#039;alert(wikEd.frameBody.innerHTML)&#039;, 1000);&lt;br /&gt;
			// wikEd.frameBody.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.textareaWrapper.style.position = &#039;static&#039;;&lt;br /&gt;
		wikEd.textareaWrapper.style.visibility = &#039;visible&#039;;&lt;br /&gt;
&lt;br /&gt;
		wikEd.textarea.style.height = wikEd.textareaHeight;&lt;br /&gt;
		wikEd.textarea.style.width = wikEd.textareaWidth;&lt;br /&gt;
		wikEd.textarea.style.display = &#039;block&#039;;&lt;br /&gt;
&lt;br /&gt;
		// force visibility of native toolbar&lt;br /&gt;
		if (wikEd.toolbarWrapper !== null) {&lt;br /&gt;
			wikEd.toolbarWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarFormat !== null) {&lt;br /&gt;
			wikEd.buttonBarFormat.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarTextify !== null) {&lt;br /&gt;
			wikEd.buttonBarTextify.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarCustom1 !== null) {&lt;br /&gt;
			wikEd.buttonBarCustom1.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarFind !== null) {&lt;br /&gt;
			wikEd.buttonBarFind.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarFix !== null) {&lt;br /&gt;
			wikEd.buttonBarFix.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarCustom2 !== null) {&lt;br /&gt;
			wikEd.buttonBarCustom2.style.display = &#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (wikEd.buttonBarControl !== null) {&lt;br /&gt;
			wikEd.buttonBarControl.style.display = &#039;block&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.textarea.scrollTop = scrollRatio * wikEd.textarea.scrollHeight;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.Button: toggle or set button checked state&lt;br /&gt;
//   used for buttons that do not require nor change the text. Faster than wikEd.EditButton()&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.Button = function (buttonObj, buttonId, toggleButton, setButton, classButton, doButton) {&lt;br /&gt;
	if (buttonObj !== null) {&lt;br /&gt;
&lt;br /&gt;
		// check if the button is disabled&lt;br /&gt;
		if (buttonObj.className == &#039;wikEdButtonInactive&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// set button to pressed, set cursor to hourglass&lt;br /&gt;
		buttonObj.style.cursor = &#039;wait&#039;;&lt;br /&gt;
&lt;br /&gt;
		// init the button&lt;br /&gt;
		if (setButton === false) {&lt;br /&gt;
			buttonObj.setAttribute(&#039;checked&#039;, false);&lt;br /&gt;
			if (classButton === undefined) {&lt;br /&gt;
				buttonObj.className = &#039;wikEdButtonUnchecked&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if (setButton === true) {&lt;br /&gt;
			buttonObj.setAttribute(&#039;checked&#039;, true);&lt;br /&gt;
			if (classButton === undefined) {&lt;br /&gt;
				buttonObj.className = &#039;wikEdButtonChecked&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if (typeof classButton == &#039;string&#039;) {&lt;br /&gt;
			buttonObj.className = classButton;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			doButton = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// toggle the button&lt;br /&gt;
		if (toggleButton === true) {&lt;br /&gt;
			if (buttonObj.getAttribute(&#039;checked&#039;) === &#039;true&#039;) {&lt;br /&gt;
				buttonObj.setAttribute(&#039;checked&#039;, false);&lt;br /&gt;
				buttonObj.className = &#039;wikEdButtonUnchecked&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				buttonObj.setAttribute(&#039;checked&#039;, true);&lt;br /&gt;
				buttonObj.className = &#039;wikEdButtonChecked&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// perform specific actions&lt;br /&gt;
	var focusFrame = false;&lt;br /&gt;
	if (doButton === true) {&lt;br /&gt;
&lt;br /&gt;
		// textarea no longer up to date&lt;br /&gt;
		wikEd.textareaUpdated = false;&lt;br /&gt;
&lt;br /&gt;
		// remove active content&lt;br /&gt;
		wikEd.RemoveElements([&#039;script&#039;, &#039;object&#039;, &#039;applet&#039;, &#039;embed&#039;]);&lt;br /&gt;
&lt;br /&gt;
		switch (buttonId) {&lt;br /&gt;
&lt;br /&gt;
			// switch between syntax highlighting and plain text&lt;br /&gt;
			case &#039;wikEdHighlightSyntax&#039;:&lt;br /&gt;
				if (buttonObj.getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
					wikEd.highlightSyntax = true;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdSyntaxOff&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
					if (wikEd.refHide === true) {&lt;br /&gt;
						wikEd.frameBody.className = &#039;wikEdFrameBodyNewbie&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						wikEd.frameBody.className = &#039;wikEdFrameBodySyntax&#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.highlightSyntax = false;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdSyntaxOff&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
					wikEd.frameBody.className = &#039;wikEdFrameBodyPlain&#039;;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// do not keep whole text selected&lt;br /&gt;
				wikEd.EditButton( null, &#039;wikEdUpdateAll&#039;, {&#039;keepSel&#039;: false} );&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// table mode button&lt;br /&gt;
			case &#039;wikEdTableMode&#039;:&lt;br /&gt;
				if (buttonObj.getAttribute(&#039;checked&#039;) != &#039;true&#039;) {&lt;br /&gt;
					wikEd.tableMode = false;&lt;br /&gt;
					wikEd.EditButton( null, &#039;wikEdUpdateAll&#039;, {&#039;keepSel&#039;: false} );&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.tableMode = true;&lt;br /&gt;
					wikEd.EditButton( null, &#039;wikEdUpdateAll&#039;, {&#039;keepSel&#039;: false} );&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// align textbox with display top&lt;br /&gt;
			case &#039;wikEdScrollToPreview&#039;:&lt;br /&gt;
			case &#039;wikEdScrollToPreview2&#039;:&lt;br /&gt;
			case &#039;wikEdScrollToPreview3&#039;:&lt;br /&gt;
				window.scroll(0, wikEd.GetOffsetTop(wikEd.submitWrapper));&lt;br /&gt;
				focusFrame = true;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// align edit buttons with display top&lt;br /&gt;
			case &#039;wikEdScrollToEdit&#039;:&lt;br /&gt;
			case &#039;wikEdScrollToEdit2&#039;:&lt;br /&gt;
			case &#039;wikEdScrollToEdit3&#039;:&lt;br /&gt;
			case &#039;wikEdScrollToEdit4&#039;:&lt;br /&gt;
				window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));&lt;br /&gt;
				focusFrame = true;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// cycle through different font sizes&lt;br /&gt;
			case &#039;wikEdTextZoomDown&#039;:&lt;br /&gt;
				wikEd.textSize = wikEd.textSize / 1.2;&lt;br /&gt;
				if (wikEd.textSize &amp;lt; wikEd.textSizeInit / 1.2 / 1.2) {&lt;br /&gt;
					wikEd.textSize = wikEd.textSizeInit * 1.2 * 1.2;&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.frameBody.style.fontSize = wikEd.textSize + &#039;px&#039;;&lt;br /&gt;
				focusFrame = true;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// cycle through different font sizes&lt;br /&gt;
			case &#039;wikEdTextZoomUp&#039;:&lt;br /&gt;
				wikEd.textSize = wikEd.textSize * 1.2;&lt;br /&gt;
				if (wikEd.textSize &amp;gt; wikEd.textSizeInit * 1.2 * 1.2) {&lt;br /&gt;
					wikEd.textSize = wikEd.textSizeInit / 1.2 / 1.2;&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.frameBody.style.fontSize = wikEd.textSize + &#039;px&#039;;&lt;br /&gt;
				focusFrame = true;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// display local preview box&lt;br /&gt;
			case &#039;wikEdLocalPreview&#039;:&lt;br /&gt;
				wikEd.LocalPreview();&lt;br /&gt;
				focusFrame = true;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// display local diff box&lt;br /&gt;
			case &#039;wikEdLocalDiff&#039;:&lt;br /&gt;
				if (WikEdDiff === undefined) {&lt;br /&gt;
					wikEd.previewDiff.innerHTML = &#039;&amp;lt;div class=&amp;quot;wikEdPreviewDiffError&amp;quot;&amp;gt;&#039; + wikEd.config.text.diffNotLoaded + &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
					wikEd.previewArticle.style.display = &#039;none&#039;;&lt;br /&gt;
					wikEd.previewDiff.style.display = &#039;block&#039;;&lt;br /&gt;
					wikEd.localPrevWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// interrupt fullscreen mode&lt;br /&gt;
				if (wikEd.fullscreen === true) {&lt;br /&gt;
					wikEd.FullScreen(false);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// display diff, keep wrapper height to prevent scrolling&lt;br /&gt;
				var previewHeight = wikEd.localPrevWrapper.offsetHeight;&lt;br /&gt;
				if ( ( (wikEd.previewArticle.innerHTML !== &#039;&#039;) || (wikEd.previewDiff.innerHTML !== &#039;&#039;) ) &amp;amp;&amp;amp; (previewHeight &amp;gt; 0) ) {&lt;br /&gt;
					wikEd.localPrevWrapper.style.height = previewHeight + &#039;px&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				if (wikEd.previewDiff.innerHTML === &#039;&#039;) {&lt;br /&gt;
					wikEd.previewDiff.innerHTML = wikEd.config.text.wikEdPreviewLoading;&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.localPrevWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
				wikEd.previewArticle.style.display = &#039;none&#039;;&lt;br /&gt;
				wikEd.previewDiff.style.display = &#039;block&#039;;&lt;br /&gt;
&lt;br /&gt;
				if (wikEd.useWikEd === true) {&lt;br /&gt;
					wikEd.UpdateTextarea();&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// add trailing newline&lt;br /&gt;
				var currentVersion = wikEd.textarea.value;&lt;br /&gt;
&lt;br /&gt;
				// call external diff program&lt;br /&gt;
				wikEd.previewDiff.innerHTML = wikEd.DiffResponse(wikEd.origVersion, currentVersion);&lt;br /&gt;
&lt;br /&gt;
				// scroll to button, textarea, or preview field&lt;br /&gt;
				wikEd.ScrollToPreview();&lt;br /&gt;
&lt;br /&gt;
				// run scheduled custom functions&lt;br /&gt;
				wikEd.ExecuteHook(wikEd.config.diffHook);&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// close the preview and diff boxes&lt;br /&gt;
			case &#039;wikEdClose&#039;:&lt;br /&gt;
			case &#039;wikEdClose2&#039;:&lt;br /&gt;
				window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));&lt;br /&gt;
&lt;br /&gt;
				wikEd.previewArticle.style.display = &#039;none&#039;;&lt;br /&gt;
				wikEd.previewDiff.style.display = &#039;none&#039;;&lt;br /&gt;
				wikEd.localPrevWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
				wikEd.localPrevWrapper.style.height = &#039;auto&#039;;&lt;br /&gt;
				focusFrame = true;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// switch between textarea and frame display&lt;br /&gt;
			//   switching an iframe in design mode immediately after initialization between absolute/static may crash mozilla&lt;br /&gt;
			case &#039;wikEdUseWikEd&#039;:&lt;br /&gt;
&lt;br /&gt;
				// enble wikEd&lt;br /&gt;
				if (buttonObj.getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
					wikEd.useWikEd = true;&lt;br /&gt;
					window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdUseClassic&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
&lt;br /&gt;
					// update frame content&lt;br /&gt;
					wikEd.UpdateFrame();&lt;br /&gt;
&lt;br /&gt;
					// display rich text frame&lt;br /&gt;
					wikEd.SetEditArea(true);&lt;br /&gt;
&lt;br /&gt;
					// run scheduled custom functions&lt;br /&gt;
					wikEd.ExecuteHook(wikEd.config.frameHook);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// turn classic textarea on, disable wikEd&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.PastedOff();&lt;br /&gt;
&lt;br /&gt;
					// update frame content&lt;br /&gt;
					wikEd.UpdateTextarea();&lt;br /&gt;
&lt;br /&gt;
					// display on textarea&lt;br /&gt;
					wikEd.SetEditArea(false);&lt;br /&gt;
&lt;br /&gt;
					wikEd.useWikEd = false;&lt;br /&gt;
					window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdUseClassic&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
&lt;br /&gt;
					// run scheduled custom functions&lt;br /&gt;
					wikEd.ExecuteHook(wikEd.config.textareaHook);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// update fullscreen&lt;br /&gt;
				wikEd.FullScreen(wikEd.fullScreenMode, true);&lt;br /&gt;
&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// add &amp;quot;using wikEd&amp;quot; to summaries&lt;br /&gt;
			case &#039;wikEdUsing&#039;:&lt;br /&gt;
				if (buttonObj.getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
					wikEd.using = true;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdSummaryUsing&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.using = false;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdSummaryUsing&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// hide ref tags&lt;br /&gt;
			case &#039;wikEdRefHide&#039;:&lt;br /&gt;
				if (buttonObj.getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
					wikEd.refHide = true;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdRefHide&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.refHide = false;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdRefHide&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if ( (wikEd.config.showTableModeButton === false) &amp;amp;&amp;amp; (wikEd.config.tableMode === true) ) {&lt;br /&gt;
					wikEd.tableMode = wikEd.refHide;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if (wikEd.useWikEd === true) {&lt;br /&gt;
					if (wikEd.refHide === true) {&lt;br /&gt;
						wikEd.frameBody.className = &#039;wikEdFrameBodyNewbie&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						wikEd.frameBody.className = &#039;wikEdFrameBodySyntax&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					wikEd.EditButton(null, &#039;wikEdWikify&#039;, &#039;whole&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// close the toolbar&lt;br /&gt;
			case &#039;wikEdCloseToolbar&#039;:&lt;br /&gt;
				if (buttonObj.getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
					wikEd.closeToolbar = true;&lt;br /&gt;
					wikEd.toolbarWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdCloseToolbar&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.closeToolbar = false;&lt;br /&gt;
					wikEd.toolbarWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdCloseToolbar&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// resize fullscreen frame&lt;br /&gt;
				if (wikEd.fullscreen === true) {&lt;br /&gt;
					wikEd.ResizeWindowHandler();&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// just toggle the case sensitive search button&lt;br /&gt;
			case &#039;wikEdCaseSensitive&#039;:&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// just toggle the regexp search button&lt;br /&gt;
			case &#039;wikEdRegExp&#039;:&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// just toggle the find-ahead-as-you-type search button&lt;br /&gt;
			case &#039;wikEdFindAhead&#039;:&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// switch to fullscreen edit area&lt;br /&gt;
			case &#039;wikEdFullScreen&#039;:&lt;br /&gt;
				if (buttonObj.getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
					wikEd.FullScreen(true, true);&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdFullscreen&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.FullScreen(false, true);&lt;br /&gt;
					wikEd.SetPersistent(&#039;wikEdFullscreen&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// clear the saved settings for find, replace, and summary history&lt;br /&gt;
			case &#039;wikEdClearHistory&#039;:&lt;br /&gt;
				wikEd.ClearHistory(&#039;find&#039;);&lt;br /&gt;
				wikEd.ClearHistory(&#039;replace&#039;);&lt;br /&gt;
				wikEd.ClearHistory(&#039;summary&#039;);&lt;br /&gt;
				focusFrame = true;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// for testing&lt;br /&gt;
			case &#039;wikEdPlaceholder&#039;:&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// reset cursor to normal&lt;br /&gt;
	if (buttonObj !== null) {&lt;br /&gt;
		buttonObj.style.cursor = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// Firefox 27 bug workaround to force cursor update&lt;br /&gt;
		buttonObj.focus();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// focus the frame&lt;br /&gt;
	if ( (wikEd.useWikEd === true) &amp;amp;&amp;amp; (focusFrame === true) ) {&lt;br /&gt;
		wikEd.frameWindow.focus();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.EditButton: editing functions&lt;br /&gt;
//   used for buttons that require or change the text, more time consuming than wikEd.Button()&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.EditButton = function (buttonObj, buttonId, parameters, CustomHandler) {&lt;br /&gt;
&lt;br /&gt;
	// check if iframe is enabled&lt;br /&gt;
	if (wikEd.UseWikEd === false) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check if button is disabled&lt;br /&gt;
	if (buttonObj !== null) {&lt;br /&gt;
		if (buttonObj.className == &#039;wikEdButtonInactive&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove active and non-text content&lt;br /&gt;
	wikEd.RemoveElements([&#039;script&#039;, &#039;object&#039;, &#039;applet&#039;, &#039;embed&#039;, &#039;textarea&#039;]);&lt;br /&gt;
&lt;br /&gt;
	// select the appropriate text change targets (whole, selection, cursor, focusWord, focusLine, selectionWord, or selectionLine)&lt;br /&gt;
	var obj = {};&lt;br /&gt;
	obj.changed = {};&lt;br /&gt;
	var highlightNoTimeOut = false;&lt;br /&gt;
&lt;br /&gt;
	// set cursor position into closest highest text node so that highlighting does not bleed out&lt;br /&gt;
	wikEd.AntiHighlightBleeding(obj, true);&lt;br /&gt;
&lt;br /&gt;
	// textarea no longer up to date&lt;br /&gt;
	wikEd.textareaUpdated = false;&lt;br /&gt;
&lt;br /&gt;
	// invalidate wikify/textify of recently pasted text&lt;br /&gt;
	if ( (buttonId != &#039;wikEdPastedWikify&#039;) &amp;amp;&amp;amp; (buttonId != &#039;wikEdPastedTextify&#039;) &amp;amp;&amp;amp; (buttonId != &#039;wikEdPasting&#039;) ) {&lt;br /&gt;
		wikEd.PastedOff();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// switch the button&lt;br /&gt;
	switch (buttonId) {&lt;br /&gt;
&lt;br /&gt;
		// undo, redo: whole&lt;br /&gt;
		case &#039;wikEdUndo&#039;:&lt;br /&gt;
		case &#039;wikEdRedo&#039;:&lt;br /&gt;
		case &#039;wikEdUndoAll&#039;:&lt;br /&gt;
		case &#039;wikEdRedoAll&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;whole&#039;);&lt;br /&gt;
			obj.changed = obj.whole;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// basic wiki character formatting: selection / focusWord / cursor&lt;br /&gt;
		case &#039;wikEdBold&#039;:&lt;br /&gt;
		case &#039;wikEdItalic&#039;:&lt;br /&gt;
		case &#039;wikEdUnderline&#039;:&lt;br /&gt;
		case &#039;wikEdStrikethrough&#039;:&lt;br /&gt;
		case &#039;wikEdNowiki&#039;:&lt;br /&gt;
		case &#039;wikEdSuperscript&#039;:&lt;br /&gt;
		case &#039;wikEdSubscript&#039;:&lt;br /&gt;
		case &#039;wikEdWikiLink&#039;:&lt;br /&gt;
		case &#039;wikEdWebLink&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;focusWord&#039;);&lt;br /&gt;
				if (obj.focusWord.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed = obj.focusWord;&lt;br /&gt;
				}&lt;br /&gt;
				else  {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// reference: selection / cursor&lt;br /&gt;
		case &#039;wikEdRef&#039;:&lt;br /&gt;
		case &#039;wikEdRefNamed&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed = obj.cursor;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// references and small references: selection / cursor&lt;br /&gt;
		case &#039;wikEdReferences&#039;:&lt;br /&gt;
		case &#039;wikEdReferencesSection&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed = obj.cursor;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// signature and name only signature: selection / cursor&lt;br /&gt;
		case &#039;wikEdSign&#039;:&lt;br /&gt;
		case &#039;wikEdSignName&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed = obj.cursor;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// character formatting: selection / focusWord / cursor&lt;br /&gt;
		case &#039;wikEdCase&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;focusWord&#039;);&lt;br /&gt;
				if (obj.focusWord.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed = obj.focusWord;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// multiple line changes: selectionLine / focusLine / cursor&lt;br /&gt;
		case &#039;wikEdDecreaseHeading&#039;:&lt;br /&gt;
		case &#039;wikEdIncreaseHeading&#039;:&lt;br /&gt;
		case &#039;wikEdIncreaseBulletList&#039;:&lt;br /&gt;
		case &#039;wikEdDecreaseBulletList&#039;:&lt;br /&gt;
		case &#039;wikEdIncreaseNumberList&#039;:&lt;br /&gt;
		case &#039;wikEdDecreaseNumberList&#039;:&lt;br /&gt;
		case &#039;wikEdIncreaseIndentList&#039;:&lt;br /&gt;
		case &#039;wikEdDecreaseIndentList&#039;:&lt;br /&gt;
		case &#039;wikEdDefinitionList&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				wikEd.GetText(obj, &#039;selectionLine&#039;);&lt;br /&gt;
				obj.changed = obj.selectionLine;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;focusLine&#039;);&lt;br /&gt;
				if (obj.focusLine.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed = obj.focusLine;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// sort: selectionLine / focusLine&lt;br /&gt;
		case &#039;wikEdSort&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor, selectionLine&#039;);&lt;br /&gt;
			if (obj.selection.plain === &#039;&#039;)  {&lt;br /&gt;
				obj.changed = obj.selectionLine;&lt;br /&gt;
			}&lt;br /&gt;
			else if (/\n./.test(obj.selection.plain) === false) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed = obj.selectionLine;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// image: selectionWord (if text is selected) / cursor&lt;br /&gt;
		case &#039;wikEdImage&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				wikEd.GetText(obj, &#039;selectionWord&#039;);&lt;br /&gt;
				obj.changed = obj.selectionWord;&lt;br /&gt;
			}&lt;br /&gt;
			else  {&lt;br /&gt;
				obj.changed = obj.cursor;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// table: selectionLine / cursor&lt;br /&gt;
		case &#039;wikEdTable&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				wikEd.GetText(obj, &#039;selectionLine&#039;);&lt;br /&gt;
				obj.changed = obj.selectionLine;&lt;br /&gt;
			}&lt;br /&gt;
			else  {&lt;br /&gt;
				wikEd.GetText(obj, &#039;focusLine&#039;);&lt;br /&gt;
				obj.changed = obj.cursor;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// wikify pasted: cursor&lt;br /&gt;
		case &#039;wikEdPastedWikify&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;cursor&#039;);&lt;br /&gt;
			obj.changed = obj.cursor;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// textify during pasting: selection&lt;br /&gt;
		case &#039;wikEdPasting&#039;:&lt;br /&gt;
&lt;br /&gt;
			// get text, do not wikify&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection&#039;, false);&lt;br /&gt;
			obj.changed = obj.selection;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// textify pasted: cursor&lt;br /&gt;
		case &#039;wikEdPastedTextify&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;cursor&#039;);&lt;br /&gt;
			obj.changed = obj.cursor;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// wikify: selection / whole&lt;br /&gt;
		case &#039;wikEdWikify&#039;:&lt;br /&gt;
			if (parameters == &#039;whole&#039;) {&lt;br /&gt;
				wikEd.GetText(obj, &#039;whole&#039;);&lt;br /&gt;
				obj.changed = obj.whole;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;selection&#039;);&lt;br /&gt;
				if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed = obj.selection;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.GetText(obj, &#039;whole&#039;);&lt;br /&gt;
					obj.changed = obj.whole;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// textify: selection / whole, without wikifying&lt;br /&gt;
		case &#039;wikEdTextify&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection&#039;, false);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;whole&#039;, false);&lt;br /&gt;
				obj.changed = obj.whole;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// redirect: whole&lt;br /&gt;
		case &#039;wikEdRedirect&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;whole, selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain === &#039;&#039;) {&lt;br /&gt;
				wikEd.GetText(obj, &#039;selectionWord&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed = obj.whole;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// find and replace: selection / focusWord / cursor&lt;br /&gt;
		case &#039;wikEdFindPrev&#039;:&lt;br /&gt;
		case &#039;wikEdFindNext&#039;:&lt;br /&gt;
		case &#039;wikEdJumpPrev&#039;:&lt;br /&gt;
		case &#039;wikEdJumpNext&#039;:&lt;br /&gt;
		case &#039;wikEdReplacePrev&#039;:&lt;br /&gt;
		case &#039;wikEdReplaceNext&#039;:&lt;br /&gt;
		case &#039;wikEdFindAll&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;focusWord&#039;);&lt;br /&gt;
				if (obj.focusWord.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed = obj.focusWord;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// replace all: selection / whole&lt;br /&gt;
		case &#039;wikEdReplaceAll&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;whole&#039;);&lt;br /&gt;
				obj.changed = obj.whole;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// fixing buttons: selection / whole&lt;br /&gt;
		case &#039;wikEdFixBasic&#039;:&lt;br /&gt;
		case &#039;wikEdFixUnicode&#039;:&lt;br /&gt;
		case &#039;wikEdFixAll&#039;:&lt;br /&gt;
		case &#039;wikEdFixHtml&#039;:&lt;br /&gt;
		case &#039;wikEdFixRegExTypo&#039;:&lt;br /&gt;
		case &#039;wikEdFixRedirect&#039;:&lt;br /&gt;
		case &#039;wikEdFixRedirectReplace&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;whole&#039;);&lt;br /&gt;
				obj.changed = obj.whole;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// fixing buttons: selection / focusPara / cursor&lt;br /&gt;
		case &#039;wikEdFixPunct&#039;:&lt;br /&gt;
		case &#039;wikEdFixMath&#039;:&lt;br /&gt;
		case &#039;wikEdFixUnits&#039;:&lt;br /&gt;
		case &#039;wikEdFixDashes&#039;:&lt;br /&gt;
		case &#039;wikEdFixCaps&#039;:&lt;br /&gt;
		case &#039;wikEdFixChem&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;focusPara&#039;);&lt;br /&gt;
				if (obj.focusPara.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed = obj.focusPara;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// fixing buttons: selection / focusLine / cursor&lt;br /&gt;
		case &#039;wikEdFixChem&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;focusLine&#039;);&lt;br /&gt;
				if (obj.focusPara.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed = obj.focusLine;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// source: selection / whole&lt;br /&gt;
		case &#039;wikEdSource&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.GetText(obj, &#039;whole&#039;);&lt;br /&gt;
				obj.changed = obj.whole;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// insert tags: selection / cursor&lt;br /&gt;
		case &#039;wikEdInsertTags&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection, cursor&#039;);&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed = obj.selection;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed = obj.cursor;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// update text view using current control button settings&lt;br /&gt;
		case &#039;wikEdUpdateAll&#039;:&lt;br /&gt;
			wikEd.GetText(obj, &#039;whole&#039;);&lt;br /&gt;
			obj.changed = obj.whole;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// custom edit functions have to call wikEd.GetText() themselves&lt;br /&gt;
		default:&lt;br /&gt;
			wikEd.GetText(obj, &#039;cursor&#039;);&lt;br /&gt;
			obj.changed = obj.cursor;&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// exit&lt;br /&gt;
	if (obj.changed === undefined) {&lt;br /&gt;
		wikEd.frameWindow.focus();&lt;br /&gt;
&lt;br /&gt;
		// reset button to active, reset cursor&lt;br /&gt;
		if (buttonObj !== null) {&lt;br /&gt;
			if (buttonObj.className != &#039;wikEdButtonInactive&#039;) {&lt;br /&gt;
				buttonObj.className = &#039;wikEdButton&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set local syntax highlighting flag&lt;br /&gt;
	var highlightSyntax = wikEd.highlightSyntax;&lt;br /&gt;
&lt;br /&gt;
	// apply selected action&lt;br /&gt;
	var selectChanged = true;&lt;br /&gt;
	var selectChangedText = &#039;&#039;;&lt;br /&gt;
	var emptyOrSpaces = /^ *$/.test(obj.changed.plain);&lt;br /&gt;
	switch (buttonId) {&lt;br /&gt;
&lt;br /&gt;
		// undo&lt;br /&gt;
		case &#039;wikEdUndo&#039;:&lt;br /&gt;
			if (wikEd.lastVersion === null) {&lt;br /&gt;
				wikEd.lastVersion = obj.changed.plain;&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.frameDocument.execCommand(&#039;undo&#039;);&lt;br /&gt;
			if (obj.sel.rangeCount === 0) {&lt;br /&gt;
				obj.sel.collapse(wikEd.frameBody, 0);&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.range = obj.sel.getRangeAt(0);&lt;br /&gt;
			obj.changed.plain = null;&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// redo&lt;br /&gt;
		case &#039;wikEdRedo&#039;:&lt;br /&gt;
			wikEd.frameDocument.execCommand(&#039;redo&#039;);&lt;br /&gt;
			if (obj.sel.rangeCount === 0) {&lt;br /&gt;
				obj.sel.collapse(wikEd.frameBody, 0);&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.range = obj.sel.getRangeAt(0);&lt;br /&gt;
			obj.changed.plain = null;&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// bold&lt;br /&gt;
		case &#039;wikEdBold&#039;:&lt;br /&gt;
&lt;br /&gt;
			// remove markup&lt;br /&gt;
			if (/^(\s*)&#039;&#039;&#039;((.|\n)*?)&#039;&#039;&#039;(\s*)$/.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/^(\s*)&#039;&#039;&#039;((.|\n)*?)&#039;&#039;&#039;(\s*)$/g, &#039;$1$2$4&#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add markup&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;\&#039;\&#039;\&#039;&#039; + obj.changed.plain + &#039;\&#039;\&#039;\&#039;&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
&lt;br /&gt;
					// move spaces outside markup&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&#039;&#039;&#039;)(\s*)((.|\n)*?)(\s*)(&#039;&#039;&#039;)$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
&lt;br /&gt;
					// trim to maximal number of &#039; (bold + italic)&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^&#039;{6,}((.|\n)*)&#039;{6,}$/g, &#039;\&#039;\&#039;\&#039;\&#039;\&#039;$1\&#039;\&#039;\&#039;\&#039;\&#039;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// italic&lt;br /&gt;
		case &#039;wikEdItalic&#039;:&lt;br /&gt;
&lt;br /&gt;
			// remove markup&lt;br /&gt;
			if (/^(\s*)&#039;&#039;((.|\n)*?)&#039;&#039;(\s*)$/.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/^(\s*)&#039;&#039;((.|\n)*?)&#039;&#039;(\s*)$/g, &#039;$1$2$4&#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add markup&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;\&#039;\&#039;&#039; + obj.changed.plain + &#039;\&#039;\&#039;&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
&lt;br /&gt;
					// move spaces outside markup&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&#039;&#039;)(\s*)((.|\n)*?)(\s*)(&#039;&#039;)$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
&lt;br /&gt;
					// trim to maximal number of &#039; (bold + italic)&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^&#039;{6,}((.|\n)*)&#039;{6,}$/g, &#039;\&#039;\&#039;\&#039;\&#039;\&#039;$1\&#039;\&#039;\&#039;\&#039;\&#039;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// underline&lt;br /&gt;
		case &#039;wikEdUnderline&#039;:&lt;br /&gt;
&lt;br /&gt;
		// remove markup&lt;br /&gt;
			if ( /&amp;amp;lt;u&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/u&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;u&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/u&amp;amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add markup&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;&amp;amp;lt;u&amp;amp;gt;&#039; + obj.changed.plain + &#039;&amp;amp;lt;\/u&amp;amp;gt;&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&amp;amp;lt;u&amp;amp;gt;)(\s*)((.|\n)*?)(\s*)(&amp;amp;lt;\/u&amp;amp;gt;)$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// strikethrough&lt;br /&gt;
		case &#039;wikEdStrikethrough&#039;:&lt;br /&gt;
			if ( /&amp;amp;lt;s&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/s&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;s&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/s&amp;amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;&amp;amp;lt;s&amp;amp;gt;&#039; + obj.changed.plain + &#039;&amp;amp;lt;\/s&amp;amp;gt;&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&amp;amp;lt;s&amp;amp;gt;)(\s*)((.|\n)*?)(\s*)(&amp;amp;lt;\/s&amp;amp;gt;)$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// nowiki&lt;br /&gt;
		case &#039;wikEdNowiki&#039;:&lt;br /&gt;
			if ( /&amp;amp;lt;nowiki&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/nowiki&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;nowiki&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/nowiki&amp;amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;&amp;amp;lt;nowiki&amp;amp;gt;&#039; + obj.changed.plain + &#039;&amp;amp;lt;\/nowiki&amp;amp;gt;&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&amp;amp;lt;nowiki&amp;amp;gt;)(\s*)((.|\n)*?)(\s*)(&amp;amp;lt;\/nowiki&amp;amp;gt;)$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// superscript&lt;br /&gt;
		case &#039;wikEdSuperscript&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/^(\s*)&amp;amp;lt;sub&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/sub&amp;amp;gt;(\s*)$/, &#039;$1$2$4&#039;);&lt;br /&gt;
			if ( /&amp;amp;lt;sup&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/sup&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;sup&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/sup&amp;amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;&amp;amp;lt;sup&amp;amp;gt;&#039; + obj.changed.plain + &#039;&amp;amp;lt;/sup&amp;amp;gt;&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&amp;amp;lt;sup&amp;amp;gt;)(\s*)((.|\n)*?)(\s*)(&amp;amp;lt;\/sup&amp;amp;gt;)$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// subscript&lt;br /&gt;
		case &#039;wikEdSubscript&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/^(\s*)&amp;amp;lt;sup&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/sup&amp;amp;gt;(\s*)$/, &#039;$1$2$4&#039;);&lt;br /&gt;
			if ( /&amp;amp;lt;sub&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/sub&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;sub&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/sub&amp;amp;gt;/gi, &#039;$1&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;&amp;amp;lt;sub&amp;amp;gt;&#039; + obj.changed.plain + &#039;&amp;amp;lt;/sub&amp;amp;gt;&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&amp;amp;lt;sub&amp;amp;gt;)(\s*)((.|\n)*?)(\s*)(&amp;amp;lt;\/sub&amp;amp;gt;)$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// in-text reference&lt;br /&gt;
		case &#039;wikEdRef&#039;:&lt;br /&gt;
		case &#039;wikEdRefNamed&#039;:&lt;br /&gt;
			if (obj.changed.plain === &#039;&#039;) {&lt;br /&gt;
				if (buttonId == &#039;wikEdRef&#039;) {&lt;br /&gt;
					obj.changed.plain = &#039;&amp;amp;lt;ref&amp;amp;gt;&amp;amp;lt;\/ref&amp;amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed.plain = &#039;&amp;amp;lt;ref name=&amp;quot;&amp;quot; \/&amp;amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else if ( /&amp;amp;lt;ref( name=&amp;quot;&amp;quot;)? ?\/&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = &#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else if ( /&amp;amp;lt;ref( name=&amp;quot;&amp;quot;)?&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/ref&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;ref( name=&amp;quot;&amp;quot;)?&amp;amp;gt;((.|\n)*?)&amp;amp;lt;\/ref&amp;amp;gt;/gi, &#039;$2&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				if (buttonId == &#039;wikEdRef&#039;) {&lt;br /&gt;
					obj.changed.plain = &#039;&amp;amp;lt;ref&amp;amp;gt;&#039; + obj.changed.plain + &#039;&amp;amp;lt;/ref&amp;amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed.plain = &#039;&amp;amp;lt;ref name=&amp;quot;&amp;quot;&amp;amp;gt;&#039; + obj.changed.plain + &#039;&amp;amp;lt;/ref&amp;amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(&amp;amp;lt;ref( name=&amp;quot;&amp;quot;)?&amp;amp;gt;)(\s*)((.|\n)*?)(\s*)(&amp;amp;lt;\/ref&amp;amp;gt;)$/, &#039;$3$1$4$7$6&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// signature ~~~~&lt;br /&gt;
		case &#039;wikEdSign&#039;:&lt;br /&gt;
			if (obj.changed.plain == &#039;~~~~&#039;) {&lt;br /&gt;
				obj.changed.plain = &#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;~~~~&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// name only signature ~~~&lt;br /&gt;
		case &#039;wikEdSignName&#039;:&lt;br /&gt;
			if (obj.changed.plain == &#039;~~~&#039;) {&lt;br /&gt;
				obj.changed.plain = &#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;~~~&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// references location&lt;br /&gt;
		case &#039;wikEdReferences&#039;:&lt;br /&gt;
		case &#039;wikEdReferencesSection&#039;:&lt;br /&gt;
			var ref = wikEd.config.text.wikEdReferencesSection;&lt;br /&gt;
			ref = ref.replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;);&lt;br /&gt;
			ref = ref.replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
			var refEscaped = ref;&lt;br /&gt;
			refEscaped = refEscaped.replace(/([^\w\s;&amp;amp;])/g, &#039;\\$1&#039;);&lt;br /&gt;
			refEscaped = refEscaped.replace(/^\n|\n$/g, &#039;\\n*&#039;);&lt;br /&gt;
			refEscaped = refEscaped.replace(/(\n)/g, &#039;\\n&#039;);&lt;br /&gt;
			var regExp = new RegExp(refEscaped, &#039;gi&#039;);&lt;br /&gt;
&lt;br /&gt;
			// plain references tag&lt;br /&gt;
			if (buttonId == &#039;wikEdReferences&#039;) {&lt;br /&gt;
				if (obj.changed.plain === &#039;&#039;) {&lt;br /&gt;
					obj.changed.plain = &#039;&amp;amp;lt;references/&amp;amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				else if (regExp.test(obj.changed.plain) === true) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(regExp, &#039;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else if (/&amp;amp;lt;references ?\/&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;references ?\/&amp;amp;gt;/gi, &#039;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
					obj.changed.plain = &#039;&amp;amp;lt;references/&amp;amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// complete references code&lt;br /&gt;
			else {&lt;br /&gt;
				if (obj.changed.plain === &#039;&#039;) {&lt;br /&gt;
					obj.changed.plain = ref;&lt;br /&gt;
				}&lt;br /&gt;
				else if (regExp.test(obj.changed.plain) === true) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(regExp, &#039;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else if ( /&amp;amp;lt;references ?\/&amp;amp;gt;/i.test(obj.changed.plain) ) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;references ?\/&amp;amp;gt;/gi, &#039;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed = obj.cursor;&lt;br /&gt;
					obj.changed.plain = ref;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// toggle lowercase / uppercase&lt;br /&gt;
		case &#039;wikEdCase&#039;:&lt;br /&gt;
			if (obj.changed.plain === &#039;&#039;) {&lt;br /&gt;
				obj.changed.plain = null;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// lowercase all uppercased text&lt;br /&gt;
			else {&lt;br /&gt;
&lt;br /&gt;
				// html character entities to chars&lt;br /&gt;
				var plain = obj.changed.plain;&lt;br /&gt;
				plain = plain.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
				plain = plain.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
				plain = plain.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
				if (plain.toUpperCase() == plain) {&lt;br /&gt;
					plain = plain.toLowerCase();&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// first-letter-uppercase all lowercased text&lt;br /&gt;
				else if (plain.toLowerCase() == plain) {&lt;br /&gt;
					var regExp = new RegExp(&#039;(^|[^&#039; + wikEd.letters + &#039;_0-9])([&#039; + wikEd.letters + &#039;])([&#039; + wikEd.letters + &#039;_0-9\&#039;]*)&#039;, &#039;g&#039;);&lt;br /&gt;
					plain = plain.replace(regExp,&lt;br /&gt;
						function(p, p1, p2, p3) {&lt;br /&gt;
							return p1 + p2.toUpperCase() + p3.toLowerCase();&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// uppercase mixed upper and lowercased text&lt;br /&gt;
				else {&lt;br /&gt;
					plain = plain.toUpperCase();&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// chars back to html character entities&lt;br /&gt;
				plain = wikEd.EscapeHtml(plain);&lt;br /&gt;
				obj.changed.plain = plain;&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// sort alphabetically by visible words, case insensitive, and numerically&lt;br /&gt;
		case &#039;wikEdSort&#039;:&lt;br /&gt;
&lt;br /&gt;
			// fix unicode and character entities&lt;br /&gt;
			wikEd.FixUnicode(obj.changed);&lt;br /&gt;
&lt;br /&gt;
			// sort a single line&lt;br /&gt;
			if (/\n./.test(obj.changed.plain) === false) {&lt;br /&gt;
&lt;br /&gt;
				// Normalize(): normalize strings for sorting&lt;br /&gt;
				var Normalize = function (text) {&lt;br /&gt;
&lt;br /&gt;
					//                    [ [           |(        ) ] ]&lt;br /&gt;
					text = text.replace(/\[\[[^\[\]\|]*\|([^\[\]]*)\]\]/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
					//                    [ [(          ) ] ]&lt;br /&gt;
					text = text.replace(/\[\[([^\[\]\|]*)\]\]/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
					// start with first letter&lt;br /&gt;
					var regExp = new RegExp(&#039;^[^&#039; + wikEd.letters + &#039;_0-9]+&#039;, &#039;g&#039;);&lt;br /&gt;
					text = text.replace(regExp, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
					// sort numerically by adding preceeding 0s to numbers&lt;br /&gt;
					text = text.replace(/0*(\d+)(\.\d*)?/g,&lt;br /&gt;
						function(p, p1, p2) {&lt;br /&gt;
							return &#039;000000000000000&#039;.substr(p1.length) + p1 + p2;&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
&lt;br /&gt;
					// case insensitive&lt;br /&gt;
					text = text.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
					return text;&lt;br /&gt;
				};&lt;br /&gt;
&lt;br /&gt;
				// SplitSortJoin(): sort list items in one line&lt;br /&gt;
				var SplitSortJoin = function (regExp, text) {&lt;br /&gt;
&lt;br /&gt;
					var sorted = null;&lt;br /&gt;
&lt;br /&gt;
					// split text into array of element / separator pairs&lt;br /&gt;
					var array = [];&lt;br /&gt;
					var regExpMatch;&lt;br /&gt;
					var lastMatch = 0;&lt;br /&gt;
					while ( (regExpMatch = regExp.exec(text)) !== null) {&lt;br /&gt;
						var element = text.substring(lastMatch, regExpMatch.index);&lt;br /&gt;
						var separator = regExpMatch[0];&lt;br /&gt;
						array.push([element, separator, Normalize(element)]);&lt;br /&gt;
						lastMatch = regExp.lastIndex;&lt;br /&gt;
					}&lt;br /&gt;
					if (array.length &amp;gt; 0) {&lt;br /&gt;
						var element = text.substring(lastMatch);&lt;br /&gt;
						if (element !== &#039;&#039;) {&lt;br /&gt;
							array.push([element, &#039;&#039;, Normalize(element)]);&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// sort array after normalized elements&lt;br /&gt;
						array.sort(function(a, b) {&lt;br /&gt;
							if (a[2] &amp;gt; b[2]) {&lt;br /&gt;
								return 1;&lt;br /&gt;
							}&lt;br /&gt;
							if (a[2] &amp;lt; b[2]) {&lt;br /&gt;
								return -1;&lt;br /&gt;
							}&lt;br /&gt;
							return 0;&lt;br /&gt;
						});&lt;br /&gt;
&lt;br /&gt;
						// join, keep separator next to element if possible, otherwise use last separator&lt;br /&gt;
						sorted = &#039;&#039;;&lt;br /&gt;
						for (var i = 0; i &amp;lt; array.length; i ++) {&lt;br /&gt;
							if ( (array[i][1] === &#039;&#039;) &amp;amp;&amp;amp; (i &amp;lt; array.length - 1) ) {&lt;br /&gt;
								array[i][1] = array[array.length - 1][1];&lt;br /&gt;
								array[array.length - 1][1] = &#039;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							sorted += array[i][0] + array[i][1];&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					return sorted;&lt;br /&gt;
				};&lt;br /&gt;
&lt;br /&gt;
				// extract sortable text&lt;br /&gt;
				var pre = &#039;&#039;;&lt;br /&gt;
				var sortable = obj.changed.plain;&lt;br /&gt;
				var post = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
				//                  123          3      4   4 2  15   56     6&lt;br /&gt;
				var regExpMatch = /^(((\|[\w ]+\=)|\||!|(:*;)+) *)(.*?)( *\n*)$/.exec(obj.changed.plain);&lt;br /&gt;
				if (regExpMatch !== null) {&lt;br /&gt;
					pre = regExpMatch[1];&lt;br /&gt;
					sortable = regExpMatch[5];&lt;br /&gt;
					post = regExpMatch[6];&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// sortable text enclosed in html&lt;br /&gt;
				var regExpMatch = /^(&amp;lt;[^&amp;gt;]&amp;gt;+)(.*?)(&amp;lt;\/[^&amp;gt;]&amp;gt;+)$/.exec(sortable);&lt;br /&gt;
				if (regExpMatch !== null) {&lt;br /&gt;
					pre = pre + regExpMatch[1];&lt;br /&gt;
					sortable = regExpMatch[2];&lt;br /&gt;
					post = regExpMatch[3] + post;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// table cells&lt;br /&gt;
				var sorted = SplitSortJoin(/ *((\||!){2,2}) *()/g, sortable);&lt;br /&gt;
				if ( (sorted === null) || (/^(\|{1,1}|!{1,1})/.test(pre) === false) ) {&lt;br /&gt;
&lt;br /&gt;
					// bullets, dots, dashes, \|/:-,; in spaces&lt;br /&gt;
					sorted = SplitSortJoin(/((&amp;amp;amp;nbsp;| )+((\\|\||\/|:|-|,|;)+)(&amp;amp;amp;nbsp;| )+|(&amp;amp;amp;nbsp;| )*(•|&amp;amp;bull;|&amp;amp;#x2022;|&amp;amp;#8226;|·|&amp;amp;middot;|&amp;amp;#0*xb7;|&amp;amp;#0*183;|–|&amp;amp;ndash;|&amp;amp;#x2013;|&amp;amp;#8211;|—|&amp;amp;mdash;|&amp;amp;#x2015;|&amp;amp;#8213;)(&amp;amp;amp;nbsp;| )*)()/gi, sortable);&lt;br /&gt;
					if (sorted === null) {&lt;br /&gt;
&lt;br /&gt;
						// ,;:&lt;br /&gt;
						sorted = SplitSortJoin(/(&amp;amp;amp;nbsp;| )*(,|;|:)(&amp;amp;amp;nbsp;| )+/g, sortable);&lt;br /&gt;
						if (sorted === null) {&lt;br /&gt;
&lt;br /&gt;
							// multiple spaces with &amp;amp;nbsp;&lt;br /&gt;
							sorted = SplitSortJoin(/( +&amp;amp;amp;nbsp;|&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;|&amp;amp;amp;nbsp; )(&amp;amp;amp;nbsp;| )*()/g, sortable);&lt;br /&gt;
&lt;br /&gt;
							// simple spaces&lt;br /&gt;
							if (sorted === null) {&lt;br /&gt;
								sorted = SplitSortJoin(/ +/g, sortable);&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// join pre, sorted, and post&lt;br /&gt;
				if (sorted !== null) {&lt;br /&gt;
					sorted = sorted.replace(/ {2,}/, &#039; &#039;);&lt;br /&gt;
					sorted = sorted.replace(/ +$/, &#039;&#039;);&lt;br /&gt;
					post = post.replace(/ +(\n*|$)/, &#039;$1&#039;);&lt;br /&gt;
					obj.changed.plain = pre + sorted + post;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// keep leading and trailing empty lines and table syntax&lt;br /&gt;
			var pre = &#039;&#039;;&lt;br /&gt;
			var main = &#039;&#039;;&lt;br /&gt;
			var post = &#039;&#039;;&lt;br /&gt;
			var regExpMatch = /^(((\{\|.*|!.*|\|\+.*|\|\-.*|)\n)*)((.|\n)*?)(((\|\}.*|\|\-.*|)\n)*)$/.exec(obj.changed.plain);&lt;br /&gt;
			if (regExpMatch !== null) {&lt;br /&gt;
				pre = regExpMatch[1];&lt;br /&gt;
				main = regExpMatch[4];&lt;br /&gt;
				post = regExpMatch[6];&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				main = obj.changed.plain;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// join cells in table rows&lt;br /&gt;
			main = main.replace(/(^|\n)(\|[^\-\+\}](.|\n)*?(?=(\|\-|\{\||\|\}|$)|$))/g,&lt;br /&gt;
				function(p, p1, p2, p3) {&lt;br /&gt;
					p2 = p2.replace(/\n/g, &#039;\x00&#039;);&lt;br /&gt;
					return p1 + p2;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			// cycle through lines&lt;br /&gt;
			var lines = main.split(&#039;\n&#039;);&lt;br /&gt;
			var sortArray = [];&lt;br /&gt;
			for (var i = 0; i &amp;lt; lines.length; i ++) {&lt;br /&gt;
				var line = lines[i];&lt;br /&gt;
				var sortKey = line;&lt;br /&gt;
&lt;br /&gt;
				// remove empty lines&lt;br /&gt;
				if (line === &#039;&#039;) {&lt;br /&gt;
					continue;&lt;br /&gt;
				}&lt;br /&gt;
				sortKey = sortKey.replace(/\x00/g, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
				// remove html&lt;br /&gt;
				sortKey = sortKey.replace(/&amp;amp;lt;.*&amp;amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
				// lowercase&lt;br /&gt;
				sortKey = sortKey.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
				// keep visible text of wikilinks only&lt;br /&gt;
				sortKey = sortKey.replace(/\[\[[^\|\[\]]*\|/g, &#039;&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/\[\[|\]\]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
				// keep visible text of external links only&lt;br /&gt;
				sortKey = sortKey.replace(/\[(https?:|ftp:|irc:|gopher:)\/\/\S+/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
				// keep visible cell content only&lt;br /&gt;
				sortKey = sortKey.replace(/((^|\n)(\||\!))(?![\+\-\}\|\!])[^\|\!]*(\||\!)(?!\4)/g, &#039;$1&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/(^|\n)\|-.*?(\n|$)/g, &#039;$2&#039;);&lt;br /&gt;
&lt;br /&gt;
				// keep single &#039; only&lt;br /&gt;
				sortKey = sortKey.replace(/&#039;{2,}/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
				// remove decimal commas&lt;br /&gt;
				sortKey = sortKey.replace(/(\d)\,(?=\d\d\d(\D|$))/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
				// sort numerically by adding preceeding 0s to numbers&lt;br /&gt;
				sortKey = sortKey.replace(/0*(\d+)(\.\d*)?/g,&lt;br /&gt;
					function(p, p1, p2) {&lt;br /&gt;
						return &#039;000000000000000&#039;.substr(p1.length) + p1 + p2;&lt;br /&gt;
					}&lt;br /&gt;
				);&lt;br /&gt;
&lt;br /&gt;
				// non-breaking and other spaces&lt;br /&gt;
				sortKey = sortKey.replace(/&amp;amp;nbsp;|\s/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
				// remove umlauts (just guessing, but probably better than not doing it)&lt;br /&gt;
				sortKey = sortKey.replace(/[à-æ]/g, &#039;a&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ç]/g, &#039;c&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ð]/g, &#039;d&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[è-ë]/g, &#039;e&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ì-ï]/g, &#039;i&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ñ]/g, &#039;n&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ò-öø]/g, &#039;o&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ß]/g, &#039;ss&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ù-ü]/g, &#039;u&#039;);&lt;br /&gt;
				sortKey = sortKey.replace(/[ýÿ]/g, &#039;y&#039;);&lt;br /&gt;
&lt;br /&gt;
				// remove non-chars&lt;br /&gt;
				sortKey = sortKey.replace(/[^$@.,:;\-\w\s&#039;\u007f-\uffff]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
				// join multiple spaces&lt;br /&gt;
				sortKey = sortKey.replace(/ +/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
				// remove leading and trailing spaces&lt;br /&gt;
				sortKey = sortKey.replace(/^ +| +$/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
				sortArray.push( [line, sortKey] );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// sort lines&lt;br /&gt;
			sortArray = sortArray.sort(&lt;br /&gt;
				function(a, b) {&lt;br /&gt;
					if (a[1] &amp;gt; b[1]) {&lt;br /&gt;
						return 1;&lt;br /&gt;
					}&lt;br /&gt;
					if (a[1] &amp;lt; b[1]) {&lt;br /&gt;
						return -1;&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						return 0;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			// join lines&lt;br /&gt;
			var joined = &#039;&#039;;&lt;br /&gt;
			for (var i = 0; i &amp;lt; sortArray.length; i ++) {&lt;br /&gt;
				joined += sortArray[i][0];&lt;br /&gt;
				if (i &amp;lt; sortArray.length - 1) {&lt;br /&gt;
					joined += &#039;\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			joined = joined.replace(/\x00/g, &#039;\n&#039;);&lt;br /&gt;
			obj.changed.plain = pre + joined + post;&lt;br /&gt;
&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// undo all&lt;br /&gt;
		case &#039;wikEdUndoAll&#039;:&lt;br /&gt;
			if (wikEd.lastVersion === null) {&lt;br /&gt;
				wikEd.lastVersion = obj.changed.plain;&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.plain = wikEd.origVersion;&lt;br /&gt;
			obj.changed.plain = wikEd.EscapeHtml(obj.changed.plain);&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// redo all&lt;br /&gt;
		case &#039;wikEdRedoAll&#039;:&lt;br /&gt;
			if (wikEd.lastVersion !== null) {&lt;br /&gt;
				obj.changed.plain = wikEd.lastVersion;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// create wikilink&lt;br /&gt;
		case &#039;wikEdWikiLink&#039;:&lt;br /&gt;
			if ( /\[\[((.|\n)*?)\]\]/.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/\[\[(.*?)\|\s*(.*?)\s*\]\]/g, &#039;$2&#039;);&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/\[\[((.|\n)*?)\]\]/g, &#039;$1&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;[[&#039; + obj.changed.plain + &#039;]]&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(\[\[)(\s*)((.|\n)*?)(\s*)(\]\])$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// create weblink&lt;br /&gt;
		case &#039;wikEdWebLink&#039;:&lt;br /&gt;
			if ( /\[((.|\n)*?)\]/.test(obj.changed.plain) ) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/\[((.|\n)*?)\]/g, &#039;$1&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;[&#039; + obj.changed.plain + &#039;]&#039;;&lt;br /&gt;
				if (emptyOrSpaces === false) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^(\[)(\s*)((.|\n)*?)(\s*)(\])$/, &#039;$2$1$3$6$5&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// decrease heading level&lt;br /&gt;
		case &#039;wikEdDecreaseHeading&#039;:&lt;br /&gt;
&lt;br /&gt;
			// decrease heading&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(^|\n)=(=+) *(.*?) *=+(?=\n|$)/g, &#039;$1$2 $3 $2&#039;);&lt;br /&gt;
&lt;br /&gt;
			// remove heading&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(^|\n)=(?!=) *(.*?) *=+(?=\n|$)/g, &#039;$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
			// adjust closing tags&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *(.*?) *=+(?=\n|$)/g, &#039;$1$2 $3 $2&#039;);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// increase heading level&lt;br /&gt;
		case &#039;wikEdIncreaseHeading&#039;:&lt;br /&gt;
&lt;br /&gt;
			// increase heading&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *(.*?) *=+(?=\n|$)/g, &#039;$1=$2 $3 $2=&#039;);&lt;br /&gt;
&lt;br /&gt;
			// create new heading&lt;br /&gt;
			if (/\n/.test(obj.changed.plain) === false) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/(^|\n)([^=\s].*?)(?=\n|$)/g, &#039;$1== $2 ==&#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// adjust closing tags&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *(.*?) *=+(?=\n|$)/g, &#039;$1$2 $3 $2&#039;);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// increase bullet list&lt;br /&gt;
		case &#039;wikEdIncreaseBulletList&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(.+)/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					p1 = p1.replace(/^ *([*#:;]*) *()/g, &#039;*$1 &#039;);&lt;br /&gt;
					return p1;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// decrease bullet list&lt;br /&gt;
		case &#039;wikEdDecreaseBulletList&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(.+)/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					p1 = p1.replace(/^[*#:;] *()/g, &#039;&#039;);&lt;br /&gt;
					return p1;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// increase numbered list&lt;br /&gt;
		case &#039;wikEdIncreaseNumberList&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(.+)/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					p1 = p1.replace(/^ *([*#:;]*) *()/g, &#039;#$1 &#039;);&lt;br /&gt;
					return p1;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// decrease numbered list&lt;br /&gt;
		case &#039;wikEdDecreaseNumberList&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(.+)/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					p1 = p1.replace(/^[*#:;] *()/g, &#039;&#039;);&lt;br /&gt;
					return p1;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// increase indented list&lt;br /&gt;
		case &#039;wikEdIncreaseIndentList&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(.+)/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					p1 = p1.replace(/^ *([*#:;]*) *()/g, &#039;:$1 &#039;);&lt;br /&gt;
					return p1;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// decrease indented list&lt;br /&gt;
		case &#039;wikEdDecreaseIndentList&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(.+)/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					p1 = p1.replace(/^[*#:;] *()/g, &#039;&#039;);&lt;br /&gt;
					return p1;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// create definition list&lt;br /&gt;
		case &#039;wikEdDefinitionList&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(.+)/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					p1 = p1.replace(/^ *([^\s;]+) *()/g, &#039;; $1 : &#039;);&lt;br /&gt;
					return p1;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// create image&lt;br /&gt;
		case &#039;wikEdImage&#039;:&lt;br /&gt;
			if (obj.changed.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed.plain = &#039;[[Image:&amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;image filename&#039;] + &#039;&amp;lt;/span&amp;gt;|thumb|&amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;image width&#039;] + &#039;&amp;lt;/span&amp;gt;px|&#039; + obj.changed.plain + &#039;]]&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;[[Image:&amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;image filename&#039;] + &#039;&amp;lt;/span&amp;gt;|thumb|&amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;image width&#039;] + &#039;&amp;lt;/span&amp;gt;px|&amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;]]&#039;;&lt;br /&gt;
				if (obj.focusWord !== undefined) {&lt;br /&gt;
					if (obj.focusWord.plain !== &#039;&#039;) {&lt;br /&gt;
						obj.changed.plain = &#039; &#039; + obj.changed.plain + &#039; &#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// create table&lt;br /&gt;
		case &#039;wikEdTable&#039;:&lt;br /&gt;
			if (obj.changed.plain !== &#039;&#039;) {&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/(^|\n) *()/g, &#039;\n|-\n| &#039;);&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/^\n\|\-\n/, &#039;\n{| class=&amp;quot;wikitable&amp;quot;\n&#039;);&lt;br /&gt;
				obj.changed.plain = obj.changed.plain.replace(/$/g, &#039;\n|}\n&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = &#039;\n{| class=&amp;quot;wikitable&amp;quot;\n|+ &amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;table caption&#039;] + &#039;&amp;lt;/span&amp;gt;\n! &amp;lt;span class=&amp;quot;wikEdinserthere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;table heading&#039;] + &#039;&amp;lt;/span&amp;gt; !! &amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;table heading&#039;] + &#039;&amp;lt;/span&amp;gt;\n|-\n| &amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;table cell&#039;] + &#039;&amp;lt;/span&amp;gt; || &amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;table cell&#039;] + &#039;&amp;lt;/span&amp;gt;\n|-\n| &amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;table cell&#039;] + &#039;&amp;lt;/span&amp;gt; || &amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;table cell&#039;] + &#039;&amp;lt;/span&amp;gt;\n|}\n&#039;;&lt;br /&gt;
				if (obj.focusLine.plain !== &#039;&#039;) {&lt;br /&gt;
					obj.changed.plain = &#039;\n&#039; + obj.changed.plain + &#039;\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// wikify pasted&lt;br /&gt;
		case &#039;wikEdPastedWikify&#039;:&lt;br /&gt;
&lt;br /&gt;
			// wikify already pasted content&lt;br /&gt;
			if ( (wikEd.paste === null) || (wikEd.paste.polling === true) ) {&lt;br /&gt;
				wikEd.PastedOff();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// reselect pasted&lt;br /&gt;
			obj.sel.removeAllRanges();&lt;br /&gt;
			obj.sel.addRange(wikEd.paste.range);&lt;br /&gt;
&lt;br /&gt;
			obj = {};&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection&#039;, false);&lt;br /&gt;
			obj.changed = obj.selection;&lt;br /&gt;
			obj.changed.plain = wikEd.paste.wikified;&lt;br /&gt;
			wikEd.paste.last = &#039;wikify&#039;;&lt;br /&gt;
			wikEd.PastedSwitch();&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// textify during pasting&lt;br /&gt;
		case &#039;wikEdPasting&#039;:&lt;br /&gt;
			if ( (wikEd.paste === null) || (wikEd.paste.polling === true) ) {&lt;br /&gt;
				wikEd.PastedOff();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// move content before br after paste at end of line, part 1&lt;br /&gt;
			if (wikEd.paste.pasteAtEndOfLine === true) {&lt;br /&gt;
				if (wikEd.paste.blockStart === true) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(/^\n/, &#039;&#039;);&lt;br /&gt;
					obj.changed.html = obj.changed.html.replace(/^&amp;lt;br\b[^&amp;gt;]*&amp;gt;/, &#039;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// textify, not changing obj.html&lt;br /&gt;
			wikEd.Textify(obj.changed);&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
			wikEd.paste.last = &#039;textify&#039;;&lt;br /&gt;
&lt;br /&gt;
			// wikify, not changing obj.plain&lt;br /&gt;
			wikEd.RemoveEmbracingTags(obj.changed);&lt;br /&gt;
			wikEd.WikifyHTML(obj.changed, false);&lt;br /&gt;
			obj.changed.html = obj.changed.html.replace(/\s*&amp;lt;br\b[^&amp;gt;]*&amp;gt;\s*/g, &#039;\n&#039;);&lt;br /&gt;
			obj.changed.html = obj.changed.html.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
			// move content before br after paste at end of line, part 2&lt;br /&gt;
			if (wikEd.paste.pasteAtEndOfLine === true) {&lt;br /&gt;
				if (wikEd.paste.blockEnd === true) {&lt;br /&gt;
					obj.changed.plain += &#039;\n&#039;;&lt;br /&gt;
					obj.changed.html += &#039;\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// save textified and wikified for switching&lt;br /&gt;
			wikEd.paste.textified = obj.changed.plain;&lt;br /&gt;
			wikEd.paste.wikified = obj.changed.html;&lt;br /&gt;
&lt;br /&gt;
			// no textify/wikify option when pasting plain text&lt;br /&gt;
			if (wikEd.paste.textified == wikEd.paste.wikified) {&lt;br /&gt;
				wikEd.PastedOff();&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.keepSel = true;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// textify pasted: strip html from recently pasted content&lt;br /&gt;
		case &#039;wikEdPastedTextify&#039;:&lt;br /&gt;
			if ( (wikEd.paste === null) || (wikEd.paste.polling === true) ) {&lt;br /&gt;
				wikEd.PastedOff();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// reselect pasted&lt;br /&gt;
			obj.sel.removeAllRanges();&lt;br /&gt;
			obj.sel.addRange(wikEd.paste.range);&lt;br /&gt;
&lt;br /&gt;
			obj = {};&lt;br /&gt;
			wikEd.GetText(obj, &#039;selection&#039;, false);&lt;br /&gt;
			obj.changed = obj.selection;&lt;br /&gt;
			obj.changed.plain = wikEd.paste.textified;&lt;br /&gt;
			wikEd.paste.last = &#039;textify&#039;;&lt;br /&gt;
			wikEd.PastedSwitch();&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// wikify&lt;br /&gt;
		case &#039;wikEdWikify&#039;:&lt;br /&gt;
&lt;br /&gt;
			// wikify already done in wikEd.GetText()&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// textify: strip html from pasted content&lt;br /&gt;
		case &#039;wikEdTextify&#039;:&lt;br /&gt;
			wikEd.Textify(obj.changed);&lt;br /&gt;
			if (parameters == &#039;shift&#039;) {&lt;br /&gt;
				highlightNoTimeOut = true;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// redirect&lt;br /&gt;
		case &#039;wikEdRedirect&#039;:&lt;br /&gt;
			var linkTarget;&lt;br /&gt;
			if (obj.selection.plain !== &#039;&#039;) {&lt;br /&gt;
				linkTarget = obj.selection.plain;&lt;br /&gt;
			}&lt;br /&gt;
			else if (obj.selectionWord.plain !== &#039;&#039;) {&lt;br /&gt;
				linkTarget = obj.selectionWord.plain;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				linkTarget = &#039;&amp;lt;span class=&amp;quot;wikEdInsertHere&amp;quot;&amp;gt;&#039; + wikEd.config.text[&#039;redirect article link&#039;] + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// remove link text after |&lt;br /&gt;
			linkTarget = linkTarget.replace(/\|(.|\n)*()/, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
			// remove formatting and spaces&lt;br /&gt;
			linkTarget = linkTarget.replace(/^(=+|&#039;+|&amp;lt;[^&amp;gt;]*&amp;gt;|\s+|\[)+((.|\n)*?)(=+|&#039;+|&amp;lt;[^&amp;gt;]*&amp;gt;|\s+|\])+$/g, &#039;$2&#039;);&lt;br /&gt;
			linkTarget = linkTarget.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
			linkTarget = linkTarget.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
			linkTarget = linkTarget.replace(/\s+/g, &#039; &#039;);&lt;br /&gt;
			linkTarget = linkTarget.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
			obj.changed.plain = &#039;#REDIRECT [[&#039; + linkTarget + &#039;]]&#039;;&lt;br /&gt;
&lt;br /&gt;
			// append to summary&lt;br /&gt;
			if (wikEd.wikiGlobals.wgUseAutomaticEditSummaries !== true) {&lt;br /&gt;
				if (wikEd.inputElement.summary !== undefined) {&lt;br /&gt;
					if ( (obj.selection.plain !== &#039;&#039;) || (obj.selectionWord.plain !== &#039;&#039;) ) {&lt;br /&gt;
						wikEd.inputElement.summary.value = wikEd.inputElement.summary.value.replace(/#REDIRECT( \[\[[^\]]*\]\])?(, *)?/g, &#039;&#039;);&lt;br /&gt;
						wikEd.inputElement.summary.value = wikEd.AppendToSummary(wikEd.inputElement.summary.value, &#039;#REDIRECT [[&#039; + linkTarget + &#039;]]&#039;);&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						wikEd.inputElement.summary.value = wikEd.AppendToSummary(wikEd.inputElement.summary.value, &#039;#REDIRECT&#039;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			selectChanged = false;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// find and replace&lt;br /&gt;
		case &#039;wikEdFindPrev&#039;:&lt;br /&gt;
		case &#039;wikEdFindNext&#039;:&lt;br /&gt;
		case &#039;wikEdJumpPrev&#039;:&lt;br /&gt;
		case &#039;wikEdJumpNext&#039;:&lt;br /&gt;
		case &#039;wikEdReplacePrev&#039;:&lt;br /&gt;
		case &#039;wikEdReplaceNext&#039;:&lt;br /&gt;
		case &#039;wikEdFindAll&#039;:&lt;br /&gt;
		case &#039;wikEdReplaceAll&#039;:&lt;br /&gt;
&lt;br /&gt;
			// get the find text&lt;br /&gt;
			var findText;&lt;br /&gt;
&lt;br /&gt;
			// unescape &amp;lt;, &amp;gt;, and &amp;amp;&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
			// copy selection/word under cursor to find field&lt;br /&gt;
			if ( (parameters == &#039;shift&#039;) &amp;amp;&amp;amp; ( (buttonId == &#039;wikEdFindNext&#039;) || (buttonId == &#039;wikEdReplaceNext&#039;) ) ) {&lt;br /&gt;
				if (/\n/.test(obj.changed.plain) === false) {&lt;br /&gt;
					if (buttonId == &#039;wikEdFindNext&#039;) {&lt;br /&gt;
						wikEd.inputElement.find.value = obj.changed.plain;&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						wikEd.inputElement.replace.value = obj.changed.plain;&lt;br /&gt;
					}&lt;br /&gt;
					obj.changed.keepSel = true;&lt;br /&gt;
					obj.changed.plain = null;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// get the find text from the selection&lt;br /&gt;
			if ( (buttonId == &#039;wikEdJumpPrev&#039;) || (buttonId == &#039;wikEdJumpNext&#039;) ) {&lt;br /&gt;
				findText = obj.changed.plain;&lt;br /&gt;
				if (obj.selection.plain === &#039;&#039;) {&lt;br /&gt;
					obj.changed.keepSel = true;&lt;br /&gt;
					obj.changed.plain = null;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// get the find text from the find field&lt;br /&gt;
			else {&lt;br /&gt;
				if (wikEd.inputElement.find.value !== &#039;&#039;) {&lt;br /&gt;
					findText = wikEd.inputElement.find.value.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed.plain = null;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// get button status&lt;br /&gt;
			var regExpChecked = wikEd.regExp.getAttribute(&#039;checked&#039;);&lt;br /&gt;
			var caseSensitiveChecked = wikEd.caseSensitive.getAttribute(&#039;checked&#039;);&lt;br /&gt;
&lt;br /&gt;
			// get case sensitive setting&lt;br /&gt;
			var caseSensitive = false;&lt;br /&gt;
			if (caseSensitiveChecked == &#039;true&#039;) {&lt;br /&gt;
				caseSensitive = true;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// get the replace text&lt;br /&gt;
			var replaceText = wikEd.inputElement.replace.value.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
			// format the find and replace texts for a plain text search&lt;br /&gt;
			var useRegExp = true;&lt;br /&gt;
			if ( (regExpChecked == &#039;false&#039;) || (buttonId == &#039;wikEdJumpPrev&#039;) || (buttonId == &#039;wikEdJumpNext&#039;) ) {&lt;br /&gt;
				useRegExp = false;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// format the replace text for a regular expression search&lt;br /&gt;
			if ( (buttonId == &#039;wikEdReplacePrev&#039;) || (buttonId == &#039;wikEdReplaceNext&#039;) || (buttonId == &#039;wikEdReplaceAll&#039;) ) {&lt;br /&gt;
				if (useRegExp === true) {&lt;br /&gt;
&lt;br /&gt;
					// substitute \\ \n \r \t \&#039; \&amp;quot; \127 \x1f \u12ef&lt;br /&gt;
					replaceText = replaceText.replace(/\\\\/g, &#039;\x00&#039;);&lt;br /&gt;
					replaceText = replaceText.replace(/\\n/g, &#039;\n&#039;);&lt;br /&gt;
					replaceText = replaceText.replace(/\\r/g, &#039;\r&#039;);&lt;br /&gt;
					replaceText = replaceText.replace(/\\t/g, &#039;\t&#039;);&lt;br /&gt;
					replaceText = replaceText.replace(/\\&#039;/g, &#039;\&#039;&#039;);&lt;br /&gt;
					replaceText = replaceText.replace(/\\&amp;quot;/g, &#039;\&amp;quot;&#039;);&lt;br /&gt;
&lt;br /&gt;
					replaceText = replaceText.replace(/\\([0-7]{3})/g,&lt;br /&gt;
						function(p, p1) {&lt;br /&gt;
							return String.fromCharCode(parseInt(p1, 8));&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
					replaceText = replaceText.replace(/\\x([0-9a-fA-F]{2})/g,&lt;br /&gt;
						function(p, p1) {&lt;br /&gt;
							return String.fromCharCode(parseInt(p1, 16));&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
					replaceText = replaceText.replace(/\\u([0-9a-fA-F]{4})/g,&lt;br /&gt;
						function(p, p1) {&lt;br /&gt;
							return String.fromCharCode(parseInt(p1, 16));&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
					replaceText = replaceText.replace(/\x00/g, &#039;\\&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// check the regexp&lt;br /&gt;
			var replacedFlag = false;&lt;br /&gt;
			var regExpFind;&lt;br /&gt;
			if (&lt;br /&gt;
				(buttonId == &#039;wikEdReplacePrev&#039;) || (buttonId == &#039;wikEdReplaceNext&#039;) || (buttonId == &#039;wikEdReplaceAll&#039;) ||&lt;br /&gt;
				(buttonId == &#039;wikEdFindPrev&#039;) || (buttonId == &#039;wikEdFindNext&#039;) || (buttonId == &#039;wikEdFindAll&#039;)&lt;br /&gt;
			) {&lt;br /&gt;
				var regExpFindText = findText;&lt;br /&gt;
				if (useRegExp !== true){&lt;br /&gt;
					regExpFindText = regExpFindText.replace(/([\\^$*+?.()\[\]{}:=!|,\-])/g, &#039;\\$1&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				var regExpFlags = &#039;gm&#039;;&lt;br /&gt;
				if (caseSensitive !== true) {&lt;br /&gt;
					regExpFlags += &#039;i&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				try {&lt;br /&gt;
					regExpFind = new RegExp(regExpFindText, regExpFlags);&lt;br /&gt;
				}&lt;br /&gt;
				catch (exception) {&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// replace all&lt;br /&gt;
			if (buttonId == &#039;wikEdReplaceAll&#039;) {&lt;br /&gt;
				if (regExpFind.test(obj.changed.plain)) {&lt;br /&gt;
					obj.changed.plain = obj.changed.plain.replace(regExpFind, replaceText);&lt;br /&gt;
					replacedFlag = true;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed.plain = null;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// replace an existing selection&lt;br /&gt;
			else if ( (buttonId == &#039;wikEdReplacePrev&#039;) || (buttonId == &#039;wikEdReplaceNext&#039;) ) {&lt;br /&gt;
				if (regExpFind.test(obj.selection.plain)) {&lt;br /&gt;
&lt;br /&gt;
					var replaced = obj.selection.plain.replace(regExpFind, replaceText);&lt;br /&gt;
					if (obj.changed.plain != replaced) {&lt;br /&gt;
						obj.changed.plain = replaced;&lt;br /&gt;
						replacedFlag = true;&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						obj.changed.plain = null;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.changed.plain = null;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			else if (&lt;br /&gt;
				(buttonId == &#039;wikEdFindPrev&#039;) || (buttonId == &#039;wikEdFindNext&#039;) ||&lt;br /&gt;
				(buttonId == &#039;wikEdJumpPrev&#039;) || (buttonId == &#039;wikEdJumpNext&#039;)&lt;br /&gt;
			) {&lt;br /&gt;
				obj.changed.plain = null;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if (&lt;br /&gt;
				(buttonId == &#039;wikEdFindPrev&#039;) || (buttonId == &#039;wikEdFindNext&#039;) ||&lt;br /&gt;
				(buttonId == &#039;wikEdJumpPrev&#039;) || (buttonId == &#039;wikEdJumpNext&#039;) ||&lt;br /&gt;
				(buttonId == &#039;wikEdReplacePrev&#039;) || (buttonId == &#039;wikEdReplaceNext&#039;) ||&lt;br /&gt;
				(buttonId == &#039;wikEdFindAll&#039;)&lt;br /&gt;
			) {&lt;br /&gt;
				if (replacedFlag === false) {&lt;br /&gt;
&lt;br /&gt;
					// get direction&lt;br /&gt;
					var backwards = false;&lt;br /&gt;
					if ( (buttonId == &#039;wikEdFindPrev&#039;) || (buttonId == &#039;wikEdJumpPrev&#039;) || (buttonId == &#039;wikEdReplacePrev&#039;) ) {&lt;br /&gt;
						backwards = true;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// find all&lt;br /&gt;
					if (buttonId == &#039;wikEdFindAll&#039;) {&lt;br /&gt;
						var found;&lt;br /&gt;
						var foundRanges = [];&lt;br /&gt;
&lt;br /&gt;
						// start at top of text&lt;br /&gt;
						obj.sel.removeAllRanges();&lt;br /&gt;
						var range = wikEd.frameDocument.createRange();&lt;br /&gt;
						if (wikEd.frameBody.firstChild !== null) {&lt;br /&gt;
							range.setStartBefore(wikEd.frameBody.firstChild);&lt;br /&gt;
						}&lt;br /&gt;
						range.collapse(true);&lt;br /&gt;
						range = obj.sel.addRange(range);&lt;br /&gt;
&lt;br /&gt;
						// cycle through matches&lt;br /&gt;
						var scrollTop = wikEd.frameBody.scrollTop;&lt;br /&gt;
						do {&lt;br /&gt;
&lt;br /&gt;
							// wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)&lt;br /&gt;
							found = wikEd.Find(obj, findText, caseSensitive, false, false, useRegExp);&lt;br /&gt;
							if (found === true) {&lt;br /&gt;
								foundRanges.push(obj.changed.range.cloneRange());&lt;br /&gt;
							}&lt;br /&gt;
						} while (found === true);&lt;br /&gt;
&lt;br /&gt;
						// scroll back&lt;br /&gt;
						if (regExpChecked == &#039;false&#039;) {&lt;br /&gt;
							wikEd.frameBody.scrollTop = scrollTop;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// add the found ranges, Webkit does not support multiple selections&lt;br /&gt;
						obj.sel.removeAllRanges();&lt;br /&gt;
						for (var i = 0; i &amp;lt; foundRanges.length; i ++) {&lt;br /&gt;
							obj.sel.addRange(foundRanges[i]);&lt;br /&gt;
						}&lt;br /&gt;
						obj.changed.plain = null;&lt;br /&gt;
						selectChanged = false;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// normal find&lt;br /&gt;
					else {&lt;br /&gt;
						obj.selectChanged = selectChanged;&lt;br /&gt;
						wikEd.Find(obj, findText, caseSensitive, backwards, true, useRegExp);&lt;br /&gt;
						selectChanged = obj.selectChanged;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// escape &amp;lt;, &amp;gt;, and &amp;amp;&lt;br /&gt;
			if (obj.changed.plain !== null) {&lt;br /&gt;
				obj.changed.plain = wikEd.EscapeHtml(obj.changed.plain);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// save search history to settings&lt;br /&gt;
			if ( (buttonId == &#039;wikEdFindPrev&#039;) || (buttonId == &#039;wikEdFindNext&#039;) || (buttonId == &#039;wikEdFindAll&#039;) ) {&lt;br /&gt;
				wikEd.AddToHistory(&#039;find&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			if ( (buttonId == &#039;wikEdReplacePrev&#039;) || (buttonId == &#039;wikEdReplaceNext&#039;) || (buttonId == &#039;wikEdReplaceAll&#039;) ) {&lt;br /&gt;
				wikEd.AddToHistory(&#039;find&#039;);&lt;br /&gt;
				wikEd.AddToHistory(&#039;replace&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// fixbasic: fix characters, spaces, empty lines, certain headings, needed for all fixing functions&lt;br /&gt;
		// to do: only certain changes in multiline tags: comments, tables, subst&lt;br /&gt;
		case &#039;wikEdFixBasic&#039;:&lt;br /&gt;
			wikEd.FixBasic(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixPunct&#039;:&lt;br /&gt;
			wikEd.FixPunct(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixMath&#039;:&lt;br /&gt;
			wikEd.FixMath(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixChem&#039;:&lt;br /&gt;
			wikEd.FixChem(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixUnicode&#039;:&lt;br /&gt;
			wikEd.FixUnicode(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixRedirect&#039;:&lt;br /&gt;
			wikEd.LinkInfoCall(obj.changed, function (ajax) {&lt;br /&gt;
				wikEd.LinkInfoHandler(ajax);&lt;br /&gt;
				wikEd.EditButton(null, &#039;wikEdFixRedirectReplace&#039;);&lt;br /&gt;
			});&lt;br /&gt;
			return;&lt;br /&gt;
		case &#039;wikEdFixRedirectReplace&#039;:&lt;br /&gt;
			wikEd.FixRedirectReplace(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixUnits&#039;:&lt;br /&gt;
			wikEd.FixUnits(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixDashes&#039;:&lt;br /&gt;
			wikEd.FixDashes(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixHtml&#039;:&lt;br /&gt;
			wikEd.FixHTML(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixRegExTypo&#039;:&lt;br /&gt;
			if ( (wikEd.config.regExTypoFix === true) &amp;amp;&amp;amp; (wikEd.typoRulesFind.length &amp;gt; 0) ) {&lt;br /&gt;
				wikEd.FixTypos(obj.changed);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = null;&lt;br /&gt;
			}&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixCaps&#039;:&lt;br /&gt;
			wikEd.FixCaps(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikEdFixAll&#039;:&lt;br /&gt;
			wikEd.FixAll(obj.changed);&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// source on&lt;br /&gt;
		case &#039;wikEdSource&#039;:&lt;br /&gt;
			obj.changed.plain = obj.changed.code;&lt;br /&gt;
			obj.changed.plain = obj.changed.plain.replace(/(&amp;lt;(br|p)\b[^&amp;gt;]*&amp;gt;)/g, &#039;$1\n\n&#039;);&lt;br /&gt;
			obj.changed.plain = wikEd.EscapeHtml(obj.changed.plain);&lt;br /&gt;
			highlightSyntax = false;&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// insert tags&lt;br /&gt;
		case &#039;wikEdInsertTags&#039;:&lt;br /&gt;
			var tagOpen = parameters[0] || &#039;&#039;;&lt;br /&gt;
			var tagClose = parameters[1] || &#039;&#039;;&lt;br /&gt;
			var sampleText = parameters[2] || &#039;&#039;;&lt;br /&gt;
			tagOpen = wikEd.EscapeHtml(tagOpen);&lt;br /&gt;
			tagClose = wikEd.EscapeHtml(tagClose);&lt;br /&gt;
			sampleText = wikEd.EscapeHtml(sampleText);&lt;br /&gt;
&lt;br /&gt;
			// single string to insert&lt;br /&gt;
			if ( (tagOpen.length &amp;gt; 0) &amp;amp;&amp;amp; (tagClose.length === 0) &amp;amp;&amp;amp; (sampleText.length === 0) ) {&lt;br /&gt;
				obj.changed.plain = tagOpen;&lt;br /&gt;
			}&lt;br /&gt;
			else if ( (tagOpen.length === 0) &amp;amp;&amp;amp; (tagClose.length === 0) &amp;amp;&amp;amp; (sampleText.length &amp;gt; 0) ) {&lt;br /&gt;
				obj.changed.plain = sampleText;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// opening and closing strings&lt;br /&gt;
			else if ( (obj.changed.plain === &#039;&#039;) &amp;amp;&amp;amp; (sampleText.length &amp;gt; 0) ) {&lt;br /&gt;
				obj.changed.plain = tagOpen + sampleText + tagClose;&lt;br /&gt;
&lt;br /&gt;
				// select sample text&lt;br /&gt;
				selectChangedText = sampleText;&lt;br /&gt;
				obj.changed.keepSel = true;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				obj.changed.plain = tagOpen + obj.changed.plain + tagClose;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// update text view using current control button settings&lt;br /&gt;
		case &#039;wikEdUpdateAll&#039;:&lt;br /&gt;
			obj.changed.keepSel = true;&lt;br /&gt;
			if ( (parameters !== undefined) &amp;amp;&amp;amp; (parameters.keepSel === false) ) {&lt;br /&gt;
				obj.changed.keepSel = false;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		// custom edit functions&lt;br /&gt;
		default:&lt;br /&gt;
			if (CustomHandler !== undefined) {&lt;br /&gt;
				CustomHandler(obj);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				window.alert(&#039;Unknown edit function \&#039;&#039; + buttonId + &#039;\&#039;&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pause frame spellchecking&lt;br /&gt;
	var pauseFrameSpellchecking = false;&lt;br /&gt;
	var frameSpellchecking = wikEd.frameBody.spellcheck;&lt;br /&gt;
	if (frameSpellchecking === true) {&lt;br /&gt;
		var wholeLength = 0;&lt;br /&gt;
		var changedLength = 0;&lt;br /&gt;
		if (obj.whole !== undefined) {&lt;br /&gt;
			if (obj.whole.plain !== null) {&lt;br /&gt;
				wholeLength = obj.whole.plain.length;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if (obj.changed.plain !== null) {&lt;br /&gt;
			changedLength = obj.changed.plain.length;&lt;br /&gt;
		}&lt;br /&gt;
		if ( (changedLength &amp;gt; 10000) || (wholeLength &amp;gt; 10000) ) {&lt;br /&gt;
			pauseFrameSpellchecking = true;&lt;br /&gt;
			wikEd.frameBody.spellcheck = false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get the scroll position&lt;br /&gt;
	var frameScrollTop = wikEd.frameBody.scrollTop;&lt;br /&gt;
&lt;br /&gt;
	// update the selection ranges, do not add any text changes&lt;br /&gt;
	if (obj.changed.plain === null) {&lt;br /&gt;
		if (buttonId != &#039;wikEdFindAll&#039;) {&lt;br /&gt;
			obj.sel.removeAllRanges();&lt;br /&gt;
			obj.sel.addRange(obj.changed.range);&lt;br /&gt;
&lt;br /&gt;
			// scroll the selected text into the viewport&lt;br /&gt;
			if (selectChanged !== false) {&lt;br /&gt;
				wikEd.ScrollToSelection();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// apply text changes&lt;br /&gt;
	else {&lt;br /&gt;
&lt;br /&gt;
		// a text change erases the last version for redo all&lt;br /&gt;
		if ( (buttonId != &#039;wikEdUndo&#039;) &amp;amp;&amp;amp; (buttonId != &#039;wikEdRedo&#039;) &amp;amp;&amp;amp; (buttonId != &#039;wikEdUndoAll&#039;) ) {&lt;br /&gt;
			wikEd.lastVersion = null;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// highlight the syntax&lt;br /&gt;
		obj.html = obj.changed.plain;&lt;br /&gt;
		if (highlightSyntax === true) {&lt;br /&gt;
			if (obj.changed.from == &#039;whole&#039;) {&lt;br /&gt;
				obj.whole = true;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			wikEd.HighlightSyntax(obj, highlightNoTimeOut);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// at least highlight tab characters&lt;br /&gt;
		else {&lt;br /&gt;
			obj.html = obj.html.replace(/(\t)/g, &#039;&amp;lt;span class=&amp;quot;wikEdTabPlain&amp;quot;&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTabPlain--&amp;gt;&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// display multiple blanks as blank-&amp;amp;nbsp;&lt;br /&gt;
		obj.html = obj.html.replace(/(^|\n) /g, &#039;$1&amp;amp;nbsp;&#039;);&lt;br /&gt;
		obj.html = obj.html.replace(/ (\n|$)/g, &#039;&amp;amp;nbsp;$1&#039;);&lt;br /&gt;
		obj.html = obj.html.replace(/ {2}/g, &#039;&amp;amp;nbsp; &#039;);&lt;br /&gt;
		obj.html = obj.html.replace(/ {2}/g, &#039;&amp;amp;nbsp; &#039;);&lt;br /&gt;
&lt;br /&gt;
		// newlines to &amp;lt;br&amp;gt;&lt;br /&gt;
		obj.html = obj.html.replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
		// make changed range text the current selection&lt;br /&gt;
		obj.sel.removeAllRanges();&lt;br /&gt;
		var range = obj.changed.range;&lt;br /&gt;
&lt;br /&gt;
		obj.sel.addRange(range);&lt;br /&gt;
&lt;br /&gt;
		// replace the selection with changed text&lt;br /&gt;
		if ( (obj.changed.keepSel === false) &amp;amp;&amp;amp; (obj.html === &#039;&#039;) &amp;amp;&amp;amp; (obj.sel.isCollapsed === false) ) {&lt;br /&gt;
			wikEd.frameDocument.execCommand(&#039;delete&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		else if ( (obj.changed.keepSel === false) || (obj.changed.from == &#039;whole&#039;) ) {&lt;br /&gt;
&lt;br /&gt;
			// read only toggle highlight button&lt;br /&gt;
			if (wikEd.readOnly === true) {&lt;br /&gt;
				wikEd.frameBody.innerHTML = obj.html;&lt;br /&gt;
			}&lt;br /&gt;
			else if (obj.html !== &#039;&#039;) {&lt;br /&gt;
				wikEd.frameDocument.execCommand(&#039;inserthtml&#039;, false, obj.html);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// firefox workaround https://bugzilla.mozilla.org/show_bug.cgi?id=309731&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.frameDocument.execCommand(&#039;delete&#039;, false);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.insertCounter ++;&lt;br /&gt;
			var reselectBefore = &#039;&amp;lt;span class=&amp;quot;wikEdScrollBefore&amp;quot; id=&amp;quot;wikEdScrollBefore&#039; + wikEd.insertCounter + &#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
			var reselectAfter = &#039;&amp;lt;span class=&amp;quot;wikEdScrollAfter&amp;quot; id=&amp;quot;wikEdScrollAfter&#039; + wikEd.insertCounter + &#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
			wikEd.frameDocument.execCommand(&#039;inserthtml&#039;, false, reselectBefore + obj.html + reselectAfter);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// select the whole text after replacing the whole text and scroll to same height&lt;br /&gt;
		var range = null;&lt;br /&gt;
		if ( (obj.changed.from == &#039;whole&#039;) &amp;amp;&amp;amp; (wikEd.frameBody.firstChild !== null) ) {&lt;br /&gt;
			obj.sel.removeAllRanges();&lt;br /&gt;
			range = wikEd.frameDocument.createRange();&lt;br /&gt;
			range.setStartBefore(wikEd.frameBody.firstChild);&lt;br /&gt;
			range.setEndAfter(wikEd.frameBody.lastChild);&lt;br /&gt;
			obj.sel.addRange(range);&lt;br /&gt;
			selectChanged = false;&lt;br /&gt;
&lt;br /&gt;
			// scheduling needed for Firefox but not Chrome&lt;br /&gt;
			window.setTimeout( function () { wikEd.frameBody.scrollTop = frameScrollTop; }, 0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// select the changed text and scroll it into the viewport&lt;br /&gt;
		else if (selectChanged !== false) {&lt;br /&gt;
			obj.sel.removeAllRanges();&lt;br /&gt;
			range = wikEd.frameDocument.createRange();&lt;br /&gt;
			var startNodeReselect = wikEd.frameDocument.getElementById(&#039;wikEdScrollBefore&#039; + wikEd.insertCounter);&lt;br /&gt;
			var endNodeReselect = wikEd.frameDocument.getElementById(&#039;wikEdScrollAfter&#039; + wikEd.insertCounter);&lt;br /&gt;
			if ( (startNodeReselect !== null) &amp;amp;&amp;amp; (endNodeReselect !== null) ) {&lt;br /&gt;
				range.setStartBefore(startNodeReselect);&lt;br /&gt;
				range.setEndAfter(endNodeReselect);&lt;br /&gt;
				obj.sel.addRange(range);&lt;br /&gt;
				wikEd.ScrollToNodes(startNodeReselect, endNodeReselect);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// save paste range for reselection to switch between textified and wikified text&lt;br /&gt;
		if ( (wikEd.paste !== null) &amp;amp;&amp;amp; (range !== null) ) {&lt;br /&gt;
			wikEd.paste.range = range.cloneRange();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove selection, keep whole text auto-selection as warning&lt;br /&gt;
	if (&lt;br /&gt;
		( (obj.changed.keepSel !== true) &amp;amp;&amp;amp; (obj.changed.from != &#039;whole&#039;) ) ||&lt;br /&gt;
		(obj.changed.keepSel === false) ||&lt;br /&gt;
		(buttonId == &#039;wikEdRedirect&#039;) ||&lt;br /&gt;
		( (buttonId == &#039;wikEdWikify&#039;) &amp;amp;&amp;amp; (parameters == &#039;whole&#039;) )&lt;br /&gt;
	) {&lt;br /&gt;
		if (obj.sel.rangeCount === 0) {&lt;br /&gt;
			obj.sel.collapse(wikEd.frameBody, 0);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			obj.sel.collapseToEnd();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// focus edit area to continue editing as there is no selection that would be overwritten&lt;br /&gt;
		wikEd.frameWindow.focus();&lt;br /&gt;
		wikEd.keepSelRange = null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// save curently selected range&lt;br /&gt;
	else if (obj.sel.rangeCount &amp;gt; 0) {&lt;br /&gt;
		wikEd.keepSelRange = obj.sel.getRangeAt(0);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.keepSelRange = null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// reset button to active, reset cursor&lt;br /&gt;
	if (buttonObj !== null) {&lt;br /&gt;
		if (buttonObj.className != &#039;wikEdButtonInactive&#039;) {&lt;br /&gt;
			buttonObj.className = &#039;wikEdButton&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		buttonObj.style.cursor = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// grey out inactive buttons&lt;br /&gt;
	wikEd.InactiveButtons();&lt;br /&gt;
&lt;br /&gt;
	// add event handlers to unhide refs and templates&lt;br /&gt;
	if ( (highlightSyntax === true) &amp;amp;&amp;amp; (obj.changed.plain !== null) ) {&lt;br /&gt;
&lt;br /&gt;
		// add ref and template names to hide buttons&lt;br /&gt;
		wikEd.HighlightNamedHideButtons();&lt;br /&gt;
&lt;br /&gt;
		// add event handlers to unhide refs and templates&lt;br /&gt;
		wikEd.HideAddHandlers();&lt;br /&gt;
&lt;br /&gt;
		// add event handlers to make highlighted frame links ctrl-clickable&lt;br /&gt;
		wikEd.LinkifyLinks();&lt;br /&gt;
&lt;br /&gt;
		// get link infos from server (redirects, redlinks)&lt;br /&gt;
		wikEd.LinkInfoCall();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// resume frame spellchecking&lt;br /&gt;
	if (pauseFrameSpellchecking === true) {&lt;br /&gt;
		wikEd.frameBody.spellcheck = true;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LocalPreview: display local preview box using AJAX call&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LocalPreview = function ( fetchRefs ) {&lt;br /&gt;
&lt;br /&gt;
	// interrupt fullscreen mode&lt;br /&gt;
	if ( wikEd.fullscreen === true ) {&lt;br /&gt;
		wikEd.FullScreen( false );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// update textarea&lt;br /&gt;
	if ( wikEd.useWikEd === true &amp;amp;&amp;amp; wikEd.textareaUpdated === false ) {&lt;br /&gt;
		wikEd.UpdateTextarea();&lt;br /&gt;
		wikEd.textareaUpdated = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// clear box to display loading indicator, keep wrapper height to prevent scrolling&lt;br /&gt;
	var previewHeight = wikEd.localPrevWrapper.offsetHeight;&lt;br /&gt;
	if ( ( wikEd.previewArticle.innerHTML !== &#039;&#039; || wikEd.previewDiff.innerHTML !== &#039;&#039; ) &amp;amp;&amp;amp; previewHeight &amp;gt; 0 ) {&lt;br /&gt;
		wikEd.localPrevWrapper.style.height = previewHeight + &#039;px&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	if ( wikEd.previewArticle.innerHTML === &#039;&#039; ) {&lt;br /&gt;
		wikEd.previewArticle.innerHTML = wikEd.config.text.wikEdPreviewLoading;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.previewArticle.style.display = &#039;block&#039;;&lt;br /&gt;
	wikEd.previewDiff.style.display = &#039;none&#039;;&lt;br /&gt;
	wikEd.localPrevWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
&lt;br /&gt;
	// load MathJax js&lt;br /&gt;
	if ( window.MathJax === undefined ) {&lt;br /&gt;
		if ( wikEd.loader === true ) {&lt;br /&gt;
&lt;br /&gt;
			// prevent error if module is not installed&lt;br /&gt;
			try {&lt;br /&gt;
				window.mw.loader.using( &#039;ext.math.mathjax.enabler&#039;, function () {&lt;br /&gt;
					window.$( &#039;.wikEdPreviewArticle&#039; ).renderTeX();&lt;br /&gt;
				} );&lt;br /&gt;
			}&lt;br /&gt;
			catch ( exception ) {&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// prepare ajax preview&lt;br /&gt;
	wikEd.previewIsAjax = false;&lt;br /&gt;
	var bodyData = wikEd.textarea.value;&lt;br /&gt;
	if ( wikEd.config.useAjaxPreview === true ) {&lt;br /&gt;
&lt;br /&gt;
		// use Live preview if possible, see https://www.mediawiki.org/wiki/Manual:Live_preview&lt;br /&gt;
		var livePreview = true;&lt;br /&gt;
&lt;br /&gt;
		// articles on watchlist preview page&lt;br /&gt;
		if ( wikEd.editWatchlist === true ) {&lt;br /&gt;
			bodyData = bodyData.replace( /\n{1}/g, &#039;\n\n&#039; );&lt;br /&gt;
			bodyData = bodyData.replace( /(.+)/g,&lt;br /&gt;
				function( p, p1 ) {&lt;br /&gt;
					if ( /[#&amp;lt;&amp;gt;\[\]|{}]/.test(p1) === true ) {&lt;br /&gt;
						return p1;&lt;br /&gt;
					}&lt;br /&gt;
					var article = p1;&lt;br /&gt;
&lt;br /&gt;
					// get article talk page&lt;br /&gt;
					var talk;&lt;br /&gt;
					if ( /:/.test(article) === true ) {&lt;br /&gt;
&lt;br /&gt;
						// $1_ns:name&lt;br /&gt;
						if ( wikEd.config.text[&#039;talk namespace suffix&#039;].indexOf(&#039;$1&#039;) &amp;gt;= 0 ) {&lt;br /&gt;
							talk = article.replace( /^([^:]*)/, wikEd.config.text[&#039;talk namespace suffix&#039;] );&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// talk_ns:name (Discussion_Utilisateur) (all ASCII non-letters as separator)&lt;br /&gt;
						else if ( /[ -\/:-@\[-`{-\x88‰‹\x8d\x8f-\x98™›\x9d\xa0-»¿×÷]$/.test( wikEd.config.text[&#039;talk namespace suffix&#039;] ) === true ) {&lt;br /&gt;
							talk = article.replace( /^([^:]*)/, wikEd.config.text[&#039;talk namespace suffix&#039;] + &#039;$1&#039; );&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// ns_talk:name (User_talk)&lt;br /&gt;
						else {&lt;br /&gt;
							talk = article.replace( /^([^:]*)/, &#039;$1&#039; + wikEd.config.text[&#039;talk namespace suffix&#039;] );&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						talk = wikEd.config.text[&#039;talk namespace&#039;] + &#039;:&#039; + article;&lt;br /&gt;
					}&lt;br /&gt;
					var uriArticle = wikEd.EncodeTitle( article );&lt;br /&gt;
					var hist = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgScript + &#039;?title=&#039; + uriArticle + &#039;&amp;amp;action=history&#039;;&lt;br /&gt;
					return &#039;[[:&#039; + p1 + &#039;]]&amp;amp;nbsp;•&amp;amp;nbsp;([[:&#039; + talk + &#039;|&#039; + wikEd.config.text[&#039;talk page&#039;] + &#039;]], [&#039; + hist + &#039; &#039; + wikEd.config.text[&#039;history page&#039;] + &#039;])&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// normal article edit page&lt;br /&gt;
		else {&lt;br /&gt;
&lt;br /&gt;
			// check for section edits with &amp;lt;ref&amp;gt; tags&lt;br /&gt;
			if (&lt;br /&gt;
				wikEd.editSection !== null &amp;amp;&amp;amp;&lt;br /&gt;
				/&amp;lt;ref\b[^&amp;gt;\/]*(\/&amp;gt;|&amp;gt;(.|\n)*?&amp;lt;\/ref&amp;gt;)/i.test( bodyData ) === true&lt;br /&gt;
			) {&lt;br /&gt;
&lt;br /&gt;
				// check for named references defined outside edited section&lt;br /&gt;
				if (&lt;br /&gt;
					wikEd.wikiGlobals.wgEnableAPI === true ||&lt;br /&gt;
					wikEd.wikiGlobals.wgEnableAPI === &#039;true&#039;&lt;br /&gt;
				) {&lt;br /&gt;
&lt;br /&gt;
					// collect named references in section text&lt;br /&gt;
					var namedRefs = wikEd.ParseNamedRefs( bodyData );&lt;br /&gt;
&lt;br /&gt;
					// check for undefined named refs&lt;br /&gt;
					var undefinedRefs = false;&lt;br /&gt;
					for ( var name in namedRefs ) {&lt;br /&gt;
						if (&lt;br /&gt;
							Object.prototype.hasOwnProperty.call( namedRefs, name ) === true &amp;amp;&amp;amp;&lt;br /&gt;
							namedRefs[name] === null&lt;br /&gt;
						) {&lt;br /&gt;
&lt;br /&gt;
							// reference definition not yet fetched&lt;br /&gt;
							if ( wikEd.namedRefs[name] === undefined ) {&lt;br /&gt;
								undefinedRefs = true;&lt;br /&gt;
								if ( fetchRefs !== false ) {&lt;br /&gt;
									break;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// replace first ref tag with fetched reference definition&lt;br /&gt;
							else {&lt;br /&gt;
								var regExpRef = new RegExp( &#039;&amp;lt;ref\\b[^&amp;gt;]*?\\bname\\s*=\\s*&#039; + name + &#039;[^&amp;gt;/]*(/&amp;gt;|&amp;gt;&amp;lt;/ref&amp;gt;)&#039;, &#039;i&#039; );&lt;br /&gt;
								bodyData = bodyData.replace( regExpRef, wikEd.namedRefs[name] );&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// fetch reference definitions from whole article text for outside refs, do not repeat fetch cycle&lt;br /&gt;
					if ( undefinedRefs === true &amp;amp;&amp;amp; fetchRefs !== false ) {&lt;br /&gt;
						wikEd.GetArticleText( wikEd.GetArticleTextAjaxHandler );&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// append references section&lt;br /&gt;
				if (&lt;br /&gt;
					/&amp;lt;references\b[^&amp;gt;]*&amp;gt;/i.test(bodyData) === false &amp;amp;&amp;amp;&lt;br /&gt;
					/\{\{reflist\b(.|\n)*?\}\}/i.test(bodyData) === false&lt;br /&gt;
				) {&lt;br /&gt;
					bodyData += &#039;&amp;lt;div class=&amp;quot;wikEdPreviewRefs&amp;quot;&amp;gt;&amp;lt;references/&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// GeSHi syntax highlighting support, CSS is only provided dynamically and not for Live preview&lt;br /&gt;
		// request a full preview and attach CSS to page, remember already loaded languages&lt;br /&gt;
		var regExp = /&amp;lt;(syntaxhighlight|source)\b[^&amp;gt;]*?lang\s*=\s*(&amp;quot;|&#039;)(\w+)\2/gi;&lt;br /&gt;
		var regExpMatch;&lt;br /&gt;
		while ( (regExpMatch = regExp.exec(bodyData)) !== null) {&lt;br /&gt;
			var lang = regExpMatch[3];&lt;br /&gt;
			if (wikEd.syntaxHighlightTagCSS[&#039;wikEd&#039; + lang] === undefined) {&lt;br /&gt;
				livePreview = false;&lt;br /&gt;
				wikEd.syntaxHighlightTagCSS[&#039;wikEd&#039; + lang] = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// make the AJAX request&lt;br /&gt;
		wikEd.AjaxPreview( bodyData, wikEd.LocalPreviewAjaxHandler, livePreview );&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LocalPreviewAjaxHandler: process the returned article preview&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LocalPreviewAjaxHandler = function ( ajax ) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.previewIsAjax = true;&lt;br /&gt;
&lt;br /&gt;
	// get response&lt;br /&gt;
	var html = ajax.responseText;&lt;br /&gt;
&lt;br /&gt;
	// API reponse&lt;br /&gt;
	if ( html.indexOf( &#039;&amp;lt;api&amp;gt;&#039; ) != -1 ) {&lt;br /&gt;
		html = wikEd.StringGetInnerHTML( html, &#039;text&#039;, &#039;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;lt;/g, &#039;&amp;lt;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;gt;/g, &#039;&amp;gt;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;quot;/g, &#039;&amp;quot;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;amp;/g, &#039;&amp;amp;&#039; );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// livepreview (https://www.mediawiki.org/wiki/Manual:Live_preview)&lt;br /&gt;
	else if ( html.indexOf( &#039;&amp;lt;livepreview&amp;gt;&#039; ) != -1 ) {&lt;br /&gt;
		html = wikEd.StringGetInnerHTML( html, &#039;preview&#039;, &#039;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;lt;/g, &#039;&amp;lt;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;gt;/g, &#039;&amp;gt;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;quot;/g, &#039;&amp;quot;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;apos;/g, &#039;\&#039;&#039; )&lt;br /&gt;
			.replace( /&amp;amp;amp;/g, &#039;&amp;amp;&#039; );&lt;br /&gt;
		html = wikEd.RemoveTag( html, &#039;div&#039;, /\bclass=(&amp;quot;|&#039;)previewnote(&amp;quot;|&#039;)/, &#039;\x00&#039;, &#039;\x01&#039; );&lt;br /&gt;
		html = html.replace( /\x00(.|\n)*?\x01/g, &#039;&#039; );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// full preview page&lt;br /&gt;
	else {&lt;br /&gt;
&lt;br /&gt;
		// attach &amp;lt;style&amp;gt; stylesheet declarations to document (&amp;lt;source&amp;gt;, &amp;lt;syntaxhighlight&amp;gt;)&lt;br /&gt;
		var regExpMatch;&lt;br /&gt;
		var regExp = /&amp;lt;()style\b[^&amp;gt;]*?type=&amp;quot;text\/css&amp;quot;&amp;gt;((.|\n)*?)&amp;lt;\/style&amp;gt;/gi;&lt;br /&gt;
		while ( ( regExpMatch = regExp.exec( html ) ) !== null ) {&lt;br /&gt;
			var css = regExpMatch[2];&lt;br /&gt;
			var stylesheet = new wikEd.StyleSheet( document );&lt;br /&gt;
			stylesheet.AddCSSRules( css );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get preview html&lt;br /&gt;
		html = wikEd.StringGetInnerHTML( html, &#039;div&#039;, &#039;id&#039;, &#039;wikiPreview&#039;, true );&lt;br /&gt;
		html = wikEd.StringGetInnerHTML( html, &#039;div&#039;, &#039;class&#039;, &#039;previewnote&#039;, true, false, true );&lt;br /&gt;
		html = html.replace( /&amp;lt;!--(.|\n)*?--&amp;gt;/g, &#039;&#039; );&lt;br /&gt;
		html = html.replace( /\s+$/g, &#039;&#039; );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// clean form elements as these could interfere with the submit buttons&lt;br /&gt;
	html = html.replace( /&amp;lt;\/?form\b[^&amp;gt;]*&amp;gt;/gi, &#039;&#039; );&lt;br /&gt;
	html = html.replace( /&amp;lt;input\b[^&amp;gt;]*?\btype\s*=\s*[&amp;quot;&#039;]?hidden[&amp;quot;&#039;]?[^&amp;gt;]*&amp;gt;/gi, &#039;&#039; );&lt;br /&gt;
	html = html.replace( /&amp;lt;input\b([^&amp;gt;]*)&amp;gt;/gi,&lt;br /&gt;
		function( p, p1 ) {&lt;br /&gt;
			p1 = p1.replace( /\bname\s*=\s*([^&amp;quot;&#039;`=]+|\&#039;[^&#039;=]*\&#039;|\&amp;quot;[^&amp;quot;=]*\&amp;quot;)/gi, &#039;&#039; );&lt;br /&gt;
			return p1;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove cite errors for automatic section preview refs&lt;br /&gt;
	html = html.replace( /(&amp;lt;div\b[^&amp;gt;]*?\bclass=&amp;quot;wikEdPreviewRefs&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*$)/gi,&lt;br /&gt;
		function( p, p1, p2 ) {&lt;br /&gt;
			p1 = p1.replace( /&amp;lt;strong\b[^&amp;gt;]*?\bclass=&amp;quot;error&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/strong&amp;gt;/g, &#039;&#039; );&lt;br /&gt;
			return p1;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	wikEd.previewArticle.innerHTML = html;&lt;br /&gt;
&lt;br /&gt;
	// init sortable tables (wikibits.js)&lt;br /&gt;
	if ( typeof window.sortables_init == &#039;function&#039; ) {&lt;br /&gt;
		window.sortables_init();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// init collapsible tables (common.js)&lt;br /&gt;
	if ( typeof window.createCollapseButtons == &#039;function&#039; ) {&lt;br /&gt;
		window.createCollapseButtons();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// fire mediawiki hook to apply changes to preview content: &amp;lt;categorytree&amp;gt;, &amp;lt;math&amp;gt;&lt;br /&gt;
	if ( window.mw !== undefined &amp;amp;&amp;amp; window.mw.hook !== undefined &amp;amp;&amp;amp; window.mw.hook( &#039;wikipage.content&#039; ).fire !== undefined ) {&lt;br /&gt;
		window.mw.hook( &#039;wikipage.content&#039; ).fire( $( &#039;#wikEdPreviewArticle&#039; ) );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// scroll to button, textarea, or preview field&lt;br /&gt;
	wikEd.ScrollToPreview();&lt;br /&gt;
&lt;br /&gt;
	// run scheduled custom functions&lt;br /&gt;
	wikEd.ExecuteHook( wikEd.config.previewHook );&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetArticleText: get full article text&lt;br /&gt;
//  for section edits with refs defined outside section&lt;br /&gt;
&lt;br /&gt;
wikEd.GetArticleText = function ( ResponseHandler ) {&lt;br /&gt;
&lt;br /&gt;
	var postFields = {&lt;br /&gt;
		&#039;format&#039;: &#039;xml&#039;,&lt;br /&gt;
		&#039;action&#039;: &#039;query&#039;,&lt;br /&gt;
		&#039;titles&#039;: wikEd.wikiGlobals.wgTitle,&lt;br /&gt;
		&#039;prop&#039;: &#039;revisions&#039;,&lt;br /&gt;
		&#039;rvprop&#039;: &#039;content&#039;&lt;br /&gt;
	};&lt;br /&gt;
	if ( wikEd.starttime !== null ) {&lt;br /&gt;
		postFields[&#039;wpStarttime&#039;] = wikEd.starttime;&lt;br /&gt;
	}&lt;br /&gt;
	if ( wikEd.edittime !== null ) {&lt;br /&gt;
		postFields[&#039;wpEdittime&#039;] = wikEd.edittime;&lt;br /&gt;
	}&lt;br /&gt;
	if ( wikEd.editToken !== null ) {&lt;br /&gt;
		postFields[&#039;wpEditToken&#039;] = wikEd.editToken;&lt;br /&gt;
	}&lt;br /&gt;
	if ( wikEd.autoSummary !== null ) {&lt;br /&gt;
		postFields[&#039;wpAutoSummary&#039;] = wikEd.autoSummary;&lt;br /&gt;
	}&lt;br /&gt;
	var requestUrl = wikEd.scriptURL + &#039;api.php&#039;;&lt;br /&gt;
&lt;br /&gt;
	// make an ajax API request&lt;br /&gt;
	wikEd.AjaxRequest( &#039;POST&#039;, requestUrl, postFields, &#039;text/plain&#039;, ResponseHandler );&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetArticleTextAjaxHandler: process the returned full article text&lt;br /&gt;
//  for section edits with refs defined outside section&lt;br /&gt;
&lt;br /&gt;
wikEd.GetArticleTextAjaxHandler = function ( ajax ) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.previewIsAjax = true;&lt;br /&gt;
&lt;br /&gt;
	// get response&lt;br /&gt;
	var html = ajax.responseText;&lt;br /&gt;
&lt;br /&gt;
	// get text&lt;br /&gt;
	html = wikEd.StringGetInnerHTML( html, &#039;rev&#039;, &#039;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;lt;/g, &#039;&amp;lt;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;gt;/g, &#039;&amp;gt;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;quot;/g, &#039;&amp;quot;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;apos;/g, &#039;\&#039;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;amp;/g, &#039;&amp;amp;&#039; );&lt;br /&gt;
&lt;br /&gt;
	// collect named references in section text&lt;br /&gt;
	var namedRefs = wikEd.ParseNamedRefs( html );&lt;br /&gt;
&lt;br /&gt;
	// save undefined named refs&lt;br /&gt;
	for ( var name in namedRefs ) {&lt;br /&gt;
		if ( Object.prototype.hasOwnProperty.call( namedRefs, name ) === true ) {&lt;br /&gt;
			if ( namedRefs[name] !== null ) {&lt;br /&gt;
				wikEd.namedRefs[name] = namedRefs[name];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// do a local preview, do not repeat fetch cycle for reference definitions&lt;br /&gt;
	wikEd.LocalPreview( false );&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ParseNamedRefs: parse named references from article text&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ParseNamedRefs = function ( text ) {&lt;br /&gt;
&lt;br /&gt;
	var namedRefs = {};&lt;br /&gt;
	var regExpRef = /&amp;lt;ref\b[^&amp;gt;]*?\bname\s*=\s*(&amp;quot;[^&amp;lt;&amp;quot;]+&amp;quot;|[\w!$%&amp;amp;()*,\-.:;&amp;lt;@\[\]^`\{|\}~]+)[^&amp;gt;]*?(\/&amp;gt;|&amp;gt;((.|\n)*?)&amp;lt;\/ref&amp;gt;)/gi;&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	while ( ( regExpMatch = regExpRef.exec( text ) ) !== null ) {&lt;br /&gt;
		var ref = regExpMatch[0];&lt;br /&gt;
		var name = regExpMatch[1];&lt;br /&gt;
		var def = regExpMatch[3] || &#039;&#039;;&lt;br /&gt;
		if ( Object.prototype.hasOwnProperty.call( namedRefs, name ) === false ) {&lt;br /&gt;
			namedRefs[name] = null;&lt;br /&gt;
		}&lt;br /&gt;
		if ( def !== &#039;&#039; ) {&lt;br /&gt;
			namedRefs[name] = ref;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return namedRefs;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FilePreviewAjaxHandler: process the returned image addresses&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FilePreviewAjaxHandler = function ( ajax ) {&lt;br /&gt;
&lt;br /&gt;
	// get response&lt;br /&gt;
	var html = ajax.responseText;&lt;br /&gt;
&lt;br /&gt;
	// html-ize&lt;br /&gt;
	html = html.replace( /\s*&amp;lt;\/preview&amp;gt;\s*()/, &#039;&#039; )&lt;br /&gt;
		.replace( /\s*&amp;lt;\/livepreview&amp;gt;\s*()/, &#039;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;lt;/g, &#039;&amp;lt;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;gt;/g, &#039;&amp;gt;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;amp;/g, &#039;&amp;amp;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;quot;/g, &#039;&amp;quot;&#039; )&lt;br /&gt;
		.replace( /&amp;amp;apos;/g, &#039;\&#039;&#039; )&lt;br /&gt;
		.replace( /&amp;lt;\/?(br|p)\b[^&amp;gt;]*&amp;gt;/g, &#039;\n&#039; );&lt;br /&gt;
&lt;br /&gt;
	// parse response into file url cache&lt;br /&gt;
	var regExpFile = new RegExp( &#039;\\n((Image|File|Media|&#039; + wikEd.config.text[ &#039;wikicode Image&#039; ] + &#039;|&#039; + wikEd.config.text[ &#039;wikicode File&#039; ] + &#039;|&#039; + wikEd.config.text[ &#039;wikicode Media&#039; ] + &#039;):[^ ]+) +(\\d+) +(.*)&#039;, &#039;ig&#039; );&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	while ( ( regExpMatch = regExpFile.exec( html ) ) !== null ) {&lt;br /&gt;
&lt;br /&gt;
		var file = regExpMatch[1];&lt;br /&gt;
		var filePreviewSize = regExpMatch[3];&lt;br /&gt;
		var links = regExpMatch[4];&lt;br /&gt;
&lt;br /&gt;
		var cacheKey = &#039;wikEd&#039; + file + filePreviewSize;&lt;br /&gt;
		var regExpMatch;&lt;br /&gt;
		if ( ( regExpMatch = /\bsrc=&amp;quot;(.+?)&amp;quot;/.exec( links ) ) !== null ) {&lt;br /&gt;
			wikEd.filePreviewCache[ cacheKey ] = {};&lt;br /&gt;
			var fileObj = wikEd.filePreviewCache[ cacheKey ];&lt;br /&gt;
			fileObj.url = regExpMatch[1];&lt;br /&gt;
			if ( ( regExpMatch = /\bwidth=&amp;quot;(\d+)&amp;quot;/.exec(links)) !== null ) {&lt;br /&gt;
				fileObj.width = parseInt(regExpMatch[ 1 ] );&lt;br /&gt;
			}&lt;br /&gt;
			if ( ( regExpMatch = /\bheight=&amp;quot;(\d+)&amp;quot;/.exec( links ) ) !== null ) {&lt;br /&gt;
				fileObj.height = parseInt( regExpMatch[ 1 ] );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if ( wikEd.filePreviewCache[ cacheKey ] === undefined ) {&lt;br /&gt;
			wikEd.filePreviewCache[ cacheKey ] = {};&lt;br /&gt;
			var fileObj = wikEd.filePreviewCache[ cacheKey ];&lt;br /&gt;
			fileObj.url = wikEd.config.image[ &#039;noFile&#039; ];&lt;br /&gt;
			fileObj.width = 16;&lt;br /&gt;
			fileObj.height = 16;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// cycle through file preview spans and add missing images as background&lt;br /&gt;
	for ( var i = 0; i &amp;lt; wikEd.filePreviewNo; i ++ ) {&lt;br /&gt;
		if ( wikEd.filePreviewIds[ i ] !== &#039;&#039; ) {&lt;br /&gt;
			var span = wikEd.frameDocument.getElementById( &#039;wikEdFilePreview&#039; + i );&lt;br /&gt;
			if ( span !== null ) {&lt;br /&gt;
				var cacheKey = &#039;wikEd&#039; + wikEd.filePreviewIds[ i ];&lt;br /&gt;
				var fileObj = wikEd.filePreviewCache[ cacheKey ];&lt;br /&gt;
				if ( fileObj !== undefined ) {&lt;br /&gt;
					span.style.backgroundImage = &#039;url(&#039; + fileObj.url + &#039;)&#039;;&lt;br /&gt;
					if ( fileObj.height !== null ) {&lt;br /&gt;
						span.style.height = fileObj.height + &#039;px&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					if ( fileObj.width !== null ) {&lt;br /&gt;
						span.style.width = fileObj.width + &#039;px&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					span.style.display = &#039;block&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.filePreviewIds[ i ] = &#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DiffResponse: calculate and linkify the diff between two versions (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DiffResponse = function (oldVersion, newVersion) {&lt;br /&gt;
&lt;br /&gt;
	// add trailing newline&lt;br /&gt;
	if (oldVersion.substr(oldVersion.length - 1, 1) != &#039;\n&#039;) {&lt;br /&gt;
		oldVersion += &#039;\n&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	if (newVersion.substr(newVersion.length - 1, 1) != &#039;\n&#039;) {&lt;br /&gt;
		newVersion += &#039;\n&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// call external diff program&lt;br /&gt;
	var wikEdDiff = new WikEdDiff();&lt;br /&gt;
	var diffText = wikEdDiff.diff(oldVersion, newVersion);&lt;br /&gt;
&lt;br /&gt;
	// linkify blockwise with breaks at delete and block move tags&lt;br /&gt;
	var diffTextLinkified = &#039;&#039;;&lt;br /&gt;
	var regExp = /&amp;lt;span\b[^&amp;gt;]+?\bclass=&amp;quot;wikEdDiff(Delete|Block)&amp;quot;[^&amp;gt;]*&amp;gt;/g;&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	var pos = 0;&lt;br /&gt;
	while ( (regExpMatch = regExp.exec(diffText)) !== null) {&lt;br /&gt;
		diffTextLinkified += wikEd.DiffLinkify(diffText.substring(pos, regExpMatch.index)) + regExpMatch[0];&lt;br /&gt;
		pos = regExp.lastIndex;&lt;br /&gt;
	}&lt;br /&gt;
	diffTextLinkified += wikEd.DiffLinkify(diffText.substr(pos));&lt;br /&gt;
	return diffTextLinkified;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DiffLinkify: linkify external links and wikilinks in diffed text as &amp;lt;a&amp;gt; anchor elements (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DiffLinkify = function (html) {&lt;br /&gt;
&lt;br /&gt;
	// &amp;amp;lt; &amp;amp;gt; to \x00 \x01&lt;br /&gt;
	html = html.replace(/&amp;amp;lt;/g, &#039;\x00&#039;);&lt;br /&gt;
	html = html.replace(/&amp;amp;gt;/g, &#039;\x01&#039;);&lt;br /&gt;
&lt;br /&gt;
	// split into valid html tags and plain text fragments&lt;br /&gt;
	var linkified = &#039;&#039;;&lt;br /&gt;
	var regExp = /(&amp;lt;[^&amp;lt;&amp;gt;]*&amp;gt;)|([^&amp;lt;&amp;gt;]+|&amp;lt;|&amp;gt;)/g;&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	while ( (regExpMatch = regExp.exec(html)) !== null) {&lt;br /&gt;
		var tag = regExpMatch[1] || &#039;&#039;;&lt;br /&gt;
		var plain = regExpMatch[2] || &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// process tags&lt;br /&gt;
		if  (tag !== &#039;&#039;) {&lt;br /&gt;
			linkified += tag;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// process plain tags&lt;br /&gt;
		else {&lt;br /&gt;
&lt;br /&gt;
			// escape bogus &amp;lt; or &amp;gt;&lt;br /&gt;
			plain = plain.replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
			plain = plain.replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;);&lt;br /&gt;
&lt;br /&gt;
			// external links        123                     3     2              14                                       4  5  6                                               65&lt;br /&gt;
			plain = plain.replace(/(((\bhttps?:|\bftp:|\birc:|\bgopher:|)\/\/)|\bnews:|\bmailto:)([^\x00-\x20\s&amp;quot;\[\]\x7f\|\{\}&amp;lt;&amp;gt;]|&amp;lt;[^&amp;gt;]*&amp;gt;)+?(?=([!&amp;quot;().,:;‘-•]*\s|[\x00-\x20\s&amp;quot;\[\]\x7f|{}]|$))/gi,&lt;br /&gt;
				function(p) {&lt;br /&gt;
					var whole = p;&lt;br /&gt;
&lt;br /&gt;
					// remove tags and comments&lt;br /&gt;
					var url = whole;&lt;br /&gt;
					url = url.replace(/\x00!--.*?--\x01/g, &#039;&#039;);&lt;br /&gt;
					url = url.replace(/.*--\x01|\x00!--.*()/g, &#039;&#039;);&lt;br /&gt;
					url = url.replace(/&amp;lt;.*?&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
					url = url.replace(/^.*&amp;gt;|&amp;lt;.*$/g, &#039;&#039;);&lt;br /&gt;
					url = url.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
					// make title as readable as possible&lt;br /&gt;
					var title = url;&lt;br /&gt;
					title = title.replace(/\+/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
					// decodeURI breaks for invalid UTF-8 escapes&lt;br /&gt;
					title = title.replace(/(%[0-9a-f]{2})+/gi,&lt;br /&gt;
						function(p, p1) {&lt;br /&gt;
							try {&lt;br /&gt;
								return decodeURI(p);&lt;br /&gt;
							}&lt;br /&gt;
							catch (exception) {&lt;br /&gt;
								return p;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					);&lt;br /&gt;
					title = title.replace(/\t/g, &#039; &#039;);&lt;br /&gt;
					title = wikEd.EscapeHtml(title);&lt;br /&gt;
					title = title.replace(/&amp;quot;/g, &#039;&amp;amp;quot;&#039;);&lt;br /&gt;
&lt;br /&gt;
					// linkify all url text fragments between highlighting &amp;lt;span&amp;gt;s seperately&lt;br /&gt;
					var anchorOpen = &#039;&amp;lt;a href = &amp;quot;&#039; + url + &#039;&amp;quot; style=&amp;quot;text-decoration: none; color: inherit; color: expression(parentElement.currentStyle.color);&amp;quot; title=&amp;quot;&#039; + title + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
					var anchorClose = &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
					whole = whole.replace(/(&amp;lt;[^&amp;gt;]*&amp;gt;)/g, anchorClose + &#039;$1&#039; + anchorOpen);&lt;br /&gt;
					return anchorOpen + whole + anchorClose;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			// linkify links and templates&lt;br /&gt;
			if ( (wikEd.wikiGlobals.wgServer !== undefined) &amp;amp;&amp;amp; (wikEd.wikiGlobals.wgArticlePath !== undefined) ) {&lt;br /&gt;
&lt;br /&gt;
				//                     1 [[ 2title        23 | text       3   ]]1 4 {{ 5title        56                6 4&lt;br /&gt;
				plain = plain.replace(/(\[\[([^|\[\]{}\n]+)(\|[^\[\]{}&amp;lt;&amp;gt;]*)?\]\])|(\{\{([^|\[\]{}\n]*)([^\[\]{}&amp;lt;&amp;gt;]*\}\})?)/g,&lt;br /&gt;
				function(p, p1, p2, p3, p4, p5, p6) {&lt;br /&gt;
						var articleName = p2 || &#039;&#039;;&lt;br /&gt;
						var templateName = p5 || &#039;&#039;;&lt;br /&gt;
						var whole = p;&lt;br /&gt;
&lt;br /&gt;
						// extract title&lt;br /&gt;
						var title = articleName;&lt;br /&gt;
						if (title === &#039;&#039;) {&lt;br /&gt;
							title = templateName;&lt;br /&gt;
						}&lt;br /&gt;
						title = title.replace(/\x00!--.*?--\x01/g, &#039;&#039;);&lt;br /&gt;
						title = title.replace(/.*--\x01|\x00!--.*()/g, &#039;&#039;);&lt;br /&gt;
						title = title.replace(/&amp;lt;.*?&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
						title = title.replace(/^.*&amp;gt;|&amp;lt;.*$/g, &#039;&#039;);&lt;br /&gt;
						title = title.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
						// [[/subpage]] refers to a subpage of the current page, [[#section]] to a section of the current page&lt;br /&gt;
						if ( (title.indexOf(&#039;/&#039;)=== 0) || (title.indexOf(&#039;#&#039;)=== 0) ) {&lt;br /&gt;
							title = wikEd.pageName + title;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// create url&lt;br /&gt;
						var url = wikEd.EncodeTitle(title);&lt;br /&gt;
						var articleTitle = title.replace(/&amp;quot;/g, &#039;&amp;amp;quot;&#039;);&lt;br /&gt;
						if (templateName !== &#039;&#039;) {&lt;br /&gt;
							if (/:/.test(title) === false) {&lt;br /&gt;
								url = &#039;Template:&#039; + url;&lt;br /&gt;
								articleTitle = &#039;Template:&#039; + articleTitle;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						url = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, url);&lt;br /&gt;
&lt;br /&gt;
						// linkify all text fragments between highlighting &amp;lt;span&amp;gt;s seperately&lt;br /&gt;
						var anchorOpen = &#039;&amp;lt;a href = &amp;quot;&#039; + url + &#039;&amp;quot; style = &amp;quot;text-decoration: none; color: inherit; color: expression(parentElement.currentStyle.color)&amp;quot; title=&amp;quot;&#039; + articleTitle + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						var anchorClose = &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
						whole = whole.replace(/(&amp;lt;[^&amp;gt;]*&amp;gt;)/g, anchorClose + &#039;$1&#039; + anchorOpen);&lt;br /&gt;
						return anchorOpen + whole + anchorClose;&lt;br /&gt;
					}&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			linkified += plain;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// \x00 and \x01 back to &amp;amp;lt; and &amp;amp;gt;&lt;br /&gt;
	linkified = linkified.replace(/\x00/g, &#039;&amp;amp;lt;&#039;);&lt;br /&gt;
	linkified = linkified.replace(/\x01/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	return linkified;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.StringGetInnerHTML: get innerHTML of element from html in a string; can also get text before or after node&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.StringGetInnerHTML = function (html, tag, attrib, value, defaultToWholeHTML, getBeforeHTML, getAfterHTML) {&lt;br /&gt;
&lt;br /&gt;
	var startPos;&lt;br /&gt;
	var startLength;&lt;br /&gt;
	var endPos;&lt;br /&gt;
	var endLength;&lt;br /&gt;
	var level = 0;&lt;br /&gt;
	var string;&lt;br /&gt;
&lt;br /&gt;
	var attribValue = &#039;&#039;;&lt;br /&gt;
	if (attrib !== &#039;&#039;) {&lt;br /&gt;
		attribValue = &#039;[^&amp;gt;]*?&#039; + attrib + &#039;\\s*=\\s*(&amp;quot;|\\\&#039;)?&#039; + value + &#039;\\1&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	var regExpStart = new RegExp(&#039;&amp;lt;&#039; + tag + &#039;\\b&#039; + attribValue + &#039;[^&amp;gt;]*&amp;gt;&#039;, &#039;gi&#039;);&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	if ( (regExpMatch = regExpStart.exec(html)) !== null) {&lt;br /&gt;
		startPos = regExpMatch.index;&lt;br /&gt;
		startLength = regExpMatch[0].length;&lt;br /&gt;
		var regExpParse = new RegExp(&#039;&amp;lt;(\\/?)&#039; + tag + &#039;\\b[^&amp;gt;]*&amp;gt;&#039;, &#039;g&#039;);&lt;br /&gt;
		regExpParse.lastIndex = startPos;&lt;br /&gt;
		while ( (regExpMatch = regExpParse.exec(html)) !== null) {&lt;br /&gt;
			var p1 = regExpMatch[1] || &#039;&#039;;&lt;br /&gt;
			if (p1 === &#039;&#039;) {&lt;br /&gt;
				level ++;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				level --;&lt;br /&gt;
				if (level === 0) {&lt;br /&gt;
					endPos = regExpMatch.index;&lt;br /&gt;
					endLength = regExpMatch[0].length;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// return whole html if node does not exist&lt;br /&gt;
	if (endPos === undefined) {&lt;br /&gt;
		if (defaultToWholeHTML === true) {&lt;br /&gt;
			string = html;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// return text before node&lt;br /&gt;
	else if (getBeforeHTML === true) {&lt;br /&gt;
		string = html.substr(0, startPos);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// return text after node&lt;br /&gt;
	else if (getAfterHTML === true) {&lt;br /&gt;
		string = html.substr(endPos + endLength);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// return innerHTML of node&lt;br /&gt;
	else {&lt;br /&gt;
		string = html.substring(startPos + startLength, endPos);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return string;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ScrollToPreview: scroll to edit buttons, textarea, or preview field depending on current position&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ScrollToPreview = function () {&lt;br /&gt;
&lt;br /&gt;
	// reset fixed height to auto&lt;br /&gt;
	wikEd.localPrevWrapper.style.height = &#039;auto&#039;;&lt;br /&gt;
&lt;br /&gt;
	var scrollOffset = window.pageYOffset || document.body.scrollTop;&lt;br /&gt;
	var inputOffset = wikEd.GetOffsetTop(wikEd.inputWrapper);&lt;br /&gt;
	var editOffset = wikEd.GetOffsetTop(wikEd.editWrapper);&lt;br /&gt;
	var submitOffset = 0;&lt;br /&gt;
	if (wikEd.saveButton !== null) {&lt;br /&gt;
		submitOffset = wikEd.GetOffsetTop(wikEd.submitWrapper);&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.previewButton !== null) {&lt;br /&gt;
		submitOffset = wikEd.GetOffsetTop(wikEd.previewButton);&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.diffPreviewButton !== null) {&lt;br /&gt;
		submitOffset = wikEd.GetOffsetTop(wikEd.diffPreviewButton);&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.submitWrapper !== null) {&lt;br /&gt;
		submitOffset = wikEd.GetOffsetTop(wikEd.submitWrapper);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var editHeight = wikEd.editWrapper.clientHeight;&lt;br /&gt;
&lt;br /&gt;
	if (scrollOffset &amp;gt; submitOffset) {&lt;br /&gt;
		window.scroll(0, submitOffset);&lt;br /&gt;
	}&lt;br /&gt;
	else if (scrollOffset &amp;gt; (editHeight / 2 + editOffset) ) {&lt;br /&gt;
		window.scroll(0, submitOffset);&lt;br /&gt;
	}&lt;br /&gt;
	else if (scrollOffset &amp;gt; editOffset) {&lt;br /&gt;
		window.scroll(0, editOffset);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		window.scroll(0, inputOffset);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LinkifyLinks: register click handlers to make highlighted frame links ctrl-clickable (linkify), add redirect info, and highlight redlinks&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LinkifyLinks = function () {&lt;br /&gt;
&lt;br /&gt;
	// detect external files and images&lt;br /&gt;
	var regExpFile = new RegExp(&#039;^(Image|File|Media|&#039; + wikEd.config.text[&#039;wikicode Image&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode Media&#039;] + &#039;):&#039;, &#039;i&#039;);&lt;br /&gt;
&lt;br /&gt;
	// cycle through spans&lt;br /&gt;
	var spans = wikEd.frameDocument.getElementsByTagName(&#039;span&#039;);&lt;br /&gt;
	for (var i = 0; i &amp;lt; spans.length; i ++) {&lt;br /&gt;
		var span = spans[i];&lt;br /&gt;
		var id = span.id;&lt;br /&gt;
		if ( (id !== null) &amp;amp;&amp;amp; (id.indexOf(&#039;wikEdWikiLink&#039;)=== 0) ) {&lt;br /&gt;
			if (Object.prototype.hasOwnProperty.call(wikEd.wikiLinks, id) === true) {&lt;br /&gt;
&lt;br /&gt;
				// linkify&lt;br /&gt;
				if (wikEd.config.linkify === true) {&lt;br /&gt;
					span.addEventListener(&#039;click&#039;, wikEd.LinkifyHandler, true);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// add redirect and redlink info to popup&lt;br /&gt;
				var info = &#039;&#039;;&lt;br /&gt;
				var link = wikEd.wikiLinks[id].link;&lt;br /&gt;
				var externalLink = link.replace(regExpFile, &#039;File:&#039;);&lt;br /&gt;
&lt;br /&gt;
				// redirects&lt;br /&gt;
				if ( (Object.prototype.hasOwnProperty.call(wikEd.linkInfo, link) === true) &amp;amp;&amp;amp; (wikEd.linkInfo[link].updated === true) &amp;amp;&amp;amp; (wikEd.linkInfo[link].redirect === true) ) {&lt;br /&gt;
					var target = wikEd.linkInfo[link].target;&lt;br /&gt;
					if (target !== undefined) {&lt;br /&gt;
						info += wikEd.config.text.redirect + &#039; &#039; + target;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else if ( (Object.prototype.hasOwnProperty.call(wikEd.externalLinkInfo, link) === true) &amp;amp;&amp;amp; (wikEd.externalLinkInfo[link].updated === true) &amp;amp;&amp;amp; (wikEd.externalLinkInfo[link].redirect === true) ) {&lt;br /&gt;
					var target = wikEd.linkInfo[link].target;&lt;br /&gt;
					if (target !== undefined) {&lt;br /&gt;
						info += wikEd.config.text.redirect + &#039; &#039; + target;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// normalize redlinks from preview scanning&lt;br /&gt;
				var linkNorm = link.charAt(0).toUpperCase() + link.substr(1);&lt;br /&gt;
				var linkNormFull = link.replace(/(^|:)(.)/g, function (p, p1, p2) {&lt;br /&gt;
					return p.toUpperCase();&lt;br /&gt;
				});&lt;br /&gt;
&lt;br /&gt;
				// check for redlinks (missing links)&lt;br /&gt;
				var missingLink = false;&lt;br /&gt;
				if ( (Object.prototype.hasOwnProperty.call(wikEd.linkInfo, link) === true) &amp;amp;&amp;amp; (wikEd.linkInfo[link].updated === true) &amp;amp;&amp;amp; (wikEd.linkInfo[link].missing === true) ) {&lt;br /&gt;
					missingLink = true;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				var missingExternalLink = false;&lt;br /&gt;
				if (Object.prototype.hasOwnProperty.call(wikEd.externalLinkInfo, externalLink) === true) {&lt;br /&gt;
					if ( (wikEd.externalLinkInfo[externalLink].updated === true) &amp;amp;&amp;amp; (wikEd.externalLinkInfo[externalLink].missing === true) ) {&lt;br /&gt;
						missingExternalLink = true;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					missingExternalLink = true;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				var missingLinkNorm = false;&lt;br /&gt;
				if ( (Object.prototype.hasOwnProperty.call(wikEd.linkInfo, linkNorm) === true) &amp;amp;&amp;amp; (wikEd.linkInfo[linkNorm].type == &#039;preview&#039;) &amp;amp;&amp;amp; (wikEd.linkInfo[linkNorm].missing === true) ) {&lt;br /&gt;
					missingLinkNorm = true;&lt;br /&gt;
				}&lt;br /&gt;
				var missingLinkNormFull = false;&lt;br /&gt;
				if ( (Object.prototype.hasOwnProperty.call(wikEd.linkInfo, linkNormFull) === true) &amp;amp;&amp;amp; (wikEd.linkInfo[linkNormFull].type == &#039;preview&#039;) &amp;amp;&amp;amp; (wikEd.linkInfo[linkNormFull].missing === true) ) {&lt;br /&gt;
					missingLinkNormFull = true;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if ( ( (missingLink === true) &amp;amp;&amp;amp; (missingExternalLink === true) ) || (missingLinkNorm === true) || (missingLinkNormFull === true) ) {&lt;br /&gt;
					span.classList.add(&#039;wikEdRedlink&#039;);&lt;br /&gt;
					info += wikEd.config.text.redlink;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					span.classList.remove(&#039;wikEdRedlink&#039;);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// set title popup&lt;br /&gt;
				span.title = wikEd.wikiLinks[id].linkify + info;&lt;br /&gt;
&lt;br /&gt;
				// save current link infos&lt;br /&gt;
				wikEd.wikiLinks[id].info = info;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightNamedHideButtons: register :before text for named hiding buttons&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightNamedHideButtons = function () {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.refHide !== true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var rules = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// references&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.referenceArray.length; i ++) {&lt;br /&gt;
		if (wikEd.referenceArray[i].added === true) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		rules += &#039;.wikEdRefButton&#039; + i + &#039; { border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdRefButtonShow&#039; + i + &#039; { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdRefButton&#039; + i + &#039;:before, .wikEdRefButtonShow&#039; + i + &#039;:before { content: &amp;quot;&#039; + wikEd.config.text.hideRef + &#039; &#039; + wikEd.referenceArray[i].text + &#039;&amp;quot;; line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif; }\n&#039;;&lt;br /&gt;
		wikEd.referenceArray[i].added = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// templates&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.templateArray.length; i ++) {&lt;br /&gt;
		if (wikEd.templateArray[i].added === true) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		rules += &#039;.wikEdTemplButton&#039; + i + &#039; { border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdTemplButtonShow&#039; + i + &#039; { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdTemplButton&#039; + i + &#039;:before, .wikEdTemplButtonShow&#039; + i + &#039;:before { content: &amp;quot;&#039; + wikEd.config.text.hideTempl + &#039; &#039; + wikEd.templateArray[i].text + &#039;&amp;quot;; line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif; }\n&#039;;&lt;br /&gt;
		wikEd.templateArray[i].added = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// character entities&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.charEntityArray.length; i ++) {&lt;br /&gt;
		if (wikEd.charEntityArray[i].added === true) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		var character = wikEd.charEntityArray[i].text;&lt;br /&gt;
		if (character == &#039;&amp;quot;&#039;) {&lt;br /&gt;
			character = &#039;\\&#039; + character;&lt;br /&gt;
		}&lt;br /&gt;
		rules += &#039;.wikEdCharEntityButton&#039; + i + &#039; { border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; border-color: rgba(255, 255, 255, 0.75)  rgba(64, 64, 64, 0.5)  rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75); background: rgba(192, 192, 192, 0.3); }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdCharEntityButtonShow&#039; + i + &#039; { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; border-color: rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75) rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5); background: rgba(192, 192, 192, 0.3); }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdCharEntityButton&#039; + i + &#039;:before, .wikEdCharEntityButtonShow&#039; + i + &#039;:before { content: &amp;quot;&#039; + character + &#039;&amp;quot;; }\n&#039;;&lt;br /&gt;
		wikEd.charEntityArray[i].added = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// tables&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.tableArray.length; i ++) {&lt;br /&gt;
		if (wikEd.tableArray[i].added === true) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		var text = wikEd.config.text.hideTable;&lt;br /&gt;
		if (text !== &#039;&#039;) {&lt;br /&gt;
			text += &#039; &#039;;&lt;br /&gt;
		}&lt;br /&gt;
		text += wikEd.tableArray[i].text;&lt;br /&gt;
		rules += &#039;.wikEdTableButton&#039; + i + &#039; { border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdTableButtonShow&#039; + i + &#039; { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n&#039;;&lt;br /&gt;
		rules += &#039;.wikEdTableButton&#039; + i + &#039;:before, .wikEdTableButtonShow&#039; + i + &#039;:before { content: &amp;quot;&#039; + text + &#039;&amp;quot;; line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif; }\n&#039;;&lt;br /&gt;
		wikEd.tableArray[i].added = true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add or replace existing css rules&lt;br /&gt;
	if (rules !== &#039;&#039;) {&lt;br /&gt;
		wikEd.HighlightNamedHideButtonsStylesheet.AddCSSRules(rules);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HideAddHandlers: register mouseover handlers for tabs to unhide refs, templates, and character entities&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HideAddHandlers = function () {&lt;br /&gt;
&lt;br /&gt;
	if ( (wikEd.config.hideContent !== true) || (wikEd.refHide !== true) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var hideButton = wikEd.frameDocument.getElementsByTagName(&#039;button&#039;);&lt;br /&gt;
	for (var i = 0; i &amp;lt; hideButton.length; i ++) {&lt;br /&gt;
		var tabClass = hideButton[i].className;&lt;br /&gt;
		if (&lt;br /&gt;
			(tabClass.indexOf(&#039;wikEdRefButton&#039;)=== 0) ||&lt;br /&gt;
			(tabClass.indexOf(&#039;wikEdTemplButton&#039;)=== 0) ||&lt;br /&gt;
			(tabClass.indexOf(&#039;wikEdCharEntityButton&#039;)=== 0) ||&lt;br /&gt;
			(tabClass.indexOf(&#039;wikEdTableButton&#039;)=== 0)&lt;br /&gt;
		) {&lt;br /&gt;
			hideButton[i].addEventListener(&#039;click&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
			if (&lt;br /&gt;
				(tabClass.indexOf(&#039;wikEdRefButtonShow&#039;) == -1) &amp;amp;&amp;amp;&lt;br /&gt;
				(tabClass.indexOf(&#039;wikEdTemplButtonShow&#039;) == -1) &amp;amp;&amp;amp;&lt;br /&gt;
				(tabClass.indexOf(&#039;wikEdCharEntityButtonShow&#039;) == -1) &amp;amp;&amp;amp;&lt;br /&gt;
				(tabClass.indexOf(&#039;wikEdTableButtonShow&#039;) == -1)&lt;br /&gt;
			) {&lt;br /&gt;
				hideButton[i].addEventListener(&#039;mouseover&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HideShowHandler: display hidden ref or template on mouse over hide tab&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HideShowHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	event.preventDefault();&lt;br /&gt;
&lt;br /&gt;
	// find hidden content node&lt;br /&gt;
	var hideTarget = null;&lt;br /&gt;
	var hideInto = null;&lt;br /&gt;
	var hideButtonClass = null;&lt;br /&gt;
	var hideClass = null;&lt;br /&gt;
	var hideButton = null;&lt;br /&gt;
	var hideContainer = null;&lt;br /&gt;
	var hideCell = null;&lt;br /&gt;
	var hide = null;&lt;br /&gt;
&lt;br /&gt;
	if ( (event.type == &#039;mouseover&#039;) || (event.type == &#039;mouseout&#039;) || (event.type == &#039;click&#039;) ) {&lt;br /&gt;
		hideTarget = event.currentTarget;&lt;br /&gt;
		hideInto = event.relatedTarget;&lt;br /&gt;
&lt;br /&gt;
		// &amp;lt;container&amp;gt;&amp;lt;button&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/container&amp;gt;&amp;lt;hide&amp;gt; text &amp;lt;/hide&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		// target = table cell&lt;br /&gt;
		if  ( (hideTarget.tagName == &#039;TD&#039;) &amp;amp;&amp;amp; (/^wikEdTable\w+?$/.test(hideTarget.className) === true) ) {&lt;br /&gt;
			hideCell = hideTarget;&lt;br /&gt;
			hideButton = hideCell.getElementsByTagName(&#039;button&#039;)[0] || null;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// target = button&lt;br /&gt;
		else if (/^wikEd(Ref|Templ|CharEntity|Table)Button(Show)?\d*$/.test(hideTarget.className) === true) {&lt;br /&gt;
			hideButton = hideTarget;&lt;br /&gt;
		}&lt;br /&gt;
		if (hideButton !== null) {&lt;br /&gt;
			hideContainer = hideButton.parentNode;&lt;br /&gt;
			if (hideContainer !== null) {&lt;br /&gt;
				if (/^wikEd(Ref|Templ|CharEntity|Table)Container$/.test(hideContainer.className) === false) {&lt;br /&gt;
					hideContainer = null;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
&lt;br /&gt;
					// get hide text&lt;br /&gt;
					hide = wikEd.GetNextSiblingNode(hideContainer);&lt;br /&gt;
					if (hide !== null) {&lt;br /&gt;
						if (/^wikEd(Ref|Templ|TemplNs|CharEntity|Table)(Show)?$/.test(hide.className) === false) {&lt;br /&gt;
							hide = null;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// target = hide text&lt;br /&gt;
		else if (/^wikEd(Ref|Templ|TemplNs|CharEntity|Table)(Show)?$/.test(hideTarget.className) === true) {&lt;br /&gt;
			hide = hideTarget;&lt;br /&gt;
			hideContainer = wikEd.GetPreviousSiblingNode(hideTarget);&lt;br /&gt;
			if (hideContainer !== null) {&lt;br /&gt;
				if (/^wikEd(Ref|Templ|CharEntity|Table)Container$/.test(hideContainer.className) === false) {&lt;br /&gt;
					hideContainer = null;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
&lt;br /&gt;
					// get button&lt;br /&gt;
					hideButton = wikEd.GetFirstChildNode(hideContainer);&lt;br /&gt;
					if (hideButton !== null) {&lt;br /&gt;
						if (/^wikEd(Ref|Templ|CharEntity|Table)Button(Show)?\d*$/.test(hideButton.className) === false) {&lt;br /&gt;
							hideButton = null;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// exit if missing elements&lt;br /&gt;
		if ( (hideContainer === null) || (hideButton === null) || (hide === null) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get classes&lt;br /&gt;
		hideButtonClass = hideButton.className;&lt;br /&gt;
		hideClass = hide.className;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// schedule unhide on later shift or ctrl key push&lt;br /&gt;
	if (event.type == &#039;mouseover&#039;) {&lt;br /&gt;
		if (wikEd.config.unhideShift === true) {&lt;br /&gt;
			if ( (event.type == &#039;mouseover&#039;) &amp;amp;&amp;amp; (wikEd.config.unhideShift === true) &amp;amp;&amp;amp; (event.shiftKey === false) &amp;amp;&amp;amp; (event.ctrlKey === false) ) {&lt;br /&gt;
				wikEd.scheduledUnhide = [hide, hideButton];&lt;br /&gt;
				wikEd.frameDocument.addEventListener(&#039;keydown&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
				hideButton.addEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// scheduled unhide on shift or ctrl keydown&lt;br /&gt;
	if (event.type == &#039;keydown&#039;) {&lt;br /&gt;
		if ( (wikEd.scheduledUnhide !== null) &amp;amp;&amp;amp; ( (event.shiftKey === true) || (event.ctrlKey === true) ) ) {&lt;br /&gt;
			hide = wikEd.scheduledUnhide[0];&lt;br /&gt;
			hideButton = wikEd.scheduledUnhide[1];&lt;br /&gt;
			hideButtonClass = hideButton.className;&lt;br /&gt;
			hideClass = hide.className;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// open on hover&lt;br /&gt;
	if ( (event.type == &#039;mouseover&#039;) || ( (event.type == &#039;keydown&#039;) &amp;amp;&amp;amp; (wikEd.scheduledUnhide !== null) ) ) {&lt;br /&gt;
		event.stopPropagation();&lt;br /&gt;
		hideButton.removeEventListener(&#039;mouseover&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
&lt;br /&gt;
		hideClass = hideClass.replace(/Show/, &#039;&#039;) + &#039;Show&#039;;&lt;br /&gt;
		hide.className = hideClass;&lt;br /&gt;
&lt;br /&gt;
		// table cell&lt;br /&gt;
		if (hideClass == &#039;wikEdTableShow&#039;) {&lt;br /&gt;
			var node = hide;&lt;br /&gt;
			while (node !== null) {&lt;br /&gt;
				if ( (node.tagName == &#039;TD&#039;) &amp;amp;&amp;amp; (/^wikEdTable\w+$/.test(node.className) === true) ) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				node = node.parentNode;&lt;br /&gt;
			}&lt;br /&gt;
			if (node !== null) {&lt;br /&gt;
&lt;br /&gt;
				// wait for class change&lt;br /&gt;
				window.setTimeout( function () {&lt;br /&gt;
					node.addEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
				}, 100);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// button and hide&lt;br /&gt;
		else {&lt;br /&gt;
&lt;br /&gt;
			// wait for class change&lt;br /&gt;
			window.setTimeout( function () {&lt;br /&gt;
				hide.addEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
				hideButton.addEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
			}, 100);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// close after hover&lt;br /&gt;
	else if (event.type == &#039;mouseout&#039;) {&lt;br /&gt;
		if ( (hideInto != hideContainer) &amp;amp;&amp;amp; (hideInto != hideButton) &amp;amp;&amp;amp; (hideInto != hide) &amp;amp;&amp;amp; (hideInto != hideCell) ) {&lt;br /&gt;
			if (/^wikEd(Ref|Templ|CharEntity|Table)Button\d*$/.test(hideButton.className) === true) {&lt;br /&gt;
				var hideOut = false;&lt;br /&gt;
				var node = hideInto;&lt;br /&gt;
				while (node !== null) {&lt;br /&gt;
					if (node == wikEd.frameBody) {&lt;br /&gt;
						hideOut = true;&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
					if ( (node == hideContainer) || (node == hide) || (node == hideCell) ) {&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
					node = node.parentNode;&lt;br /&gt;
				}&lt;br /&gt;
				if (hideOut === true) {&lt;br /&gt;
					event.stopPropagation();&lt;br /&gt;
&lt;br /&gt;
					if (hideCell !== null) {&lt;br /&gt;
						hideCell.removeEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						hide.removeEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
						hideButton.removeEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					hideClass = hideClass.replace(/Show/, &#039;&#039;);&lt;br /&gt;
					hide.className = hideClass;&lt;br /&gt;
&lt;br /&gt;
					// wait for class change&lt;br /&gt;
					window.setTimeout( function () {&lt;br /&gt;
						hideButton.addEventListener(&#039;mouseover&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
					}, 100);&lt;br /&gt;
&lt;br /&gt;
					// move cursor out of hidden text&lt;br /&gt;
					wikEd.UnhideCursor(hideContainer, hide);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// hide on click&lt;br /&gt;
	else if (event.type == &#039;click&#039;) {&lt;br /&gt;
		if (/^wikEd(Ref|Templ|CharEntity|Table)ButtonShow\d*$/.test(hideButtonClass) === true) {&lt;br /&gt;
			event.stopPropagation();&lt;br /&gt;
&lt;br /&gt;
			hideClass = hideClass.replace(/Show/, &#039;&#039;);&lt;br /&gt;
			hide.className = hideClass;&lt;br /&gt;
&lt;br /&gt;
			hideButtonClass = hideButtonClass.replace(/Show/, &#039;&#039;);&lt;br /&gt;
			hideButton.className = hideButtonClass;&lt;br /&gt;
			hideButton.title = wikEd.config.text[hideButtonClass.replace(/\d+$/g, &#039;&#039;) + &#039;Tooltip&#039;];&lt;br /&gt;
&lt;br /&gt;
			hideButton.addEventListener(&#039;mouseover&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
&lt;br /&gt;
			// move cursor out of hidden text&lt;br /&gt;
			wikEd.UnhideCursor(hideContainer, hide);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// open on click&lt;br /&gt;
		else if (/^wikEd(Ref|Templ|CharEntity|Table)Button\d*$/.test(hideButtonClass) === true) {&lt;br /&gt;
			event.stopPropagation();&lt;br /&gt;
			hideButton.removeEventListener(&#039;mouseover&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
			hide.removeEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
&lt;br /&gt;
			hideClass = hideClass.replace(/Show/, &#039;&#039;) + &#039;Show&#039;;&lt;br /&gt;
			hide.className = hideClass;&lt;br /&gt;
&lt;br /&gt;
			hideButtonClass = hideButtonClass.replace(/Button(Show)?/, &#039;ButtonShow&#039;);&lt;br /&gt;
			hideButton.className = hideButtonClass;&lt;br /&gt;
			hideButton.title = wikEd.config.text[hideButtonClass.replace(/\d+$/g, &#039;&#039;) + &#039;Tooltip&#039;];&lt;br /&gt;
&lt;br /&gt;
			hideButton.removeEventListener(&#039;mouseout&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// clear scheduled unhide&lt;br /&gt;
	if (wikEd.scheduledUnhide !== null) {&lt;br /&gt;
		wikEd.frameDocument.removeEventListener(&#039;keydown&#039;, wikEd.HideShowHandler, true);&lt;br /&gt;
		wikEd.scheduledUnhide = null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.UnhideCursor: move cursor out of hidden element for wikEd.HideShowHandler&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.UnhideCursor = function (firstHiddenParent, lastHiddenParent) {&lt;br /&gt;
&lt;br /&gt;
	// get selection and clone range&lt;br /&gt;
	var sel = wikEd.GetSelection();&lt;br /&gt;
	var range = sel.getRangeAt(0);&lt;br /&gt;
	if (range !== null) {&lt;br /&gt;
&lt;br /&gt;
		// check if selected text is hidden&lt;br /&gt;
		var startHidden = false;&lt;br /&gt;
		var node = range.startContainer;&lt;br /&gt;
		while (node !== null) {&lt;br /&gt;
			if (node == wikEd.frameBody) {&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			if ( (node == lastHiddenParent) || (node == firstHiddenParent) ) {&lt;br /&gt;
				startHidden = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			node = node.parentNode;&lt;br /&gt;
		}&lt;br /&gt;
		var endHidden = false;&lt;br /&gt;
		var node = range.endContainer;&lt;br /&gt;
		while (node !== null) {&lt;br /&gt;
			if (node == wikEd.frameBody) {&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			if ( (node == lastHiddenParent) || (node == firstHiddenParent) ) {&lt;br /&gt;
				endHidden = true;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			node = node.parentNode;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// unselect hidden text&lt;br /&gt;
		if ( (startHidden === false) &amp;amp;&amp;amp; (endHidden === true) ) {&lt;br /&gt;
			range.setEndBefore(firstHiddenParent);&lt;br /&gt;
		}&lt;br /&gt;
		else if ( (startHidden === true) &amp;amp;&amp;amp; (endHidden === false) ) {&lt;br /&gt;
			range.setStartAfter(lastHiddenParent);&lt;br /&gt;
		}&lt;br /&gt;
		else if ( (startHidden === true) &amp;amp;&amp;amp; (endHidden === true) ) {&lt;br /&gt;
			range.setEndAfter(lastHiddenParent);&lt;br /&gt;
			range.collapse(false);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetText: get the text fragments to manipulate&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetText = function (obj, whichFragment, wikify) {&lt;br /&gt;
&lt;br /&gt;
	// remove dynamically inserted nodes by other scripts&lt;br /&gt;
	wikEd.CleanNodes(wikEd.frameDocument);&lt;br /&gt;
&lt;br /&gt;
	// get selection object&lt;br /&gt;
	if (obj.sel === undefined) {&lt;br /&gt;
		obj.sel = wikEd.GetSelection();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// cursor for the cursor position (always done)&lt;br /&gt;
	if (obj.cursor === undefined) {&lt;br /&gt;
		obj.cursor = {&lt;br /&gt;
			&#039;from&#039;:    &#039;cursor&#039;,&lt;br /&gt;
			&#039;keepSel&#039;: null,&lt;br /&gt;
			&#039;plain&#039;:   &#039;&#039;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// set cursor range&lt;br /&gt;
		obj.cursor.range = wikEd.frameDocument.createRange();&lt;br /&gt;
		wikEd.SetRangeStart(obj.cursor.range, obj.sel.focusNode, obj.sel.focusOffset);&lt;br /&gt;
		obj.cursor.range.collapse(true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// whole for the whole text&lt;br /&gt;
	if (obj.whole === undefined) {&lt;br /&gt;
		if (/whole|selectionWord|selectionLine|selectionPara|focusWord|focusLine|focusPara/.test(whichFragment) === true) {&lt;br /&gt;
			obj.whole = {&lt;br /&gt;
				&#039;plainArray&#039;: [],&lt;br /&gt;
				&#039;plainNode&#039;:  [],&lt;br /&gt;
				&#039;plainStart&#039;: [],&lt;br /&gt;
				&#039;from&#039;:       &#039;whole&#039;,&lt;br /&gt;
				&#039;keepSel&#039;:    null&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// set whole range&lt;br /&gt;
			obj.whole.range = wikEd.frameDocument.createRange();&lt;br /&gt;
			obj.whole.range.setStart(wikEd.frameBody, 0);&lt;br /&gt;
			obj.whole.range.setEnd(wikEd.frameBody, wikEd.frameBody.childNodes.length);&lt;br /&gt;
&lt;br /&gt;
			// get whole plain text&lt;br /&gt;
			wikEd.GetInnerHTML(obj.whole, wikEd.frameBody);&lt;br /&gt;
			obj.whole.code = obj.whole.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.whole, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.whole);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// selection for the selected text&lt;br /&gt;
	if (obj.selection === undefined) {&lt;br /&gt;
		if (/selection\b|selectionWord|selectionLine|selectionPara/.test(whichFragment) === true) {&lt;br /&gt;
			obj.selection = {&lt;br /&gt;
				&#039;from&#039;:    &#039;selection&#039;,&lt;br /&gt;
				&#039;keepSel&#039;: null&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// copy range to document fragment&lt;br /&gt;
			if (obj.sel.rangeCount === 0) {&lt;br /&gt;
				obj.sel.collapse(wikEd.frameBody, 0);&lt;br /&gt;
			}&lt;br /&gt;
			obj.selection.range = obj.sel.getRangeAt(0);&lt;br /&gt;
			var documentFragment = obj.selection.range.cloneContents();&lt;br /&gt;
&lt;br /&gt;
			// get selected text&lt;br /&gt;
			wikEd.GetInnerHTML(obj.selection, documentFragment);&lt;br /&gt;
			obj.selection.code = obj.selection.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.selection, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.selection);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// focusWord, focusLine, and focusPara for the word, line, and paragraph under the cursor&lt;br /&gt;
	if (obj.focusWord === undefined) {&lt;br /&gt;
		if (/focusWord|focusLine|focusPara/.test(whichFragment) === true) {&lt;br /&gt;
			obj.focusWord = {&lt;br /&gt;
				&#039;from&#039;:    &#039;focusWord&#039;,&lt;br /&gt;
				&#039;keepSel&#039;: false,&lt;br /&gt;
				&#039;range&#039;:   wikEd.frameDocument.createRange()&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// setup focusLine object for the line under the cursor&lt;br /&gt;
			obj.focusLine = {&lt;br /&gt;
				&#039;from&#039;:    &#039;focusLine&#039;,&lt;br /&gt;
				&#039;keepSel&#039;: false,&lt;br /&gt;
				&#039;range&#039;:   wikEd.frameDocument.createRange()&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// setup focusPara object for the paragraph under the cursor&lt;br /&gt;
			obj.focusPara = {&lt;br /&gt;
				&#039;from&#039;:    &#039;focusPara&#039;,&lt;br /&gt;
				&#039;keepSel&#039;: false,&lt;br /&gt;
				&#039;range&#039;:   wikEd.frameDocument.createRange()&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// find the word and line boundaries&lt;br /&gt;
			wikEd.FindBoundaries(obj.focusWord, obj.focusLine, obj.focusPara, obj.whole, obj.cursor);&lt;br /&gt;
&lt;br /&gt;
			// get the wikified plain text for the word under the cursor&lt;br /&gt;
			var documentFragment = obj.focusWord.range.cloneContents();&lt;br /&gt;
			wikEd.GetInnerHTML(obj.focusWord, documentFragment);&lt;br /&gt;
			obj.focusWord.code = obj.focusWord.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.focusWord, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.focusWord);&lt;br /&gt;
&lt;br /&gt;
			// get the wikified plain text for the line under the cursor&lt;br /&gt;
			var documentFragment = obj.focusLine.range.cloneContents();&lt;br /&gt;
			wikEd.GetInnerHTML(obj.focusLine, documentFragment);&lt;br /&gt;
			obj.focusLine.code = obj.focusLine.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.focusLine, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.focusLine);&lt;br /&gt;
&lt;br /&gt;
			// get the wikified plain text for the paragraph under the cursor&lt;br /&gt;
			var documentFragment = obj.focusPara.range.cloneContents();&lt;br /&gt;
			wikEd.GetInnerHTML(obj.focusPara, documentFragment);&lt;br /&gt;
			obj.focusPara.code = obj.focusPara.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.focusPara, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.focusPara);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// selectionWord and selectionLine for the complete words and lines under the selection&lt;br /&gt;
	if (obj.selectionWord === undefined) {&lt;br /&gt;
		if (/selectionWord|selectionLine|selectionPara/.test(whichFragment) === true) {&lt;br /&gt;
&lt;br /&gt;
			// setup selectionWord object for the words under the selection&lt;br /&gt;
			obj.selectionWord = {&lt;br /&gt;
				&#039;from&#039;:    &#039;selectionWord&#039;,&lt;br /&gt;
				&#039;keepSel&#039;: false,&lt;br /&gt;
				&#039;range&#039;:   wikEd.frameDocument.createRange(),&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// setup selectionLine object for the lines under the selection&lt;br /&gt;
			obj.selectionLine = {&lt;br /&gt;
				&#039;from&#039;:    &#039;selectionLine&#039;,&lt;br /&gt;
				&#039;keepSel&#039;: false,&lt;br /&gt;
				&#039;range&#039;:   wikEd.frameDocument.createRange(),&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// setup focusPara object for the paragraph under the selection&lt;br /&gt;
			obj.selectionPara = {&lt;br /&gt;
				&#039;from&#039;:    &#039;selectionPara&#039;,&lt;br /&gt;
				&#039;keepSel&#039;: false,&lt;br /&gt;
				&#039;range&#039;:   wikEd.frameDocument.createRange(),&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			// find the word and line boundaries&lt;br /&gt;
			wikEd.FindBoundaries(obj.selectionWord, obj.selectionLine, obj.selectionPara, obj.whole, obj.selection);&lt;br /&gt;
&lt;br /&gt;
			// get the wikified plain text for the words under the selection&lt;br /&gt;
			var documentFragment = obj.selectionWord.range.cloneContents();&lt;br /&gt;
			wikEd.GetInnerHTML(obj.selectionWord, documentFragment);&lt;br /&gt;
			obj.selectionWord.code = obj.selectionWord.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.selectionWord, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.selectionWord);&lt;br /&gt;
&lt;br /&gt;
			// get the wikified plain text for the lines under the selection&lt;br /&gt;
			var documentFragment = obj.selectionLine.range.cloneContents();&lt;br /&gt;
			wikEd.GetInnerHTML(obj.selectionLine, documentFragment);&lt;br /&gt;
			obj.selectionLine.code = obj.selectionLine.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.selectionLine, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.selectionLine);&lt;br /&gt;
&lt;br /&gt;
			// get the wikified plain text for the paragraph under the selection&lt;br /&gt;
			var documentFragment = obj.selectionPara.range.cloneContents();&lt;br /&gt;
			wikEd.GetInnerHTML(obj.selectionPara, documentFragment);&lt;br /&gt;
			obj.selectionPara.code = obj.selectionPara.html;&lt;br /&gt;
			wikEd.RemoveHighlightingWikify(obj.selectionPara, wikify);&lt;br /&gt;
			wikEd.HtmlToPlain(obj.selectionPara);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.Find: custom find function with regexp properties, sets obj.changed.range, uses obj ranges&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.Find = function (obj, findText, caseSensitive, backwards, wrap, useRegExp) {&lt;br /&gt;
&lt;br /&gt;
	var found = false;&lt;br /&gt;
&lt;br /&gt;
	// get selection&lt;br /&gt;
	if (obj.sel === undefined) {&lt;br /&gt;
		obj.sel = wikEd.GetSelection();&lt;br /&gt;
	}&lt;br /&gt;
	if (obj.sel.rangeCount === 0) {&lt;br /&gt;
		obj.sel.collapse(wikEd.frameBody, 0);&lt;br /&gt;
	}&lt;br /&gt;
	var range = obj.sel.getRangeAt(0);&lt;br /&gt;
&lt;br /&gt;
	if (obj.changed === undefined) {&lt;br /&gt;
		obj.changed = {};&lt;br /&gt;
	}&lt;br /&gt;
	obj.selectChanged = false;&lt;br /&gt;
&lt;br /&gt;
	// empty the range to avoid error messages for reverse direction ranges&lt;br /&gt;
	obj.changed.range = wikEd.frameDocument.createRange();&lt;br /&gt;
&lt;br /&gt;
	// regexp instead of plain text search for browser lacking .find (Opera), built in .find() ignores newlines&lt;br /&gt;
	if (useRegExp !== true) {&lt;br /&gt;
		if (typeof wikEd.frameWindow.find != &#039;function&#039;) {&lt;br /&gt;
			useRegExp = true;&lt;br /&gt;
			findText = findText.replace(/([\\^$*+?.()\[\]{}:=!|,\-])/g, &#039;\\$1&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create the regexp&lt;br /&gt;
	var regExpFind;&lt;br /&gt;
	if (useRegExp === true) {&lt;br /&gt;
		var regExpFlags = &#039;gm&#039;;&lt;br /&gt;
		if (caseSensitive !== true) {&lt;br /&gt;
			regExpFlags += &#039;i&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		try {&lt;br /&gt;
			regExpFind = new RegExp(findText, regExpFlags);&lt;br /&gt;
		}&lt;br /&gt;
		catch (exception) {&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// use the fast built-in find function for non-regexp searches; Opera does not have .find&lt;br /&gt;
	if (useRegExp !== true) {&lt;br /&gt;
&lt;br /&gt;
	// parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog)&lt;br /&gt;
		found = wikEd.frameWindow.find(findText, caseSensitive, backwards, wrap, false, true, false);&lt;br /&gt;
		if (found === true) {&lt;br /&gt;
			range = obj.sel.getRangeAt(0);&lt;br /&gt;
		}&lt;br /&gt;
		obj.changed.range = range;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// slow javascript regexp find and replace&lt;br /&gt;
	else {&lt;br /&gt;
&lt;br /&gt;
		// perform find&lt;br /&gt;
		if (obj.plainArray === undefined) {&lt;br /&gt;
			wikEd.ParseDOM(obj, wikEd.frameBody);&lt;br /&gt;
		}&lt;br /&gt;
		var regExpMatch;&lt;br /&gt;
&lt;br /&gt;
		// find next, search to the right&lt;br /&gt;
		if (backwards === false) {&lt;br /&gt;
&lt;br /&gt;
			// set start position for search to right&lt;br /&gt;
			regExpFind.lastIndex = obj.plainFocus;&lt;br /&gt;
&lt;br /&gt;
			// execute the regexp search to the right&lt;br /&gt;
			regExpMatch = regExpFind.exec(obj.plain);&lt;br /&gt;
&lt;br /&gt;
			// remember position for repeated searches&lt;br /&gt;
			obj.plainFocus = regExpFind.lastIndex;&lt;br /&gt;
&lt;br /&gt;
			// wrap around, start at beginning&lt;br /&gt;
			if ( (wrap === true) &amp;amp;&amp;amp; (regExpMatch === null) ) {&lt;br /&gt;
				regExpFind.lastIndex = 0;&lt;br /&gt;
				regExpMatch = regExpFind.exec(obj.plain);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// find previous, search to the left&lt;br /&gt;
		else {&lt;br /&gt;
&lt;br /&gt;
			// cycle through the matches to the left&lt;br /&gt;
			var regExpMatchNext;&lt;br /&gt;
			do {&lt;br /&gt;
				regExpMatch = regExpMatchNext;&lt;br /&gt;
				regExpMatchNext = regExpFind.exec(obj.plain);&lt;br /&gt;
				if (regExpMatchNext === null) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			} while (regExpMatchNext.index &amp;lt; obj.plainAnchor);&lt;br /&gt;
&lt;br /&gt;
			// wrap around, find last occurrence&lt;br /&gt;
			if ( (wrap === true) &amp;amp;&amp;amp; (regExpMatch === null) ) {&lt;br /&gt;
				do {&lt;br /&gt;
					regExpMatch = regExpMatchNext;&lt;br /&gt;
					regExpMatchNext = regExpFind.exec(obj.plain);&lt;br /&gt;
				} while (regExpMatchNext !== null);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// select the find&lt;br /&gt;
		if (regExpMatch !== null) {&lt;br /&gt;
			found = true;&lt;br /&gt;
&lt;br /&gt;
			// start&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			while ( (obj.plainStart[i + 1] &amp;lt;= regExpMatch.index) &amp;amp;&amp;amp; (obj.plainStart[i + 1] !== null) ) {&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// end&lt;br /&gt;
			var j = i;&lt;br /&gt;
			while ( (obj.plainStart[j + 1] &amp;lt;= regExpMatch.index + regExpMatch[0].length) &amp;amp;&amp;amp; (obj.plainStart[j + 1] !== null) ) {&lt;br /&gt;
				j ++;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var startNode = obj.plainNode[i];&lt;br /&gt;
			var startOffset = regExpMatch.index - obj.plainStart[i];&lt;br /&gt;
			var endNode = obj.plainNode[j];&lt;br /&gt;
			var endOffset = regExpMatch.index + regExpMatch[0].length - obj.plainStart[j];&lt;br /&gt;
			wikEd.SetRange(obj.changed.range, startNode, startOffset, endNode, endOffset);&lt;br /&gt;
			obj.selectChanged = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return found;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ScrollToSelection: scroll iframe range into viewport&lt;br /&gt;
//   removing helper nodes gives Error: Node was not found = NS_ERROR_DOM_NOT_FOUND_ERR for certain undo actions&lt;br /&gt;
//   adding nodes breaks the undo history in Chrome and Opera&lt;br /&gt;
&lt;br /&gt;
wikEd.ScrollToSelection = function () {&lt;br /&gt;
&lt;br /&gt;
	// get selection and clone range&lt;br /&gt;
	var obj = {};&lt;br /&gt;
	obj.sel = wikEd.GetSelection();&lt;br /&gt;
	if (obj.sel.rangeCount === 0) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get selection plain text&lt;br /&gt;
	var range = obj.sel.getRangeAt(0);&lt;br /&gt;
	var documentFragment = range.cloneContents();&lt;br /&gt;
	wikEd.GetInnerHTML(obj, documentFragment);&lt;br /&gt;
	var plainText = obj.plain;&lt;br /&gt;
	plainText = plainText.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
	plainText = plainText.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
	plainText = plainText.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// select using backwards built-in find&lt;br /&gt;
	if ( (typeof wikEd.frameWindow.find == &#039;function&#039;) &amp;amp;&amp;amp; (plainText.length &amp;gt; 0) ) {&lt;br /&gt;
		obj.sel.collapseToEnd();&lt;br /&gt;
&lt;br /&gt;
		// Chrome; wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)&lt;br /&gt;
		var found = wikEd.Find(obj, plainText, true, true, false, false);&lt;br /&gt;
&lt;br /&gt;
		// Firefox (removes \n)&lt;br /&gt;
		if (found === false) {&lt;br /&gt;
			wikEd.Find(obj, range.toString(), true, true, false, false);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// reinstate original range if it starts or ends with \n or spaces&lt;br /&gt;
		if (/^(\n| )|(\n| )$/.test(plainText) === true) {&lt;br /&gt;
			obj.sel.removeAllRanges();&lt;br /&gt;
			obj.sel.addRange(range);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// select empty range using backwards built-in find for previous character&lt;br /&gt;
	else if ( (typeof wikEd.frameWindow.find == &#039;function&#039;) &amp;amp;&amp;amp; (plainText.length === 0) ) {&lt;br /&gt;
		var backwards = true;&lt;br /&gt;
&lt;br /&gt;
		// get plain text from start to selection&lt;br /&gt;
		var rangeClone = range.cloneRange();&lt;br /&gt;
		rangeClone.setStartBefore(wikEd.frameBody.firstChild);&lt;br /&gt;
		var documentFragment = rangeClone.cloneContents();&lt;br /&gt;
		wikEd.GetInnerHTML(obj, documentFragment);&lt;br /&gt;
		var plainText = obj.plain;&lt;br /&gt;
		plainText = plainText.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
		plainText = plainText.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
		plainText = plainText.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
		plainText = plainText.replace(/^([\s\S]*?)([^\n]\n*)$/, &#039;$2&#039;);&lt;br /&gt;
&lt;br /&gt;
		// get plain text from selection to end for potentially less newlines&lt;br /&gt;
		if (plainText.length &amp;gt; 1) {&lt;br /&gt;
			var plainTextBack = plainText;&lt;br /&gt;
			var obj = {};&lt;br /&gt;
&lt;br /&gt;
			var rangeClone = range.cloneRange();&lt;br /&gt;
			rangeClone.setEndAfter(wikEd.frameBody.lastChild);&lt;br /&gt;
			var documentFragment = rangeClone.cloneContents();&lt;br /&gt;
			wikEd.GetInnerHTML(obj, documentFragment);&lt;br /&gt;
			var plainText = obj.plain;&lt;br /&gt;
			plainText = plainText.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
			plainText = plainText.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
			plainText = plainText.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
			plainText = plainText.replace(/^(\n*[^\n])([\s\S]*?)$/, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
			// backward or forward find&lt;br /&gt;
			if (plainTextBack.length &amp;gt; plainText.length) {&lt;br /&gt;
				backwards = false;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				plainText = plainTextBack;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Chrome; parameters: wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)&lt;br /&gt;
		var found = wikEd.Find(obj, plainText, true, backwards, false, false);&lt;br /&gt;
&lt;br /&gt;
		// Firefox&lt;br /&gt;
		if ( (found === false) &amp;amp;&amp;amp; (/\n/.test(plainText) === true) ) {&lt;br /&gt;
			plainText = plainText.replace(/\n/g, &#039;&#039;);&lt;br /&gt;
			plainText = plainText.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
			wikEd.Find(obj, plainText, true, backwards, false, false);&lt;br /&gt;
		}&lt;br /&gt;
		if (backwards === true) {&lt;br /&gt;
			obj.sel.collapseToEnd();&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			obj.sel.collapseToStart();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// use inserted spans as scroll marker, breaks undo history in Chrome and Opera&lt;br /&gt;
	else {&lt;br /&gt;
		var rangeStart = range.cloneRange();&lt;br /&gt;
		var rangeEnd = range.cloneRange();&lt;br /&gt;
&lt;br /&gt;
		// spans to be temporarily inserted before and after selection range to get range position&lt;br /&gt;
		wikEd.insertCounter ++;&lt;br /&gt;
		var scrollStartNode = wikEd.frameDocument.createElement(&#039;span&#039;);&lt;br /&gt;
		scrollStartNode.className = &#039;wikEdScrollBefore&#039;;&lt;br /&gt;
		scrollStartNode.id = &#039;wikEdScrollBefore&#039; + wikEd.insertCounter;&lt;br /&gt;
		var scrollEndNode = wikEd.frameDocument.createElement(&#039;span&#039;);&lt;br /&gt;
		scrollEndNode.className = &#039;wikEdScrollAfter&#039;;&lt;br /&gt;
		scrollEndNode.id = &#039;wikEdScrollAfter&#039; + wikEd.insertCounter;&lt;br /&gt;
&lt;br /&gt;
		// get the range border nodes and offsets&lt;br /&gt;
		var startNode = range.startContainer;&lt;br /&gt;
		var startOffset = range.startOffset;&lt;br /&gt;
		var endNode = range.endContainer;&lt;br /&gt;
		var endOffset = range.endOffset;&lt;br /&gt;
&lt;br /&gt;
		var startLength;&lt;br /&gt;
		if (startNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
			startLength = startNode.nodeValue.length;&lt;br /&gt;
		}&lt;br /&gt;
		var endLength;&lt;br /&gt;
		if (endNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
			endLength = endNode.nodeValue.length;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// insert end node&lt;br /&gt;
		if (endNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
			if (endOffset === 0) {&lt;br /&gt;
				endNode.parentNode.insertBefore(scrollEndNode, endNode);&lt;br /&gt;
			}&lt;br /&gt;
			else if (endOffset == endLength - 1) {&lt;br /&gt;
				endNode.parentNode.insertBefore(scrollEndNode, endNode.nextSibling);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				rangeEnd.collapse(false);&lt;br /&gt;
				rangeEnd.insertNode(scrollEndNode);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			var refNode = endNode.childNodes.item(endOffset);&lt;br /&gt;
			endNode.insertBefore(scrollEndNode, refNode);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// insert start node&lt;br /&gt;
		if (startNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
			if (startOffset === 0) {&lt;br /&gt;
				startNode.parentNode.insertBefore(scrollStartNode, startNode);&lt;br /&gt;
			}&lt;br /&gt;
			else if (startOffset == startLength - 1) {&lt;br /&gt;
				startNode.parentNode.insertBefore(scrollStartNode, startNode.nextSibling);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
&lt;br /&gt;
				// collapse as a Firefox bug work around; https://stackoverflow.com/questions/665676&lt;br /&gt;
				rangeStart.collapse(true);&lt;br /&gt;
				rangeStart.insertNode(scrollStartNode);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			var refNode = startNode.childNodes.item(startOffset);&lt;br /&gt;
			startNode.insertBefore(scrollStartNode, refNode);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		wikEd.ScrollToNodes(scrollStartNode, scrollEndNode);&lt;br /&gt;
&lt;br /&gt;
		// set selection&lt;br /&gt;
		range.setStartBefore(scrollStartNode);&lt;br /&gt;
		range.setEndAfter(scrollEndNode);&lt;br /&gt;
		obj.sel.removeAllRanges();&lt;br /&gt;
		obj.sel.addRange(range);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ScrollToNodes: scroll iframe range into viewport&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ScrollToNodes = function (scrollStartNode, scrollEndNode) {&lt;br /&gt;
&lt;br /&gt;
	// absolute span for line height detection (Opera and Chrome do not vertically align empty span at bottom)&lt;br /&gt;
	var lineHeightNode = wikEd.frameDocument.createElement(&#039;span&#039;);&lt;br /&gt;
	lineHeightNode.innerHTML = &#039;&amp;amp;nbsp;&#039;;&lt;br /&gt;
	lineHeightNode.className = &#039;wikEdScrollLineHeight&#039;;&lt;br /&gt;
	scrollEndNode.appendChild(lineHeightNode);&lt;br /&gt;
	var lineHeight = lineHeightNode.clientHeight;&lt;br /&gt;
	lineHeightNode.innerHTML = &#039;&#039;;&lt;br /&gt;
	scrollEndNode.removeChild(lineHeightNode);&lt;br /&gt;
&lt;br /&gt;
	// scroll to node coordinates&lt;br /&gt;
	scrollStartNode.style.verticalAlign = &#039;top&#039;;&lt;br /&gt;
	scrollEndNode.style.verticalAlign = &#039;top&#039;;&lt;br /&gt;
	var startOffsetLeft = wikEd.GetOffsetLeft(scrollStartNode);&lt;br /&gt;
	var startOffsetTop  = wikEd.GetOffsetTop(scrollStartNode);&lt;br /&gt;
	var endOffsetRight  = wikEd.GetOffsetLeft(scrollEndNode);&lt;br /&gt;
	var endOffsetBottom = wikEd.GetOffsetTop(scrollEndNode);&lt;br /&gt;
	scrollStartNode.style.verticalAlign = &#039;baseline&#039;;&lt;br /&gt;
	scrollEndNode.style.verticalAlign = &#039;baseline&#039;;&lt;br /&gt;
	var frameScrollTop  = wikEd.frameBody.scrollTop;&lt;br /&gt;
	var frameScrollLeft = wikEd.frameBody.scrollLeft;&lt;br /&gt;
	var x = frameScrollLeft;&lt;br /&gt;
	var y = frameScrollTop;&lt;br /&gt;
&lt;br /&gt;
	// current scroll position&lt;br /&gt;
&lt;br /&gt;
	// selection above viewport&lt;br /&gt;
	if (endOffsetBottom &amp;lt; frameScrollTop) {&lt;br /&gt;
		y = startOffsetTop;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// selection below viewport&lt;br /&gt;
	else if (startOffsetTop &amp;gt; frameScrollTop + wikEd.frameBody.clientHeight) {&lt;br /&gt;
		y = endOffsetBottom - wikEd.frameBody.clientHeight + lineHeight;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// selection left of viewport&lt;br /&gt;
	if (endOffsetRight &amp;lt; frameScrollLeft) {&lt;br /&gt;
		if (endOffsetRight &amp;lt;= wikEd.frameBody.clientWidth) {&lt;br /&gt;
			x = 0;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			x = startOffsetLeft;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// selection right of viewport&lt;br /&gt;
	else if (startOffsetLeft &amp;gt; frameScrollLeft + wikEd.frameBody.clientWidth) {&lt;br /&gt;
		x = endOffsetRight - wikEd.frameBody.clientWidth;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// do scroll&lt;br /&gt;
	wikEd.frameWindow.scrollTo(x, y);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RemoveTableModeHighlighting: strip table html, add linebreaks back&lt;br /&gt;
//   expects &amp;lt;br&amp;gt; instead of \n&lt;br /&gt;
&lt;br /&gt;
wikEd.RemoveTableModeHighlighting = function (html) {&lt;br /&gt;
&lt;br /&gt;
	// add linebreaks back (class=&amp;quot;wikEdTable...BR&amp;quot;)&lt;br /&gt;
	html = html.replace(/(&amp;lt;(br)\b[^&amp;gt;]*?\bclass=&amp;quot;wikEdTable(BR)&amp;quot;[^&amp;gt;]*?&amp;gt;)/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
	html = html.replace(/(&amp;lt;(span)\b[^&amp;gt;]*?\bclass=&amp;quot;wikEdTable(Tag|Caption|Row|Header|Cell)BR&amp;quot;[^&amp;gt;]*?&amp;gt;)/g, &#039;&amp;lt;br&amp;gt;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// mark tbody&lt;br /&gt;
	html = html.replace(/(&amp;lt;table\b[^&amp;gt;]*?\bclass=&amp;quot;wikEdTable\w+&amp;quot;[^&amp;gt;]*?&amp;gt;&amp;lt;tbody\b)([^&amp;gt;]*&amp;gt;)/g, &#039;$1 class=&amp;quot;wikEdTableMode&amp;quot;$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove table mode tags&lt;br /&gt;
	html = wikEd.RemoveTag(html, &#039;table&#039;, /\bclass=&amp;quot;wikEdTable\w+&amp;quot;/, &#039;&#039;, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
	html = wikEd.RemoveTag(html, &#039;div|tbody|caption|tr|th|td|span&#039;, /\bclass=&amp;quot;wikEdTable\w+&amp;quot;/);&lt;br /&gt;
&lt;br /&gt;
	return html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.Textify: strip html off of text&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.Textify = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	// convert html to plain&lt;br /&gt;
	obj.plain = obj.html;&lt;br /&gt;
&lt;br /&gt;
	// conserve spaces and linebreaks in &amp;lt;pre&amp;gt; tags&lt;br /&gt;
	obj.plain = obj.plain.replace(/(&amp;lt;pre\b[^&amp;gt;]*&amp;gt;)((.|\n)*?)(&amp;lt;\/pre&amp;gt;)/g,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p2 = p2.replace(/ /g, &#039;\x03&#039;);&lt;br /&gt;
			p2 = p2.replace(/\n/g, &#039;\x04&#039;);&lt;br /&gt;
			return p1 + p2 + p4;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove linebreaks&lt;br /&gt;
	obj.plain = obj.plain.replace(/ \n|\n /g, &#039; &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\n/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	// delete content tags&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;(style|script|object|applet|embed)\b[^&amp;gt;]*&amp;gt;.*?&amp;lt;\/\1&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// delete MS-Office tags&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;((w:|m:)(\w+))[^&amp;gt;]*&amp;gt;.*?&amp;lt;\/\1&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove tablemode highlighting code&lt;br /&gt;
	obj.plain = wikEd.RemoveTableModeHighlighting(obj.plain);&lt;br /&gt;
&lt;br /&gt;
	// convert &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt; to &amp;lt;br&amp;gt; for Safari, Chrome, and WebKit&lt;br /&gt;
	if ( (wikEd.safari === true) || (wikEd.chrome === true) || (wikEd.webkit === true) ) {&lt;br /&gt;
		obj.plain = wikEd.DivToBr(obj.plain);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// newlines&lt;br /&gt;
	obj.plain = obj.plain.replace(/[\n ]*&amp;lt;br\b[^&amp;gt;]*&amp;gt;[\n ]*()/g, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove empty lines from block tags&lt;br /&gt;
	obj.plain = obj.plain.replace(/(&amp;lt;(blockquote|center|div|p|pre|gallery)\b[^&amp;gt;]*&amp;gt;)[\s\x00]+/gi, &#039;$1&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/[\s\x00]+(&amp;lt;\/(blockquote|center|div|p|pre|gallery|syntaxhighlight|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)&amp;gt;)/gi, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove highlighting pre tags&lt;br /&gt;
	obj.plain = wikEd.RemoveTag(obj.plain, &#039;pre&#039;, /\bclass=&amp;quot;wikEd[\w\/]+&amp;quot;/);&lt;br /&gt;
&lt;br /&gt;
	// blocks&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;\/?(address|blockquote|center|div|hr|isindex|p|pre)\b[^&amp;gt;]*&amp;gt;/g, &#039;\x00\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// keep headings only if starting with a newline&lt;br /&gt;
	obj.plain = obj.plain.replace(/[\s|\x00]*(^|\n|\x00)[\s|\x00]*&amp;lt;h[1-6]\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/h[1-6]&amp;gt;[\s|\x00]*()/g, &#039;\x00\x00$2\x00\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// lists&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;\/?(dir|dl|menu|ol|ul)\b[^&amp;gt;]*&amp;gt;/g, &#039;\x00&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;\/(dd|dt|li)&amp;gt;/g, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// forms&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;\/?(select|textarea)\b[^&amp;gt;]*&amp;gt;/g, &#039;\x00&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;\/(option|legend|optgroup)&amp;gt;/g, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// tables&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;\/?(table|caption)\b[^&amp;gt;]*&amp;gt;/g, &#039;\x00&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;\/(tr|th|td)&amp;gt;/g, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// finish html to plain conversion&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;[^&amp;gt;]*&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// recover table html&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x01/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x02/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove spaces&lt;br /&gt;
	obj.plain = obj.plain.replace(/[ \t\xa0]+(\x00)/g, &#039;$1&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/(\x00)[ \t\xa0]+/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// trim down \x00 and \n&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x00+\n/g, &#039;\n&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\n\x00+/g, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// pasting external content as inline&lt;br /&gt;
	obj.plain = obj.plain.replace(/^\x00+|\x00+$/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	obj.plain = obj.plain.replace(/\n*\x00(\x00|\n)+/g, &#039;\n\n&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x00/g, &#039;\n&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/(&amp;lt;\/table&amp;gt;\n)\n+/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// recover spaces and linebreaks from &amp;lt;pre&amp;gt; tags&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x03/g, &#039; &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x04/g, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove empty lines and spaces from article start and end&lt;br /&gt;
	if (obj.from == &#039;whole&#039;) {&lt;br /&gt;
		obj.plain = obj.plain.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InactiveButtons: grey out inactive buttons, called after every change and click&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InactiveButtons = function () {&lt;br /&gt;
&lt;br /&gt;
	// read only&lt;br /&gt;
	if (wikEd.readOnly === true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// undo&lt;br /&gt;
	if (wikEd.frameDocument.queryCommandEnabled(&#039;undo&#039;) === true ) {&lt;br /&gt;
		document.getElementById(&#039;wikEdUndo&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
		document.getElementById(&#039;wikEdUndoAll&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		document.getElementById(&#039;wikEdUndo&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
		document.getElementById(&#039;wikEdUndoAll&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// redo&lt;br /&gt;
	if (wikEd.frameDocument.queryCommandEnabled(&#039;redo&#039;) === true ) {&lt;br /&gt;
		document.getElementById(&#039;wikEdRedo&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		document.getElementById(&#039;wikEdRedo&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// redo all&lt;br /&gt;
	if (wikEd.lastVersion !== null) {&lt;br /&gt;
		document.getElementById(&#039;wikEdRedoAll&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		document.getElementById(&#039;wikEdRedoAll&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixBasic: fix characters, spaces, empty lines, certain headings, needed for all fixing functions&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixBasic = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	// preserve spaces and content in pre, syntaxhighlight, source, and nowiki&lt;br /&gt;
	obj.plain = obj.plain.replace(/(&amp;amp;lt;(syntaxhighlight|source|pre|nowiki)\b[^\/]*?&amp;amp;gt;)((.|\n)*?)(&amp;amp;lt;\/\2&amp;amp;gt;)/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5) {&lt;br /&gt;
			p3 = p3.replace(/([\[\]{}=*#:;|&amp;amp;])/g, &#039;\x00$1\x00&#039;);&lt;br /&gt;
			if (/^(syntaxhighlight|source|pre)$/i.test(p2) === true) {&lt;br /&gt;
				p3 = p3.replace(/ /g, &#039;\x01&#039;);&lt;br /&gt;
				p3 = p3.replace(/\n/g, &#039;\x02&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			return p1 + p3 + p5;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// non-breaking space character to normal space&lt;br /&gt;
	obj.plain = obj.plain.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	// tab to space&lt;br /&gt;
	obj.plain = obj.plain.replace(/ *\t[ \t]*()/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove trailing spaces&lt;br /&gt;
	obj.plain = obj.plain.replace(/([^\n])(\t| |&amp;amp;nbsp;)+(?=(\n|$))/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// empty line before and after headings, spaces around word (lookahead), remove bold, italics, and extra =&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n)+(=+) *(.*?) *(=+)(?=(\n|$))/g,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p3 = p3.replace(/&#039;{2,}/g, &#039;&#039;);&lt;br /&gt;
			return &#039;\n\n&#039; + p2 + &#039; &#039; + p3 + &#039; &#039; + p2 + &#039;\n\n&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// uppercase well known headings&lt;br /&gt;
	var regExp = new RegExp(&#039;\\n=+ &#039; + wikEd.config.text[&#039;External links&#039;] + &#039;? =+\\n&#039;, &#039;gi&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;\n== &#039; + wikEd.config.text[&#039;External links&#039;] + &#039; ==\n&#039;);&lt;br /&gt;
	regExp = new RegExp(&#039;\\n=+ &#039; + wikEd.config.text[&#039;See also&#039;] + &#039; =+\\n&#039;, &#039;gi&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;\n== &#039; + wikEd.config.text[&#039;See also&#039;] + &#039; ==\n&#039;);&lt;br /&gt;
	regExp = new RegExp(&#039;\\n=+ &#039; + wikEd.config.text.References + &#039;? =+\\n&#039;, &#039;gi&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;\n== &#039; + wikEd.config.text.References + &#039; ==\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// add space after * # : ; (list) spare  #{| and #REDIRECT&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n)#(REDIRECT)\b/gi, &#039;$1\x03$2&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n):+\{\|/g,&lt;br /&gt;
		function(p, p1) {&lt;br /&gt;
			p = p.replace(/:/g, &#039;\x04&#039;);&lt;br /&gt;
			return p;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n)([*#:;]+)(?![ \n*#:;\x00])/g, &#039;$1$2 &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x03/g, &#039;#&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x04/g, &#039;:&#039;);&lt;br /&gt;
&lt;br /&gt;
	// add space after table markup {| |- |+ |&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n)([*#:;]*)(\{\||\|-|\|\+|\|(?!(\}|-|\+)))(?!( |\n|\x00|$))/g, &#039;$1$2$3 &#039;);&lt;br /&gt;
&lt;br /&gt;
	// empty line before and after tables&lt;br /&gt;
	obj.plain = obj.plain.replace(/\n+(\{\|)/g, &#039;\n\n$1&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/(\n\|\}([^\}]|$)) *(.*)[\n|$]+/g, &#039;$1\n\n$3\n\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// empty line before and after lists&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n)([^*#:;\n].*)(?=\n[*#:;])/g, &#039;$1$2\n\n&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n)([*#:;].*?)(?=\n[^*#:;\n])/g, &#039;$1$2\n\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// split into lines and change single lines, used to handle tables&lt;br /&gt;
	var lines = obj.plain.split(&#039;\n&#039;);&lt;br /&gt;
	obj.plain = &#039;&#039;;&lt;br /&gt;
	var tableFlag = false;&lt;br /&gt;
	var preFlag = false;&lt;br /&gt;
	for (var i = 0; i &amp;lt; lines.length; i ++) {&lt;br /&gt;
		var line = lines[i];&lt;br /&gt;
&lt;br /&gt;
		// line not starting with a blank&lt;br /&gt;
		if (/^ /.test(line) === false) {&lt;br /&gt;
			preFlag = false;&lt;br /&gt;
&lt;br /&gt;
			// detect table&lt;br /&gt;
			if (/^(\{\||\!|\|[^}])/.test(line) === true) {&lt;br /&gt;
				tableFlag = true;&lt;br /&gt;
			}&lt;br /&gt;
			else if (/^\|\}/.test(line) === true) {&lt;br /&gt;
				tableFlag = false;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// changes only to be done in tables&lt;br /&gt;
			if (tableFlag === true) {&lt;br /&gt;
&lt;br /&gt;
				// add spaces around ||&lt;br /&gt;
				line = line.replace(/ *\|\| *()/g, &#039; || &#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// changes not to be done in tables&lt;br /&gt;
			else {&lt;br /&gt;
&lt;br /&gt;
				// empty line before and after images, Media links stay inline&lt;br /&gt;
				var regExp = new RegExp(&#039;^(\\[\\[(Image|File|&#039; + wikEd.config.text[&#039;wikicode Image&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;):.*?\\]\\])&#039;, &#039;ig&#039;);&lt;br /&gt;
				line = line.replace(regExp, &#039;\n$1&#039;);&lt;br /&gt;
&lt;br /&gt;
				regExp = new RegExp(&#039;(\\[\\[(Image|File|&#039; + wikEd.config.text[&#039;wikicode Image&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;):.*?(\\[\\[.*?\\]\\].*?)*\\]\\])$&#039;, &#039;ig&#039;);&lt;br /&gt;
				line = line.replace(regExp, &#039;$1\n&#039;);&lt;br /&gt;
&lt;br /&gt;
				// empty line before and after includes&lt;br /&gt;
				line = line.replace(/^(\{\{.*?\}\})$/g, &#039;\n$1\n&#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// line starting with blank&lt;br /&gt;
		else {&lt;br /&gt;
&lt;br /&gt;
			// detect preformatted blocks&lt;br /&gt;
			if (/^ +\S/.test(line) === true) {&lt;br /&gt;
				preFlag = true;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// add &amp;lt;br&amp;gt; to preformatted empty line&lt;br /&gt;
			if (preFlag === true) {&lt;br /&gt;
				line = line.replace(/^( +)$/g, &#039;$1&amp;amp;lt;br&amp;amp;gt;&#039;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// concatenate the lines&lt;br /&gt;
		obj.plain += line;&lt;br /&gt;
		if (i &amp;lt; lines.length - 1) {&lt;br /&gt;
			obj.plain += &#039;\n&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove spaces in empty lines&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|\n)( |&amp;amp;nbsp;|\t)+(?=(\n|$))/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove underscores in wikilinks&lt;br /&gt;
	obj.plain = obj.plain.replace(/\[\[(.*?)((\|.*?)|)\]\]/g,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			p1 = p1.replace(/_/g, &#039; &#039;);&lt;br /&gt;
			return &#039;[[&#039; + p1 + p2 + &#039;]]&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove spaces in wikilinks, protect [[xxx| ]]&lt;br /&gt;
	obj.plain = obj.plain.replace(/\[\[ *([^\|\[\]]*?) *\| +\]\]/g, &#039;[[$1|\x03]]&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\[\[ *([^\|\[\]]*?) *\| *([^\[\][]*?) *\]\]/g, &#039;[[$1|$2]]&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\[\[ *([^\|\[\]]*) *\]\]/g, &#039;[[$1]]&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x03/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove spaces in external links&lt;br /&gt;
	obj.plain = obj.plain.replace(/\[ *(.*?) *\](?!\])/g, &#039;[$1]&#039;);&lt;br /&gt;
&lt;br /&gt;
	// no space around pipes before curly brackets&lt;br /&gt;
	obj.plain = obj.plain.replace(/ +\| +\}\}/g, &#039;|}}&#039;);&lt;br /&gt;
&lt;br /&gt;
	// no empty line between headings and includes&lt;br /&gt;
	obj.plain = obj.plain.replace(/\n(=+ .*? =+\n)\n+(\{\{.*?\}\})/g, &#039;\n$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	// spaces in comments&lt;br /&gt;
	obj.plain = obj.plain.replace(/(&amp;amp;lt;!--) *((.|\n)*?) *(--&amp;amp;gt;)/g, &#039;$1 $2 $4&#039;);&lt;br /&gt;
&lt;br /&gt;
	// empty line before and after categories&lt;br /&gt;
	var regExp = new RegExp(&#039;( |\\n)*(\\[\\[(Category|&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;)\\s*:[^\\n]*?\\]\\])( |\\n)*&#039;, &#039;gi&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;\n\n$2\n\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// categories not separated by empty lines (lookahead)&lt;br /&gt;
	regExp = new RegExp(&#039;(\\[\\[(Category|&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;)\\s*:[^\\n]*?\\]\\])\\n*(?=\\[\\[(Category|&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;)\\s*:[^\\n]*?\\]\\])&#039;, &#039;gi&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// single empty lines only&lt;br /&gt;
	obj.plain = obj.plain.replace(/\n{3,}/g, &#039;\n\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove leading and trailing newlines&lt;br /&gt;
	obj.plain = obj.plain.replace(/^\n+/, &#039;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\n{2,}$/, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// preserved markup and spaces&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x00/g, &#039;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x01/g, &#039; &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x02/g, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixPunct: remove (or add) space before .,:;&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixPunct = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	// protect punctuation in charents&lt;br /&gt;
	obj.plain = obj.plain.replace(/(&amp;amp;([a-zA-Z0-9]{2,10}|#[0-9]{2,7}))(;)/g, &#039;$1\x00$3&#039;);&lt;br /&gt;
&lt;br /&gt;
	// protect punctuation in URLs&lt;br /&gt;
	var regExp = new RegExp(&#039;((\\bhttps?://|\\bftp://|\\birc://|\\bgopher://|\\bnews:|\\bmailto:|\\bfile://|//)[!#%&amp;amp;()+,\\-./:;=?@~&#039; + wikEd.letters + &#039;_0-9]*)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p, p1, p2) {&lt;br /&gt;
			p = p.replace(/([.,:;?!](?!$))/g, &#039;\x00$1&#039;);&lt;br /&gt;
			return p;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// protect punctuation in filenames&lt;br /&gt;
	regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\\-])([.,:;?!])(?=([a-zA-Z]{2,4})([\\s:;?!.,()\\[\\]{}|]|$))&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1\x00$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	// protect punctuation in article names&lt;br /&gt;
	obj.plain = obj.plain.replace(/(\[\[|\{\{)([^\]}|\n]*)/g,&lt;br /&gt;
		function(p, p1, p2) {&lt;br /&gt;
			p = p.replace(/([.,:;?!])/g, &#039;\x00$1&#039;);&lt;br /&gt;
			return p;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// protect punctuation in single letter abbreviations (e.g. U.S.) (language specific behaviour)&lt;br /&gt;
	regExp = new RegExp(&#039;(^|[\\s\&#039;&amp;quot;”\\[{(])([&#039; + wikEd.letters + &#039;][.,:;]){2,}&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p) {&lt;br /&gt;
			p = p.replace(/([.,:;])/g, &#039;\x00$1&#039;);&lt;br /&gt;
			return p;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// preserve double spaces after dot&lt;br /&gt;
	obj.plain = obj.plain.replace(/([.!?]) {2}(?=\S)/g, &#039;$1\x01\x01&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove spaces before punctuation&lt;br /&gt;
	if (wikEd.config.fixPunctFrench === true) {&lt;br /&gt;
		obj.plain = obj.plain.replace(/(«) *()/g, &#039;$1 &#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(/ *(»)/g, &#039; $1&#039;);&lt;br /&gt;
&lt;br /&gt;
		regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\]})]) *([.,])(?=([&#039;+ wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\[{(\\s\\x01]|$))&#039;, &#039;g&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, &#039;$1$2 &#039;);&lt;br /&gt;
&lt;br /&gt;
		regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\]})]) *([:;?!])&#039;, &#039;g&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, &#039;$1 $2 &#039;);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\]})]) *([.,:;])(?=([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\[{(\\s\\x01]|$))&#039;, &#039;g&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, &#039;$1$2 &#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x00/g, &#039;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/ +$/g, &#039;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/ +\n/g, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// multiple spaces&lt;br /&gt;
	obj.plain = obj.plain.replace(/ {2,}/g, &#039; &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/ (?=\x01)/g, &#039;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\x01/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixUnicode: fix unicode character representations&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixUnicode = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;#0*160;|&amp;amp;amp;#x0*a0;/gi, &#039;&amp;amp;amp;nbsp;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;#0*32;|&amp;amp;amp;#x0*20;/gi, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	// replace supported chars: change decimal, hex, and character entities into actual char&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.supportedChars.length; i ++) {&lt;br /&gt;
		var replaceChar = String.fromCharCode(parseInt(wikEd.supportedChars[i][0], 16));&lt;br /&gt;
&lt;br /&gt;
		// decimal representation&lt;br /&gt;
		var regExpStr = &#039;&amp;amp;amp;#0*&#039; + parseInt(wikEd.supportedChars[i][0], 16) + &#039;;|&#039;;&lt;br /&gt;
&lt;br /&gt;
		// hex representation&lt;br /&gt;
		regExpStr += &#039;&amp;amp;amp;#x0*&#039; + wikEd.supportedChars[i][0] + &#039;;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// case insensitive replace&lt;br /&gt;
		var regExp = new RegExp(regExpStr, &#039;gi&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, replaceChar);&lt;br /&gt;
&lt;br /&gt;
		// character entity representation&lt;br /&gt;
		regExpStr = &#039;&amp;amp;amp;&#039; + wikEd.supportedChars[i][1] + &#039;;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// case sensitive replace&lt;br /&gt;
		var regExp = new RegExp(regExpStr, &#039;g&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, replaceChar);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// replace unsupported chars in IE6: change decimal, hex, and chars into character entities&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.problemChars.length; i ++) {&lt;br /&gt;
		var replaceChar = &#039;&amp;amp;amp;&#039; + wikEd.problemChars[i][1] + &#039;;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// decimal representation&lt;br /&gt;
		var regExpStr = &#039;&amp;amp;amp;#0*&#039; + parseInt(wikEd.problemChars[i][0], 16) + &#039;;|&#039;;&lt;br /&gt;
&lt;br /&gt;
		// hex representation&lt;br /&gt;
		regExpStr += &#039;&amp;amp;amp;#x0*&#039; + wikEd.problemChars[i][0] + &#039;;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// case insensitive replace&lt;br /&gt;
		var regExp = new RegExp(regExpStr, &#039;gi&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, replaceChar);&lt;br /&gt;
&lt;br /&gt;
		// actual character representation&lt;br /&gt;
		regExpStr = &#039;\\u&#039; + wikEd.problemChars[i][0];&lt;br /&gt;
&lt;br /&gt;
		// case sensitive replace&lt;br /&gt;
		var regExp = new RegExp(regExpStr, &#039;g&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, replaceChar);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// replace special chars (spaces and invisible characters): change decimal, hex, and chars into character entities&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.specialChars.length; i ++) {&lt;br /&gt;
		var replaceChar = &#039;&amp;amp;amp;&#039; + wikEd.specialChars[i][1] + &#039;;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// decimal representation&lt;br /&gt;
		var regExpStr = &#039;&amp;amp;amp;#0*&#039; + parseInt(wikEd.specialChars[i][0], 16) + &#039;;|&#039;;&lt;br /&gt;
&lt;br /&gt;
		// hex representation&lt;br /&gt;
		regExpStr += &#039;&amp;amp;amp;#x0*&#039; + wikEd.specialChars[i][0] + &#039;;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// case insensitive replace&lt;br /&gt;
		var regExp = new RegExp(regExpStr, &#039;gi&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, replaceChar);&lt;br /&gt;
&lt;br /&gt;
		// actual character representation&lt;br /&gt;
		regExpStr = &#039;\\u&#039; + wikEd.specialChars[i][0];&lt;br /&gt;
&lt;br /&gt;
		// case sensitive replace&lt;br /&gt;
		var regExp = new RegExp(regExpStr, &#039;g&#039;);&lt;br /&gt;
		obj.plain = obj.plain.replace(regExp, replaceChar);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// unicode line separator and paragraph separator&lt;br /&gt;
	obj.plain = obj.plain.replace(/\u2028/g, &#039;\n&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\u2029/g, &#039;\n\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LinkInfoCall: get link infos (redirects, redlinks) using AJAX API call&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LinkInfoCall = function (obj, handler) {&lt;br /&gt;
&lt;br /&gt;
	// check if api is enabled&lt;br /&gt;
	if ( ( (wikEd.wikiGlobals.wgEnableAPI !== true) &amp;amp;&amp;amp; (wikEd.wikiGlobals.wgEnableAPI != &#039;true&#039;) ) || (wikEd.scriptURL === &#039;&#039;) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set default handlers&lt;br /&gt;
	var externalHandler = null;&lt;br /&gt;
	if (handler === undefined) {&lt;br /&gt;
		handler = wikEd.LinkInfoHandler;&lt;br /&gt;
		externalHandler = wikEd.ExternalLinkInfoHandler;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get links and external file links&lt;br /&gt;
	var links = &#039;&#039;;&lt;br /&gt;
	var externalLinks = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// detect external files&lt;br /&gt;
	var regExpFile = new RegExp(&#039;^(Image|File|Media|&#039; + wikEd.config.text[&#039;wikicode Image&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode Media&#039;] + &#039;):&#039;, &#039;i&#039;);&lt;br /&gt;
&lt;br /&gt;
	// parse links from provided text&lt;br /&gt;
	if (obj !== undefined) {&lt;br /&gt;
&lt;br /&gt;
		//                1 [[    2  2   3                34   #            4 5     6    6  5  ]] 1 7 {{    8  8   9                910  #            1011    12   12 11 }} 7&lt;br /&gt;
		var regExpLink = /(\[\[\s*(:?)\s*([^\n#&amp;lt;&amp;gt;\[\]{}|]+)(\s*#[^\n\[\]|]*?)?(\s*\|(.|\n)*?)?\]\])|(\{\{\s*(:?)\s*([^\n#&amp;lt;&amp;gt;\[\]{}|]+)(\s*#[^\n\[\]|]*?)?(\s*\|(.|\n)*?)?\}\})/g;&lt;br /&gt;
		var regExpMatch ;&lt;br /&gt;
		while ( (regExpMatch = regExpLink.exec(obj.plain)) !== null) {&lt;br /&gt;
			var link = wikEd.CleanLink(regExpMatch[3] || regExpMatch[9]);&lt;br /&gt;
			if (links !== &#039;&#039;) {&lt;br /&gt;
				links += &#039;|&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			links += link;&lt;br /&gt;
&lt;br /&gt;
			// collect external file links&lt;br /&gt;
			if (regExpFile.test(link) === true) {&lt;br /&gt;
				if (externalLinks !== &#039;&#039;) {&lt;br /&gt;
					externalLinks += &#039;|&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				externalLinks += link.replace(regExpFile, &#039;File:&#039;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get links from link info data structure&lt;br /&gt;
	else {&lt;br /&gt;
		for (var link in wikEd.linkInfo) {&lt;br /&gt;
			if ( (Object.prototype.hasOwnProperty.call(wikEd.linkInfo, link) === true) &amp;amp;&amp;amp; (wikEd.linkInfo[link].update === true) ) {&lt;br /&gt;
				if (links !== &#039;&#039;) {&lt;br /&gt;
					links += &#039;|&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				links += link;&lt;br /&gt;
&lt;br /&gt;
				// collect external file links&lt;br /&gt;
				if (regExpFile.test(link) === true) {&lt;br /&gt;
					if (externalLinks !== &#039;&#039;) {&lt;br /&gt;
						externalLinks += &#039;|&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					externalLinks += link.replace(regExpFile, &#039;File:&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// prepare Ajax request&lt;br /&gt;
	var postFields = {};&lt;br /&gt;
	postFields[&#039;redirects&#039;] = &#039;true&#039;;&lt;br /&gt;
	postFields[&#039;format&#039;] = &#039;xml&#039;;&lt;br /&gt;
	postFields[&#039;action&#039;] = &#039;query&#039;;&lt;br /&gt;
	if (wikEd.starttime !== null) {&lt;br /&gt;
		postFields[&#039;wpStarttime&#039;] = wikEd.starttime;&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.edittime !== null) {&lt;br /&gt;
		postFields[&#039;wpEdittime&#039;] = wikEd.edittime;&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.editToken !== null) {&lt;br /&gt;
		postFields[&#039;wpEditToken&#039;] = wikEd.editToken;&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.autoSummary !== null) {&lt;br /&gt;
		postFields[&#039;wpAutoSummary&#039;] = wikEd.autoSummary;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// prepare link request&lt;br /&gt;
	if (links !== &#039;&#039;) {&lt;br /&gt;
		postFields[&#039;titles&#039;] = links;&lt;br /&gt;
		var requestUrl = wikEd.scriptURL + &#039;api.php&#039;;&lt;br /&gt;
&lt;br /&gt;
		// make the ajax request&lt;br /&gt;
		wikEd.AjaxRequest(&#039;POST&#039;, requestUrl, postFields, &#039;text/plain&#039;, handler);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// prepare external file request to Commons&lt;br /&gt;
	if ( (externalHandler !== null) &amp;amp;&amp;amp; (externalLinks !== &#039;&#039;) &amp;amp;&amp;amp; (wikEd.useExternalApi === true) &amp;amp;&amp;amp; (wikEd.config.externalApiUrl !== &#039;&#039;) ) {&lt;br /&gt;
		postFields[&#039;titles&#039;] = externalLinks;&lt;br /&gt;
		var requestUrl = wikEd.config.externalApiUrl;&lt;br /&gt;
&lt;br /&gt;
		// make the ajax request&lt;br /&gt;
		wikEd.AjaxRequest(&#039;POST&#039;, requestUrl, postFields, &#039;text/plain&#039;, externalHandler, true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ExternalLinkInfoHandler: parse external file link infos from AJAX call for redirect fixing and redlinking&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ExternalLinkInfoHandler = function (ajax) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.LinkInfoHandler(ajax, true);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LinkInfoHandler: parse link infos from AJAX call for redirect fixing and redlinking&lt;br /&gt;
//   see https://en.mediawikia.org/w/api.php&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LinkInfoHandler = function (ajax, external) {&lt;br /&gt;
&lt;br /&gt;
	// WED(&#039;ajax.responseText&#039;, ajax.responseText.replace(/&amp;gt;&amp;lt;/g, &#039;&amp;gt;\n&amp;lt;&#039;));&lt;br /&gt;
&lt;br /&gt;
	// get response &amp;lt;query&amp;gt;&lt;br /&gt;
	var regExpMatchQuery = ajax.responseText.match(/&amp;lt;api&amp;gt;(.|\n)*?&amp;lt;query&amp;gt;\s*((.|\n)*?)\s*&amp;lt;\/query&amp;gt;(.|\n)*?&amp;lt;\/api&amp;gt;/);&lt;br /&gt;
	if (regExpMatchQuery === null) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var query = regExpMatchQuery[2];&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;normalized&amp;gt;&lt;br /&gt;
	var normalized = &#039;&#039;;&lt;br /&gt;
	var regExpMatchNormalized = query.match(/&amp;lt;normalized&amp;gt;\s*((.|\n)*?)\s*&amp;lt;\/normalized&amp;gt;/);&lt;br /&gt;
	if (regExpMatchNormalized !== null) {&lt;br /&gt;
		normalized = regExpMatchNormalized[1];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;interwiki&amp;gt;&lt;br /&gt;
	var interwiki = &#039;&#039;;&lt;br /&gt;
	var regExpMatchInterwiki = query.match(/&amp;lt;interwiki&amp;gt;\s*((.|\n)*?)\s*&amp;lt;\/interwiki&amp;gt;/);&lt;br /&gt;
	if (regExpMatchInterwiki !== null) {&lt;br /&gt;
		interwiki = regExpMatchInterwiki[1];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;redirects&amp;gt;&lt;br /&gt;
	var redirects = &#039;&#039;;&lt;br /&gt;
	var regExpMatchRedirects = query.match(/&amp;lt;redirects&amp;gt;\s*((.|\n)*?)\s*&amp;lt;\/redirects&amp;gt;/);&lt;br /&gt;
	if (regExpMatchRedirects !== null) {&lt;br /&gt;
		redirects = regExpMatchRedirects[1];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;pages&amp;gt;&lt;br /&gt;
	var pages = &#039;&#039;;&lt;br /&gt;
	var regExpMatchPages = query.match(/&amp;lt;pages&amp;gt;\s*((.|\n)*?)\s*&amp;lt;\/pages&amp;gt;/);&lt;br /&gt;
	if (regExpMatchPages !== null) {&lt;br /&gt;
		pages = regExpMatchPages[1];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// standard links or external file links&lt;br /&gt;
	var linkInfo;&lt;br /&gt;
	if (external === true) {&lt;br /&gt;
		linkInfo = wikEd.externalLinkInfo;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		linkInfo = wikEd.linkInfo;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// parse redirects and normalized, type: n or r&lt;br /&gt;
	var regExpRedirNorm = /&amp;lt;(r|n)\b[^&amp;gt;]*?\bfrom=&amp;quot;([^&amp;quot;&amp;gt;]*)&amp;quot;[^&amp;gt;]*?\bto=&amp;quot;([^&amp;quot;]*)&amp;quot;[^&amp;gt;]*?&amp;gt;/g;&lt;br /&gt;
	var regExpMatchRedirNorm ;&lt;br /&gt;
	while ( (regExpMatchRedirNorm  = regExpRedirNorm.exec(redirects + normalized) ) !== null) {&lt;br /&gt;
		var link = regExpMatchRedirNorm[2];&lt;br /&gt;
		link = link.replace(/&amp;amp;quot;/g, &#039;&amp;quot;&#039;);&lt;br /&gt;
		link = link.replace(/&amp;amp;#039;/g, &#039;\&#039;&#039;);&lt;br /&gt;
		link = link.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
		var to = regExpMatchRedirNorm[3];&lt;br /&gt;
		to = to.replace(/&amp;amp;quot;/g, &#039;&amp;quot;&#039;);&lt;br /&gt;
		to = to.replace(/&amp;amp;#039;/g, &#039;\&#039;&#039;);&lt;br /&gt;
		to = to.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
		linkInfo[link] = {&lt;br /&gt;
			update: false,&lt;br /&gt;
			updated: true,&lt;br /&gt;
			type: regExpMatchRedirNorm[1],&lt;br /&gt;
			missing: false,&lt;br /&gt;
			redirect: (regExpMatchRedirNorm[1] == &#039;r&#039;),&lt;br /&gt;
			to: to&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// parse pages and interwiki, type: page, i&lt;br /&gt;
	var regExpPageInter = /&amp;lt;(page|i)\b([^&amp;gt;]*?\btitle=&amp;quot;([^&amp;quot;&amp;gt;]*)&amp;quot;[^&amp;gt;]*)&amp;gt;/g;&lt;br /&gt;
	var regExpMatchPageInter;&lt;br /&gt;
	while ( (regExpMatchPageInter = regExpPageInter.exec(pages + interwiki) ) !== null) {&lt;br /&gt;
		var link = regExpMatchPageInter[3];&lt;br /&gt;
		link = link.replace(/&amp;amp;quot;/g, &#039;&amp;quot;&#039;);&lt;br /&gt;
		link = link.replace(/&amp;amp;#039;/g, &#039;\&#039;&#039;);&lt;br /&gt;
		link = link.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
		linkInfo[link] = {&lt;br /&gt;
			update: false,&lt;br /&gt;
			updated: true,&lt;br /&gt;
			type: regExpMatchPageInter[1],&lt;br /&gt;
			redirect: false,&lt;br /&gt;
&lt;br /&gt;
			// also: special, invalid&lt;br /&gt;
			missing: /\bmissing=&amp;quot;([^&amp;quot;]*)&amp;quot;/.test(regExpMatchPageInter[2])&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// find target by recursing through chained normalizations and redirects&lt;br /&gt;
	for (var link in linkInfo) {&lt;br /&gt;
		if ( (Object.prototype.hasOwnProperty.call(linkInfo, link) === true) &amp;amp;&amp;amp; (linkInfo[link].updated === true) ) {&lt;br /&gt;
			var target = wikEd.ResolveRedirects(linkInfo, link);&lt;br /&gt;
			linkInfo[link].target = target;&lt;br /&gt;
			linkInfo[link].missing = linkInfo[target].missing;&lt;br /&gt;
&lt;br /&gt;
			// normalizations are also redirects when pointing to a redirect&lt;br /&gt;
			if ( (linkInfo[link].type == &#039;n&#039;) &amp;amp;&amp;amp; (linkInfo.hasOwnProperty(linkInfo[link].to) === true) &amp;amp;&amp;amp; (linkInfo[ linkInfo[link].to ].type == &#039;r&#039;) ) {&lt;br /&gt;
				linkInfo[link].redirect = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add redirect info and redlink highlighting to existing links&lt;br /&gt;
	wikEd.LinkifyLinks();&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResolveRedirects: recursively follow redirects when parsing API response in wikEd.LinkInfoCall handler&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResolveRedirects = function (linkInfo, link) {&lt;br /&gt;
&lt;br /&gt;
	if ( (Object.prototype.hasOwnProperty.call(linkInfo, link) === true) &amp;amp;&amp;amp; (linkInfo[link].updated === true) ) {&lt;br /&gt;
		if (linkInfo[link].hasOwnProperty(&#039;to&#039;) === true) {&lt;br /&gt;
			link = wikEd.ResolveRedirects(linkInfo, linkInfo[link].to);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return link;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ScanPreviewRedlinks: scan article preview section for redlinks&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ScanPreviewRedlinks = function () {&lt;br /&gt;
&lt;br /&gt;
	// check all link tags in preview and cat links section&lt;br /&gt;
	var linkTags = [];&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	if (wikEd.wikiPreview !== null) {&lt;br /&gt;
		linkTags.push(wikEd.wikiPreview.getElementsByTagName(&#039;a&#039;));&lt;br /&gt;
	}&lt;br /&gt;
	if (wikEd.catLinks !== null) {&lt;br /&gt;
		linkTags.push(wikEd.catLinks.getElementsByTagName(&#039;a&#039;));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// cycle through links&lt;br /&gt;
	var regExpQuery = new RegExp(wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgScriptPath + &#039;/index.php\\?(.*?)(#|$)&#039;);&lt;br /&gt;
	for (var i = 0; i &amp;lt; linkTags.length; i ++) {&lt;br /&gt;
		for (var j = 0; j &amp;lt; linkTags[i].length; j ++) {&lt;br /&gt;
			var tag = linkTags[i][j];&lt;br /&gt;
			var href = tag.href;&lt;br /&gt;
			if (href !== null) {&lt;br /&gt;
&lt;br /&gt;
				// get query string&lt;br /&gt;
				var regExpMatchQuery = regExpQuery.exec(href);&lt;br /&gt;
				if (regExpMatchQuery !== null) {&lt;br /&gt;
					var query = regExpMatchQuery[1];&lt;br /&gt;
&lt;br /&gt;
					// get title&lt;br /&gt;
					var regExpMatchTitle = query.match(/(^|&amp;amp;)title=(.+?)(&amp;amp;|$)/);&lt;br /&gt;
					if (regExpMatchTitle !== null) {&lt;br /&gt;
						var title = regExpMatchTitle[2];&lt;br /&gt;
						var link = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
						// files&lt;br /&gt;
						if ( (title == &#039;Special:Upload&#039;) &amp;amp;&amp;amp; (/\bnew\b/.test(tag.className) === true) ) {&lt;br /&gt;
							link = tag.innerHTML;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// links, templates, categories&lt;br /&gt;
						else if (/(^|&amp;amp;)redlink=(.*?)(&amp;amp;|$)/.test(query) === true) {&lt;br /&gt;
							link = title;&lt;br /&gt;
							link = link.replace(/_/g, &#039; &#039;);&lt;br /&gt;
							link = decodeURIComponent(link);&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// save redlink status in link info; get API info later anyway&lt;br /&gt;
						if (link !== &#039;&#039;) {&lt;br /&gt;
							wikEd.linkInfo[link] = {&lt;br /&gt;
								update: true,&lt;br /&gt;
								updated: true,&lt;br /&gt;
								type: &#039;preview&#039;,&lt;br /&gt;
								redirect: false,&lt;br /&gt;
								missing: true&lt;br /&gt;
							};&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixRedirectReplace: replace redirects using linkInfo data&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixRedirectReplace = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	//                1 2[[ 2   3  3   4                45   #            5 6    |78    8  76 9 ]] 91,01{{  1   2  2   3                34   #            4 5    |67    7  65 8 }} 80&lt;br /&gt;
	var regExpLink = /((\[\[)\s*(:?)\s*([^\n#&amp;lt;&amp;gt;\[\]{}|]+)(\s*#[^\n\[\]|]*?)?(\s*\|((.|\n)*?))?(\]\]))|((\{\{)\s*(:?)\s*([^\n#&amp;lt;&amp;gt;\[\]{}|]+)(\s*#[^\n\[\]|]*?)?(\s*\|((.|\n)*?))?(\}\}))/g;&lt;br /&gt;
&lt;br /&gt;
	obj.plain = obj.plain.replace(regExpLink,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) {&lt;br /&gt;
			var tag = p1 || p10;&lt;br /&gt;
			var openTag = p2 || p11;&lt;br /&gt;
			var prefix = p3 || p12;&lt;br /&gt;
			var article = p4 || p13;&lt;br /&gt;
			var fragmentId = p5 || p14;&lt;br /&gt;
			var linkText = p7 || p16;&lt;br /&gt;
			var closeTag = p9 || p18;&lt;br /&gt;
&lt;br /&gt;
			var link = wikEd.CleanLink(article);&lt;br /&gt;
			if ( (Object.prototype.hasOwnProperty.call(wikEd.linkInfo, link) === true) &amp;amp;&amp;amp; (wikEd.linkInfo[link].redirect === true) ) {&lt;br /&gt;
				var target = wikEd.linkInfo[link].target;&lt;br /&gt;
&lt;br /&gt;
				// lowercase link target if link text starts with lowercase (main space only)&lt;br /&gt;
				if (wikEd.config.articlesCaseSensitive === false) {&lt;br /&gt;
					if (/:/.test(target) !== true) {&lt;br /&gt;
						if (article.charAt(0).toLowerCase() == article.charAt(0)) {&lt;br /&gt;
							target = target.charAt(0).toLowerCase() + target.substr(1);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// remove link text if identical to new target&lt;br /&gt;
				if (openTag == &#039;[[&#039;) {&lt;br /&gt;
					if (linkText !== &#039;&#039;) {&lt;br /&gt;
						if (linkText.replace(/_/g, &#039; &#039;) == target) {&lt;br /&gt;
							linkText = &#039;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// keep replaced link as link text&lt;br /&gt;
					else if (linkText === &#039;&#039;) {&lt;br /&gt;
						if (target != article) {&lt;br /&gt;
							linkText = article;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// return fixed link&lt;br /&gt;
				var wikiLink = openTag + prefix + target + fragmentId;&lt;br /&gt;
				if (linkText !== &#039;&#039;) {&lt;br /&gt;
					wikiLink += &#039;|&#039; + linkText;&lt;br /&gt;
				}&lt;br /&gt;
				wikiLink += closeTag;&lt;br /&gt;
				return wikiLink;&lt;br /&gt;
			}&lt;br /&gt;
			return tag;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixMath: math character fixer, originally from User:Omegatron&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixMath = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	// change only outside &amp;lt;math&amp;gt; &amp;lt;/math&amp;gt; wikicode&lt;br /&gt;
	obj.plain = obj.plain.replace(/(.*?)((&amp;amp;lt;math(\b.*?)&amp;amp;gt;.*?&amp;amp;lt;\/math&amp;amp;gt;)|$)/gi,&lt;br /&gt;
		function(p, p1, p2) {&lt;br /&gt;
&lt;br /&gt;
			// convert html entities into actual dash characters&lt;br /&gt;
			p1 = p1.replace(/&amp;amp;plus;/g, &#039;+&#039;);&lt;br /&gt;
			p1 = p1.replace(/&amp;amp;minus;/g, &#039;\u2212&#039;);&lt;br /&gt;
			p1 = p1.replace(/&amp;amp;middot;/g, &#039;·&#039;);&lt;br /&gt;
&lt;br /&gt;
			// convert dash next to a number into a minus sign character&lt;br /&gt;
			var regExp = new RegExp(&#039;([^&#039; + wikEd.letters + &#039;_0-9,{])-(\\d)&#039;, &#039;g&#039;);&lt;br /&gt;
			p1 = p1.replace(regExp, &#039;$1\u2212$2&#039;);&lt;br /&gt;
&lt;br /&gt;
			// changes 2x3 to 2×3&lt;br /&gt;
			p1 = p1.replace(/(\d *)x( *\d)/g, &#039;$1\xd7$2&#039;);&lt;br /&gt;
&lt;br /&gt;
			// changes 10^3 to 10&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
			p1 = p1.replace(/(\d*\.?\d+)\^(\u2212?\d+\.?\d*)/g, &#039;$1&amp;amp;lt;sup&amp;amp;gt;$2&amp;amp;lt;/sup&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
			// change x^3 to x&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
			var regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9])\\^(\\u2212?\\d+\\.?\\d*) &#039;, &#039;g&#039;);&lt;br /&gt;
			p1 = p1.replace(regExp, &#039;$1&amp;amp;lt;sup&amp;amp;gt;$2&amp;amp;lt;/sup&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
			// change +/- to ±&lt;br /&gt;
			p1 = p1.replace(/( |\d)\+\/(-|\u2212)( |\d)/g, &#039;$1\xb1$3&#039;);&lt;br /&gt;
&lt;br /&gt;
			// htmlize single char superscripts&lt;br /&gt;
			p1 = p1.replace(/(\xb9|&amp;amp;sup1;)/g, &#039;&amp;amp;lt;sup&amp;amp;gt;1&amp;amp;lt;/sup&amp;amp;gt;&#039;);&lt;br /&gt;
			p1 = p1.replace(/(\xb2|&amp;amp;sup2;)/g, &#039;&amp;amp;lt;sup&amp;amp;gt;2&amp;amp;lt;/sup&amp;amp;gt;&#039;);&lt;br /&gt;
			p1 = p1.replace(/(\xb3|&amp;amp;sup3;)/g, &#039;&amp;amp;lt;sup&amp;amp;gt;3&amp;amp;lt;/sup&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
			return p1 + p2;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixChem: fix chemical formulas&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixChem = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	var realElements = &#039;H|He|Li|Be|B|C|N|O|F|Ne|Na|Mg|Al|Si|P|S|Cl|Ar|K|Ca|Sc|Ti|V|Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr|Rb|Sr|Y|Zr|Nb|Mo|Tc|Ru|Rh|Pd|Ag|Cd|In|Sn|Sb|Te|I|Xe|Cs|Ba|Hf|Ta|W|Re|Os|Ir|Pt|Au|Hg|Tl|Pb|Bi|Po|At|Rn|Fr|Ra|Rf|Db|Sg|Bh|Hs|Mt|Ds|Rg|La|Ce|Pr|Nd|Pm|Sm|Eu|Gd|Tb|Dy|Ho|Er|Tm|Yb|Lu|Ac|Th|Pa|U|Np|Pu|Am|Cm|Bk|Cf|Es|Fm|Md|No|Lr&#039;;&lt;br /&gt;
	var pseudoElements = &#039;|Me|Et|Pr|Bu|e&#039;;&lt;br /&gt;
&lt;br /&gt;
	// fix common typos&lt;br /&gt;
	obj.plain = obj.plain.replace(/\bh2o\b/g, &#039;H2O&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\bh3o+/g, &#039;H3O+&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\boh-/g, &#039;OH-&#039;);&lt;br /&gt;
&lt;br /&gt;
	// uppercase lowercased elements&lt;br /&gt;
	var regExp = new RegExp(&#039;(^|[^a-zA-Z])(&#039; + realElements.toLowerCase() + pseudoElements.toLowerCase() + &#039;)([^a-zA-Z]|$)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			if (p2 != &#039;e&#039;) {&lt;br /&gt;
				p2 = p2.charAt(0).toUpperCase() + p2.substr(1).toLowerCase();&lt;br /&gt;
			}&lt;br /&gt;
			return p1 + p2 + p3;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// fix superscripts&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;plus;/g, &#039;+&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;minus;/g, &#039;\u2212&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;middot;/g, &#039;·&#039;);&lt;br /&gt;
	regExp = new RegExp(&#039;(&#039; + realElements + pseudoElements + &#039;|\\))(\\d*(\\+|-|\\u2212))&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			p2 = p2.replace(/-/g, &#039;\u2212&#039;);&lt;br /&gt;
			return p1 + &#039;&amp;amp;lt;sup&amp;amp;gt;&#039; + p2 + &#039;&amp;amp;lt;/sup&amp;amp;gt;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// fix indices&lt;br /&gt;
	regExp = new RegExp(&#039;(&#039; + realElements + pseudoElements + &#039;|\\))(\\d+)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1&amp;amp;lt;sub&amp;amp;gt;$2&amp;amp;lt;/sub&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// fix prefixes&lt;br /&gt;
	regExp = new RegExp(&#039;(\\d+) *(\\(|&#039; + realElements + pseudoElements + &#039;)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	// fix arrows&lt;br /&gt;
	obj.plain = obj.plain.replace(/ *-+&amp;amp;gt; *()/g, &#039; \u2192 &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/ *&amp;amp;lt;-+ *()/g, &#039; \u2190 &#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;amp;hdarr; and &amp;quot;leftwards harpoon over rightwards harpoon&amp;quot; not supported in IE6&lt;br /&gt;
	// obj.plain = obj.plain.replace(/ *(&amp;amp;lt;=+&amp;amp;gt;|&amp;amp;hdarr;|&amp;amp;harr;|\u2190 *\u2192) *()/g, &#039; \u21cc &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/ *(&amp;amp;lt;==+&amp;amp;gt;|&amp;amp;hdarr;|&amp;amp;harr;|\u21cc|\u2190 *\u2192) *()/g, &#039; &amp;lt;=&amp;gt; &#039;);&lt;br /&gt;
&lt;br /&gt;
	// fix -&lt;br /&gt;
	var regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9]|\\)|&amp;amp;gt;) +(-|\\u2212) +([&#039; + wikEd.letters + &#039;_0-9]|\\()&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1 \u2212 $3&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixUnits: unit formatter&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixUnits = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	// convert into actual characters&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;deg;|&amp;amp;amp;#00b0;/g, &#039;°&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;#00b5;|&amp;amp;amp;mu;|&amp;amp;amp;micro;/g, &#039;µ&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;Omega;|&amp;amp;amp;#8486;/g, &#039;\u03a9&#039;);&lt;br /&gt;
&lt;br /&gt;
	// add space before units, remove space around /, and use abreviations&lt;br /&gt;
	var regExp = new RegExp(&#039;( */ *|\\d *)(Y|yotta|Z|zetta|E|exa|P|peta|T|tera|G|giga|M|mega|k|kilo|K|h|hecto|da|deca|d|deci|c|centi|m|mill?i|micro|u|µ|n|nano|p|pico|f|femto|a|atto|z|zepto|y|yocto|mibi|mebi|)(gramm?s?|g|metres?|meters?|m|amperes?|Amperes?|amps?|Amps?|A|Angstroms?|Angströms?|Å|Kelvins?|kelvins?|K|moles?|Moles?|mol|candelas?|cd|rad|Ci|sr|Hert?z|hert?z|Hz|newtons?|Newtons?|N|Joules?|joules?|J|watts?|Watts?|W|pascals?|Pascals?|Pa|lm|lx|C|volts?|Volts?|V|O|Farads?|F|Wb|T|H|S|bequerels?|Bequerels?|Bq|Gy|Sv|kat|centigrades?|°C|decibels?|db|dB|M|ohms?|Ohms?|\\u03a9|sec|seconds?|s|minutes?|min|hour?|h|bits?|Bits?|bit|bytes?|Bytes?|B|bps|Bps)(?=[^&#039; + wikEd.letters + &#039;_0-9]|$)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
&lt;br /&gt;
			p1 = p1.replace(/ *\/ *()/g, &#039;/&#039;);&lt;br /&gt;
			p1 = p1.replace(/(\d) *()/g, &#039;$1 &#039;);&lt;br /&gt;
&lt;br /&gt;
			p2 = p2.replace(/yotta/g, &#039;Y&#039;);&lt;br /&gt;
			p2 = p2.replace(/zetta/g, &#039;Z&#039;);&lt;br /&gt;
			p2 = p2.replace(/exa/g, &#039;E&#039;);&lt;br /&gt;
			p2 = p2.replace(/peta/g, &#039;P&#039;);&lt;br /&gt;
			p2 = p2.replace(/tera/g, &#039;T&#039;);&lt;br /&gt;
			p2 = p2.replace(/giga/g, &#039;G&#039;);&lt;br /&gt;
			p2 = p2.replace(/mega/g, &#039;M&#039;);&lt;br /&gt;
			p2 = p2.replace(/kilo/g, &#039;k&#039;);&lt;br /&gt;
			p2 = p2.replace(/K/g, &#039;k&#039;);&lt;br /&gt;
			p2 = p2.replace(/hecto/g, &#039;h&#039;);&lt;br /&gt;
			p2 = p2.replace(/deca/g, &#039;da&#039;);&lt;br /&gt;
			p2 = p2.replace(/deci/g, &#039;d&#039;);&lt;br /&gt;
			p2 = p2.replace(/centi/g, &#039;c&#039;);&lt;br /&gt;
			p2 = p2.replace(/mill?i/g, &#039;m&#039;);&lt;br /&gt;
			p2 = p2.replace(/micro|u/g, &#039;µ&#039;);&lt;br /&gt;
			p2 = p2.replace(/nano/g, &#039;n&#039;);&lt;br /&gt;
			p2 = p2.replace(/pico/g, &#039;p&#039;);&lt;br /&gt;
			p2 = p2.replace(/femto/g, &#039;f&#039;);&lt;br /&gt;
			p2 = p2.replace(/atto/g, &#039;a&#039;);&lt;br /&gt;
			p2 = p2.replace(/zepto/g, &#039;z&#039;);&lt;br /&gt;
			p2 = p2.replace(/yocto/g, &#039;y&#039;);&lt;br /&gt;
			p2 = p2.replace(/mibi/g, &#039;mebi&#039;);&lt;br /&gt;
&lt;br /&gt;
			p3 = p3.replace(/gramm?s?/g, &#039;g&#039;);&lt;br /&gt;
			p3 = p3.replace(/metres?|meters?/g, &#039;m&#039;);&lt;br /&gt;
			p3 = p3.replace(/amperes?|Amperes?|amps?|Amps?/g, &#039;A&#039;);&lt;br /&gt;
			p3 = p3.replace(/Angstroms?|Angströms?/g, &#039;Å&#039;);&lt;br /&gt;
			p3 = p3.replace(/Kelvins?|kelvins?/g, &#039;K&#039;);&lt;br /&gt;
			p3 = p3.replace(/moles?|Moles?/g, &#039;mol&#039;);&lt;br /&gt;
			p3 = p3.replace(/candelas?/g, &#039;cd&#039;);&lt;br /&gt;
			p3 = p3.replace(/Hert?z|hert?z/g, &#039;Hz&#039;);&lt;br /&gt;
			p3 = p3.replace(/newtons?|Newtons?/g, &#039;N&#039;);&lt;br /&gt;
			p3 = p3.replace(/Joules?|joules?/g, &#039;J&#039;);&lt;br /&gt;
			p3 = p3.replace(/watts?|Watts?/g, &#039;W&#039;);&lt;br /&gt;
			p3 = p3.replace(/pascals?|Pascals?/g, &#039;Pa&#039;);&lt;br /&gt;
			p3 = p3.replace(/volts?|Volts?/g, &#039;V&#039;);&lt;br /&gt;
			p3 = p3.replace(/ohms?|Ohms?/g, &#039;\u03a9&#039;);&lt;br /&gt;
			p3 = p3.replace(/bequerels?|Bequerels?/g, &#039;Bq&#039;);&lt;br /&gt;
			p3 = p3.replace(/Farads?/g, &#039;F&#039;);&lt;br /&gt;
			p3 = p3.replace(/bits?|Bits?/g, &#039;bit&#039;);&lt;br /&gt;
			p3 = p3.replace(/bytes?|Bytes?/g, &#039;B&#039;);&lt;br /&gt;
			p3 = p3.replace(/sec|seconds?/g, &#039;s&#039;);&lt;br /&gt;
			p3 = p3.replace(/minutes?/g, &#039;min&#039;);&lt;br /&gt;
			p3 = p3.replace(/hours?/g, &#039;h&#039;);&lt;br /&gt;
			p3 = p3.replace(/sec|seconds?/g, &#039;s&#039;);&lt;br /&gt;
			p3 = p3.replace(/bps/g, &#039;bit/s&#039;);&lt;br /&gt;
			p3 = p3.replace(/Bps/g, &#039;B/s&#039;);&lt;br /&gt;
&lt;br /&gt;
			return p1 + p2 + p3;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// fix prefix casing&lt;br /&gt;
	var regExp = new RegExp(&#039; K(bit/s|B/s)([^&#039; + wikEd.letters + &#039;_0-9]|$)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039; k$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	var regExp = new RegExp(&#039; m(bit/s|B/s)([^&#039; + wikEd.letters + &#039;_0-9]|$)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039; M$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	var regExp = new RegExp(&#039; g(bit/s|B/s)([^&#039; + wikEd.letters + &#039;_0-9]|$)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039; G$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	var regExp = new RegExp(&#039; t(bit/s|B/s)([^&#039; + wikEd.letters + &#039;_0-9]|$)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039; T$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	var regExp = new RegExp(&#039; e(bit/s|B/s)([^&#039; + wikEd.letters + &#039;_0-9]|$)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039; E$1$2&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixDashes: fixes dashes and minus signs&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixDashes = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	// convert html character entities into actual dash characters&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;mdash;/g, &#039;—&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;ndash;/g, &#039;–&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;minus;/g, &#039;\u2212&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove spaces around em dashes&lt;br /&gt;
	var regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\]})])( |&amp;amp;amp;nbsp;)*—( |&amp;amp;amp;nbsp;)*([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;“\\[{(])&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1—$4&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert -- to em dashes&lt;br /&gt;
	var regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\]})])( |&amp;amp;amp;nbsp;)*--( |&amp;amp;amp;nbsp;)*([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;“\\[{(])&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1—$4&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert hyphen next to lone number into a minus sign character&lt;br /&gt;
	var regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\]&amp;gt;] ) *(\\u2212|–)(\\d)&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1\u2212$3&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert minus or en dashes to dashes with spaces&lt;br /&gt;
	var regExp = new RegExp(&#039;([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;”\\]}])( |&amp;amp;amp;nbsp;)*(\\u2212|–)( |&amp;amp;amp;nbsp;)*([&#039; + wikEd.letters + &#039;_0-9\&#039;&amp;quot;“\\[{])&#039;, &#039;g&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp, &#039;$1 – $5&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert dashes to en dashes in dates&lt;br /&gt;
	obj.plain = obj.plain.replace(/(^|[ \(\|])(\d\d(\d\d)?)(\u2212|-|–)(\d\d)(\u2212|-|–)(\d\d(\d\d)?)([ \)\}\|,.;—]|$)/gm, &#039;$1$2–$5–$7$9&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixHTML: fix html to wikicode&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixHTML = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	// get html from plain, keep leading spaces, \n to &amp;lt;br&amp;gt;&lt;br /&gt;
	obj.html = obj.plain;&lt;br /&gt;
	obj.html = obj.html.replace(/(^|\n) +/g,&lt;br /&gt;
		function(p, p1) {&lt;br /&gt;
			p = p.replace(/ /g, &#039;\xa0&#039;);&lt;br /&gt;
			return p;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	obj.html = obj.html.replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// preserve double spaces after dot&lt;br /&gt;
	obj.html = obj.html.replace(/([.!?]) {2}(?=\S)/g, &#039;$1\xa0\xa0&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove syntax highlighting&lt;br /&gt;
	wikEd.RemoveHighlighting(obj);&lt;br /&gt;
&lt;br /&gt;
	// keep &amp;lt;br&amp;gt; in preformatted lines&lt;br /&gt;
	obj.html = obj.html.replace(/(^|&amp;lt;br&amp;gt;)( |\xa0).*?(?=&amp;lt;br&amp;gt;)/g,&lt;br /&gt;
		function(p, p1, p2) {&lt;br /&gt;
			p = p.replace(/&amp;amp;lt;(br\b.*?)&amp;amp;gt;/g, &#039;\x00$1\x01&#039;);&lt;br /&gt;
			return p;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// keep &amp;lt;br&amp;gt; in blockquote&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;amp;lt;blockquote\b.*?&amp;amp;gt;)([\S\s]*?)(&amp;amp;lt;\/blockquote&amp;amp;gt;)/gi,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			p2 = p2.replace(/&amp;amp;lt;(br\b.*?)&amp;amp;gt;&amp;lt;br\b[^&amp;gt;]*&amp;gt;/g, &#039;\x00$1\x01\n&#039;);&lt;br /&gt;
			return p1 + p2 + p3;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// keep &amp;lt;br&amp;gt; in tables (and certain templates!?)&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;br\b[^&amp;gt;]*&amp;gt;\|)([^\}][\S\s]*?)(?=&amp;lt;br\b[^&amp;gt;]*&amp;gt;\|)/gi,&lt;br /&gt;
		function(p, p1, p2) {&lt;br /&gt;
			p2 = p2.replace(/&amp;amp;lt;(br\b.*?)&amp;amp;gt;/g, &#039;\x00$1\x01&#039;);&lt;br /&gt;
			return p1 + p2;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// detect outermost template tags&lt;br /&gt;
	var depth = 0;&lt;br /&gt;
	obj.html = obj.html.replace(/((\{\{)|\}\})/g,&lt;br /&gt;
		function(p, p1, p2) {&lt;br /&gt;
			p2 = p2 || &#039;&#039;;&lt;br /&gt;
			if (p2 !== &#039;&#039;) {&lt;br /&gt;
				depth ++;&lt;br /&gt;
				if (depth == 1) {&lt;br /&gt;
					return &#039;&amp;lt;!--wikEdOuterTemplateStart--&amp;gt;&#039; + p1;&lt;br /&gt;
				}&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
			depth --;&lt;br /&gt;
			if (depth === 0) {&lt;br /&gt;
				return p1 + &#039;&amp;lt;!--wikEdOuterTemplateEnd--&amp;gt;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			return p1;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// keep &amp;lt;br&amp;gt; in templates&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;!--wikEdOuterTemplateStart--&amp;gt;([\S\s]*?)&amp;lt;!--wikEdOuterTemplateEnd--&amp;gt;/g,&lt;br /&gt;
		function(p, p1) {&lt;br /&gt;
			return p1.replace(/&amp;amp;lt;(br\b.*?)&amp;amp;gt;/g, &#039;\x00$1\x01&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// detect outermost table tags&lt;br /&gt;
	var depth = 0;&lt;br /&gt;
	obj.html = obj.html.replace(/(((^|&amp;lt;br\b[^&amp;gt;]*&amp;gt;)\{\|)|&amp;lt;br\b[^&amp;gt;]*&amp;gt;\|\})/g,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			if (p2 !== &#039;&#039;) {&lt;br /&gt;
				depth ++;&lt;br /&gt;
				if (depth == 1) {&lt;br /&gt;
					return &#039;&amp;lt;!--wikEdOuterTableStart--&amp;gt;&#039; + p1;&lt;br /&gt;
				}&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
			depth --;&lt;br /&gt;
			if (depth === 0) {&lt;br /&gt;
				return p1 + &#039;&amp;lt;!--wikEdOuterTableEnd--&amp;gt;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			return p1;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// keep &amp;lt;br&amp;gt; in tables&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;!--wikEdOuterTableStart--&amp;gt;([\S\s]*?)&amp;lt;!--wikEdOuterTableEnd--&amp;gt;/g,&lt;br /&gt;
		function(p, p1) {&lt;br /&gt;
			return p1.replace(/&amp;amp;lt;(br\b.*?)&amp;amp;gt;/g, &#039;\x00$1\x01&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// turn visible html code into real html, exclude comments&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;amp;lt;(\/?\w.*?)&amp;amp;gt;/g, &#039;&amp;lt;$1&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// restore valid &amp;lt;br&amp;gt;s&lt;br /&gt;
	obj.html = obj.html.replace(/\x00(.*?)\x01/g, &#039;&amp;amp;lt;$1&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// wikify, keep user added attribute&lt;br /&gt;
	wikEd.WikifyHTML(obj, true);&lt;br /&gt;
&lt;br /&gt;
	// turn real html into visible html code&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;br\b[^&amp;gt;]*&amp;gt;\s*?\n/g, &#039;\n&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;br\b[^&amp;gt;]*&amp;gt;/g, &#039;\n&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	obj.plain = obj.html;&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixCaps: fix capitalizing of lists, linklists, images, headings&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixCaps = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	// uppercase lists, also uppercases cat parameter names&lt;br /&gt;
	//                        (( listcode  )         (wcode|char-ent|tag    |category         |digit|      non-word            ) )( word                rest)&lt;br /&gt;
	var regExp = new RegExp(&#039;^((\\||[*#:;]+)[\\s\&#039;&amp;quot;]*(\&#039;+|&amp;amp;amp;\\w+;|&amp;amp;lt;.*?&amp;amp;gt;|\\{\\{.*?\\}\\}.*|\\d|[^&#039; + wikEd.letters + &#039;_0-9])*)([&#039; + wikEd.letters + &#039;].*)$&#039;, &#039;gm&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p4 = p4 || &#039;&#039;;&lt;br /&gt;
			if (/^(https?|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda|$)/.test(p4) === false) {&lt;br /&gt;
&lt;br /&gt;
				// spaces cannot be added to p1 in above regExp !?&lt;br /&gt;
				p4 = p4.replace(/^(\s*)(.*?)$/,&lt;br /&gt;
					function(p, p1, p2) {&lt;br /&gt;
						p2 = p2.charAt(0).toUpperCase() + p2.substr(1);&lt;br /&gt;
						return p1 + p2;&lt;br /&gt;
					}&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			return p1 + p4;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// uppercase link lists (link)&lt;br /&gt;
	//                              12table list2          13   34    4&lt;br /&gt;
	obj.plain = obj.plain.replace(/^((\||[*#:;]+)[ &#039;&amp;quot;]*\[\[)(.*?)(\]\])/gm,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
&lt;br /&gt;
			// uppercase link&lt;br /&gt;
			var regExp = new RegExp(&#039;^((&amp;amp;amp;\\w+;|&amp;amp;lt;.*?&amp;amp;gt;|\\s)*)([&#039; + wikEd.letters + &#039;].*)$&#039;, &#039;&#039;);&lt;br /&gt;
			p3 = p3.replace(regExp,&lt;br /&gt;
				function(p, p1, p2, p3) {&lt;br /&gt;
					if (/^(https?|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/.test(p3) === false) {&lt;br /&gt;
						p3 = p3.charAt(0).toUpperCase() + p3.substr(1);&lt;br /&gt;
					}&lt;br /&gt;
					return p1 + p3;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			// uppercase link text&lt;br /&gt;
			var regExp = new RegExp(&#039;(\\|(&amp;amp;amp;\\w+;|&amp;amp;lt;.*?&amp;amp;gt;|\\s)*)([&#039; + wikEd.letters + &#039;].*)$&#039;, &#039;&#039;);&lt;br /&gt;
			p3 = p3.replace(regExp,&lt;br /&gt;
				function(p, p1, p2, p3) {&lt;br /&gt;
					if (/^(https?|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/.test(p3) === false) {&lt;br /&gt;
						p3 = p3.charAt(0).toUpperCase() + p3.substr(1);&lt;br /&gt;
					}&lt;br /&gt;
					return p1 + p3;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			return p1 + p3 + p4;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// uppercase headings&lt;br /&gt;
	var regExp = new RegExp(&#039;^(=+ (&amp;amp;amp;\\w+;|&amp;amp;lt;.*?&amp;amp;gt;|\\d|[^&#039; + wikEd.letters + &#039;_0-9])*)([&#039; + wikEd.letters + &#039;].*? =+)$&#039;, &#039;gm&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			if (/^(https?|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/.test(p3) === false) {&lt;br /&gt;
				p3 = p3.charAt(0).toUpperCase() + p3.substr(1);&lt;br /&gt;
			}&lt;br /&gt;
			return p1 + p3;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// uppercase images&lt;br /&gt;
	var regExp = new RegExp(&#039;(\\[\\[)(Image|File|Media|&#039; + wikEd.config.text[&#039;wikicode Image&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode Media&#039;] + &#039;):([&#039; + wikEd.letters + &#039;])(.*?\\]\\])&#039;, &#039;igm&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(regExp,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p2 = p2.charAt(0).toUpperCase() + p2.substr(1).toLowerCase();&lt;br /&gt;
			p3 = p3.toUpperCase();&lt;br /&gt;
			return p1 + p2 + &#039;:&#039; + p3 + p4;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixTypos: fix typos using the AutoWikiBrowser/RegExTypoFix list (.test() is not faster)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixTypos = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
&lt;br /&gt;
	// split into alternating plain text and {{lang}} template fragments (does not support nested templates)&lt;br /&gt;
	var fragment = [];&lt;br /&gt;
	var nextPos = 0;&lt;br /&gt;
	var regExp = /{{\s*lang\s*\|(.|\n)*?}}/gi;&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	while ( (regExpMatch = regExp.exec(obj.plain)) !== null) {&lt;br /&gt;
		fragment.push(obj.plain.substring(nextPos, regExpMatch.index));&lt;br /&gt;
		fragment.push(regExpMatch[0]);&lt;br /&gt;
		nextPos = regExp.lastIndex;&lt;br /&gt;
	}&lt;br /&gt;
	fragment.push(obj.plain.substring(nextPos));&lt;br /&gt;
&lt;br /&gt;
	// cycle through the RegExTypoFix rules&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.typoRulesFind.length; i ++) {&lt;br /&gt;
&lt;br /&gt;
		// cycle through the fragments, jump over {{lang}} templates&lt;br /&gt;
		for (var j = 0; j &amp;lt; fragment.length; j = j + 2) {&lt;br /&gt;
			fragment[j] = fragment[j].replace(wikEd.typoRulesFind[i], wikEd.typoRulesReplace[i]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// re-assemble text&lt;br /&gt;
	obj.plain = fragment.join(&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FixAll:&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FixAll = function (obj) {&lt;br /&gt;
	wikEd.FixBasic(obj);&lt;br /&gt;
	wikEd.FixUnicode(obj);&lt;br /&gt;
	wikEd.FixHTML(obj);&lt;br /&gt;
	wikEd.FixCaps(obj);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RemoveElements: remove elements by tag name&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.RemoveElements = function (tagNameArray) {&lt;br /&gt;
&lt;br /&gt;
	// cycle through the element names&lt;br /&gt;
	for (var i = 0; i &amp;lt; tagNameArray.length; i ++) {&lt;br /&gt;
		var elementArray = wikEd.frameBody.getElementsByTagName(tagNameArray[i]);&lt;br /&gt;
		for (var j = 0; j &amp;lt; elementArray.length; j ++) {&lt;br /&gt;
			elementArray[j].parentNode.removeChild(elementArray[j]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FindBoundaries: find word boundaries and line boundaries starting from selection.range&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FindBoundaries = function (word, line, para, whole, selection) {&lt;br /&gt;
&lt;br /&gt;
	if (whole.plain === &#039;&#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get the start node and offset&lt;br /&gt;
	var startNode = selection.range.startContainer;&lt;br /&gt;
	var startOffset = selection.range.startOffset;&lt;br /&gt;
&lt;br /&gt;
	// get the end node and offset&lt;br /&gt;
	var endNode = selection.range.endContainer;&lt;br /&gt;
	var endOffset = selection.range.endOffset;&lt;br /&gt;
&lt;br /&gt;
	if (startNode.childNodes !== null) {&lt;br /&gt;
		if (startNode.childNodes.length &amp;gt; 0) {&lt;br /&gt;
			startNode = startNode.childNodes.item(startOffset);&lt;br /&gt;
			startOffset = 0;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (endNode.childNodes !== null) {&lt;br /&gt;
		if (endNode.childNodes.length &amp;gt; 0) {&lt;br /&gt;
			endNode = endNode.childNodes.item(endOffset);&lt;br /&gt;
			endOffset = 0;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// find the start and end nodes in the whole plain text arrays&lt;br /&gt;
	var startNodeIndex;&lt;br /&gt;
	var endNodeIndex;&lt;br /&gt;
	for (var i = 0; i &amp;lt; whole.plainNode.length; i ++) {&lt;br /&gt;
		if (startNode == whole.plainNode[i]) {&lt;br /&gt;
			startNodeIndex = i;&lt;br /&gt;
		}&lt;br /&gt;
		if (endNode == whole.plainNode[i]) {&lt;br /&gt;
			endNodeIndex = i;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// find last previous word and line boundary&lt;br /&gt;
	var foundWord = false;&lt;br /&gt;
	var foundLine = false;&lt;br /&gt;
	var foundPara = false;&lt;br /&gt;
	var regExp = new RegExp(&#039;.*[^&#039; + wikEd.letters + &#039;_0-9]&#039;, &#039;g&#039;);&lt;br /&gt;
	var plainPrev = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// check text nodes left-wise for a boundary&lt;br /&gt;
	var plain = &#039;&#039;;&lt;br /&gt;
	for (var i = startNodeIndex; i &amp;gt;= 0; i --) {&lt;br /&gt;
		plainPrev = plain;&lt;br /&gt;
		plain = whole.plainArray[i];&lt;br /&gt;
		plain = plain.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
		// boundary is a new paragraph&lt;br /&gt;
		if ( (plainPrev == &#039;\n&#039;) &amp;amp;&amp;amp; (plain == &#039;\n&#039;) ) {&lt;br /&gt;
			para.range.setStartAfter(whole.plainNode[i + 1]);&lt;br /&gt;
			foundPara = true;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// boundary is a newline&lt;br /&gt;
		else if (plain == &#039;\n&#039;) {&lt;br /&gt;
			if (foundWord === false) {&lt;br /&gt;
				word.range.setStartAfter(whole.plainNode[i]);&lt;br /&gt;
				foundWord = true;&lt;br /&gt;
			}&lt;br /&gt;
			if (foundLine === false) {&lt;br /&gt;
				line.range.setStartAfter(whole.plainNode[i]);&lt;br /&gt;
				foundLine = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// check text node for a word boundary&lt;br /&gt;
		else if (foundWord === false) {&lt;br /&gt;
			if (i == startNodeIndex) {&lt;br /&gt;
				plain = plain.substr(0, startOffset);&lt;br /&gt;
			}&lt;br /&gt;
			regExp.lastIndex = 0;&lt;br /&gt;
			if (regExp.exec(plain) !== null) {&lt;br /&gt;
				wikEd.SetRangeStart(word.range, whole.plainNode[i], regExp.lastIndex);&lt;br /&gt;
				foundWord = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// boundary is start of text&lt;br /&gt;
	if (foundPara === false) {&lt;br /&gt;
		para.range.setStartBefore(whole.plainNode[0]);&lt;br /&gt;
	}&lt;br /&gt;
	if (foundLine === false) {&lt;br /&gt;
		line.range.setStartBefore(whole.plainNode[0]);&lt;br /&gt;
	}&lt;br /&gt;
	if (foundWord === false) {&lt;br /&gt;
		word.range.setStartBefore(whole.plainNode[0]);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// find next word and line boundary&lt;br /&gt;
	regExp = new RegExp(&#039;[^&#039; + wikEd.letters + &#039;_0-9]&#039;, &#039;g&#039;);&lt;br /&gt;
	foundWord = false;&lt;br /&gt;
	foundLine = false;&lt;br /&gt;
	foundPara = false;&lt;br /&gt;
&lt;br /&gt;
	// check text nodes right-wise for a boundary&lt;br /&gt;
	plain = &#039;&#039;;&lt;br /&gt;
	for (var i = endNodeIndex; i &amp;lt; whole.plainArray.length; i ++) {&lt;br /&gt;
		plainPrev = plain;&lt;br /&gt;
		plain = whole.plainArray[i];&lt;br /&gt;
		plain = plain.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
		// boundary is a double newline&lt;br /&gt;
		if ( (plainPrev == &#039;\n&#039;) &amp;amp;&amp;amp; (plain == &#039;\n&#039;) ) {&lt;br /&gt;
			para.range.setEndBefore(whole.plainNode[i]);&lt;br /&gt;
			foundPara = true;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// boundary is a newline&lt;br /&gt;
		else if (plain == &#039;\n&#039;) {&lt;br /&gt;
			if (foundWord === false) {&lt;br /&gt;
				word.range.setEndBefore(whole.plainNode[i]);&lt;br /&gt;
				foundWord = true;&lt;br /&gt;
			}&lt;br /&gt;
			if (foundLine === false) {&lt;br /&gt;
				line.range.setEndBefore(whole.plainNode[i]); //// crashes for empty selection&lt;br /&gt;
				foundLine = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// check text node for a word boundary&lt;br /&gt;
		else if (foundWord === false) {&lt;br /&gt;
			if (i == endNodeIndex) {&lt;br /&gt;
				regExp.lastIndex = endOffset;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				regExp.lastIndex = 0;&lt;br /&gt;
			}&lt;br /&gt;
			var regExpArray = regExp.exec(plain);&lt;br /&gt;
			if (regExpArray !== null) {&lt;br /&gt;
				wikEd.SetRangeEnd(word.range, whole.plainNode[i], regExp.lastIndex - 1);&lt;br /&gt;
				foundWord = true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// boundary is end of text&lt;br /&gt;
	if (foundPara === false) {&lt;br /&gt;
		para.range.setEndAfter(whole.plainNode[whole.plainArray.length - 1]);&lt;br /&gt;
	}&lt;br /&gt;
	if (foundLine === false) {&lt;br /&gt;
		line.range.setEndAfter(whole.plainNode[whole.plainArray.length - 1]);&lt;br /&gt;
	}&lt;br /&gt;
	if (foundWord === false) {&lt;br /&gt;
		word.range.setEndAfter(whole.plainNode[whole.plainArray.length - 1]);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DivToBr: convert &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt; to &amp;lt;br&amp;gt; for Safari, Chrome, and WebKit&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DivToBr = function (html) {&lt;br /&gt;
&lt;br /&gt;
	// remove inline tags around &amp;lt;br&amp;gt;&lt;br /&gt;
	var tagRegExp = /&amp;lt;(i|dfn|cite|em|var|b|strong|abbr|big|code|del|font|ins|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby)\b[^&amp;gt;]*&amp;gt;((&amp;lt;br\b[^&amp;gt;]*&amp;gt;)+)&amp;lt;\/\1&amp;gt;/gi;&lt;br /&gt;
	while (tagRegExp.test(html) === true) {&lt;br /&gt;
		html = html.replace(tagRegExp, &#039;$2&#039;);&lt;br /&gt;
		tagRegExp.lastIndex = 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// convert &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt; to \x00...\x00 to mark block borders&lt;br /&gt;
	html = wikEd.RemoveTag(html, &#039;div&#039;, null, &#039;\x00&#039;, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove div block borders after &amp;lt;br&amp;gt;&lt;br /&gt;
	html = html.replace(/&amp;lt;br&amp;gt;\x00+/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove leading and trailing div block borders&lt;br /&gt;
	html = html.replace(/^\x00+|\x00+$/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// combine div block borders into single &amp;lt;br&amp;gt;&lt;br /&gt;
	html = html.replace(/\x00+/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	return html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RemoveHighlightingWikify: remove syntax highlighting and wikify&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.RemoveHighlightingWikify = function (obj, wikify) {&lt;br /&gt;
&lt;br /&gt;
	if ( (obj.html !== &#039;&#039;) || (wikify === true) ) {&lt;br /&gt;
&lt;br /&gt;
		// convert &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt; to &amp;lt;br&amp;gt; for Safari, Chrome, and WebKit&lt;br /&gt;
		if ( (wikEd.safari === true) || (wikEd.chrome === true) || (wikEd.webkit === true) ) {&lt;br /&gt;
			obj.html = wikEd.DivToBr(obj.html);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// remove syntax highlighting&lt;br /&gt;
		wikEd.RemoveHighlighting(obj);&lt;br /&gt;
&lt;br /&gt;
		// wikify, don&#039;t allow many attributes&lt;br /&gt;
		if ( (obj.htmlCode === true) &amp;amp;&amp;amp; (wikify !== false) ) {&lt;br /&gt;
			wikEd.WikifyHTML(obj, false);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.WikifyHTML:&lt;br /&gt;
//   obj.html contains the text to be wikified&lt;br /&gt;
//   expects &amp;lt; &amp;gt; &amp;amp;lt; &amp;amp;gt; &amp;amp;amp;  spaces instead of &amp;amp;nbsp; &amp;lt;br&amp;gt; (not \n)&lt;br /&gt;
//   returns &amp;lt;br&amp;gt; (not \n)&lt;br /&gt;
//   wikiCode === true: allow extended set of attributes for existing wikicode, keep leading spaces&lt;br /&gt;
//&lt;br /&gt;
// allowed and converted tags:&lt;br /&gt;
//   br|p&lt;br /&gt;
//   h1|h2|h3|h4|h5|h6&lt;br /&gt;
//   hr&lt;br /&gt;
//   i|dfn|cite|em|var&lt;br /&gt;
//   b|strong&lt;br /&gt;
//   table|caption|col|thead|tfoot|tbody|tr|td|th&lt;br /&gt;
//   dl|dt|dd|li|ol|ul&lt;br /&gt;
//   a&lt;br /&gt;
// not allowed yet:&lt;br /&gt;
//   bdo|q|kbd|samp|abbr|acronym|label&lt;br /&gt;
// other allowed tags:&lt;br /&gt;
//   abbr|big|blockquote|colgroup|center|code|del|div|font|ins|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby&lt;br /&gt;
// mediawiki tags (inline/block):&lt;br /&gt;
//   nowiki|math|score|noinclude|includeonly|onlyinclude|ref|charinsert&lt;br /&gt;
//   gallery|syntaxhighlight|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references&lt;br /&gt;
&lt;br /&gt;
wikEd.WikifyHTML = function (obj, wikiCode) {&lt;br /&gt;
&lt;br /&gt;
	// preserve spaces and content in pre, syntaxhighlight, source, and nowiki&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;(syntaxhighlight|source|pre|nowiki)\b[^\/&amp;gt;]*&amp;gt;)((.|\n)*?)(&amp;lt;\/\2&amp;gt;)/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5) {&lt;br /&gt;
			p3 = p3.replace(/&amp;lt;/g, &#039;\x01&#039;);&lt;br /&gt;
			p3 = p3.replace(/&amp;gt;/g, &#039;\x02&#039;);&lt;br /&gt;
			if (/^(syntaxhighlight|source|pre)$/i.test(p2) === true) {&lt;br /&gt;
				p3 = p3.replace(/ |\xa0/g, &#039;\x03&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			return p1 + p3 + p5;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// delete tags: &amp;lt;style&amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;(style)\b[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/\1&amp;gt;/gi, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove MediaWiki section edit spans&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;span[^&amp;gt;]*class=&amp;quot;editsection&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/span&amp;gt;\s*()/gi, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove MediaWiki heading spans&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;span\b[^&amp;gt;]*\bclass=&amp;quot;mw-headline&amp;quot;[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/span&amp;gt;\s*()/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove MediaWiki divs from article top&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;h3\b[^&amp;gt;]*\bid=&amp;quot;siteSub&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/h3&amp;gt;\s*()/g, &#039;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;div\b[^&amp;gt;]*\bid=&amp;quot;contentSub&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/div&amp;gt;\s*()/g, &#039;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;div\b[^&amp;gt;]*\bid=&amp;quot;jump-to-nav&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/div&amp;gt;\s*()/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove MediaWiki table of contents&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;table\b[^&amp;gt;]*?\bid=&amp;quot;toc&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/table&amp;gt;\s*()/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove MediaWiki print footer&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;div\b[^&amp;gt;]*?\bclass=&amp;quot;printfooter&amp;quot;[^&amp;gt;]*&amp;gt;[^&amp;lt;&amp;gt;&amp;quot;]+&amp;quot;&amp;lt;a\b[^&amp;gt;]*&amp;gt;[^&amp;lt;]+&amp;lt;\/a&amp;gt;&amp;quot;&amp;lt;\/div&amp;gt;\s*()/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove MediaWiki category list tags&lt;br /&gt;
	var regExp = /&amp;lt;div\b[^&amp;gt;]*\bid=&amp;quot;catlinks&amp;quot;[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/div&amp;gt;\s*()/g;&lt;br /&gt;
	while(regExp.test(obj.html) === true) {&lt;br /&gt;
		obj.html = obj.html.replace(regExp, &#039;$1&#039;);&lt;br /&gt;
		regExp.lastIndex = 0;&lt;br /&gt;
	}&lt;br /&gt;
	var regExp = /&amp;lt;p\b[^&amp;gt;]*?\bclass=&amp;quot;catlinks&amp;quot;[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;a\b[^&amp;gt;]*&amp;gt;[^&amp;lt;&amp;gt;]+&amp;lt;\/a&amp;gt;: ((.|\n)*?)&amp;lt;\/p&amp;gt;/g;&lt;br /&gt;
	while(regExp.test(obj.html) === true) {&lt;br /&gt;
		obj.html = obj.html.replace(regExp, &#039;$1$3&#039;);&lt;br /&gt;
		regExp.lastIndex = 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// convert MS-Word non-standard lists: *&lt;br /&gt;
	obj.html = obj.html.replace(/\s*&amp;lt;p\b[^&amp;gt;]*&amp;gt;\s*&amp;lt;!--\[if !supportLists\]--&amp;gt;(.|\n)*?&amp;lt;!--\[endif\]--&amp;gt;\s*((.|\n)*?)\s*&amp;lt;\/p&amp;gt;\s*()/g, &#039;* $2\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// collect MS-Word footnote texts&lt;br /&gt;
	var footnotes = {};&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;div\b[^&amp;gt;]*\bid=&amp;quot;ftn(\d+)&amp;quot;[^&amp;gt;]*&amp;gt;\s*&amp;lt;p class=&amp;quot;MsoFootnoteText&amp;quot;&amp;gt;\s*&amp;lt;a(.|\n)*?&amp;lt;\/a&amp;gt;((.|\n)*?)&amp;lt;\/p&amp;gt;\s*&amp;lt;\/div&amp;gt;/g,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			footnotes[p1] = p3.replace(/^(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;)|(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;)$/g, &#039;&#039;);&lt;br /&gt;
			return &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// add footnotes as &amp;lt;ref&amp;gt; tags&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;a\b[^&amp;gt;]*\bname=&amp;quot;_ftnref(\d+)&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;!--\[endif\]--&amp;gt;\s*&amp;lt;\/span&amp;gt;\s*&amp;lt;\/span&amp;gt;\s*&amp;lt;\/a&amp;gt;/g,&lt;br /&gt;
		function(p, p1) {&lt;br /&gt;
			var ref = &#039;&amp;amp;lt;ref name=&amp;quot;footnote_&#039; + p1 + &#039;&amp;quot;&amp;amp;gt;&#039; + footnotes[p1] + &#039;&amp;amp;lt;/ref&amp;amp;gt;&#039;;&lt;br /&gt;
			return ref;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove MS-Word footnote separator&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;!--\[if !supportFootnotes\]--&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;)*&amp;lt;hr\b[^&amp;gt;]*&amp;gt;\s*&amp;lt;!--\[endif\]--&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;)*()/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// correct name for MS-Word images&lt;br /&gt;
	//                           1                                                    2    2                  3      3       4    4                                 1             5            5&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;v:imagedata\b[^&amp;gt;]*?\bsrc=&amp;quot;[^&amp;quot;&amp;gt;]*?[\\\/]clip_image\d+(\.\w+)&amp;quot;[^&amp;gt;]*? o:title=&amp;quot;([^&amp;quot;&amp;gt;]*)&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;img\b[^&amp;gt;]*? src=&amp;quot;[^&amp;quot;&amp;gt;]*?[\\\/])clip_image\d+\.\w+(&amp;quot;[^&amp;gt;]*&amp;gt;)/g, &#039;$1$3$2$5&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert &amp;lt;div class=&amp;quot;poem&amp;quot;&amp;gt;...&amp;lt;/div&amp;gt; to &amp;lt;poem&amp;gt;...&amp;lt;/poem&amp;gt;&lt;br /&gt;
	obj.html = wikEd.RemoveTag(obj.html, &#039;div&#039;, /\bclass=&amp;quot;poem&amp;quot;/, &#039;&amp;lt;poem&amp;gt;&#039;, &#039;&amp;lt;/poem&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// sanitize &amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;(br)\s+([^&amp;gt;]*?)\s*(\/)&amp;gt;/gi,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			return &#039;&amp;lt;&#039; + p1 + wikEd.SanitizeAttributes(p1, p2, wikiCode) +  p3 + &#039;&amp;gt;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// sanitize &amp;lt;span&amp;gt; &amp;lt;div&amp;gt; &amp;lt;p&amp;gt; &amp;lt;font&amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;(span|div|p|font)\s+([^&amp;gt;]*?)\s*(\/?)&amp;gt;/gi,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			return &#039;&amp;lt;&#039; + p1 + wikEd.SanitizeAttributes(p1, p2, wikiCode) +  p3 + &#039;&amp;gt;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove &amp;lt;span&amp;gt; and &amp;lt;font&amp;gt; pairs withhout attributes&lt;br /&gt;
	obj.html = wikEd.RemoveTag(obj.html, &#039;span|font&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove &amp;lt;p&amp;gt; ... &amp;lt;/p&amp;gt; pairs withhout attributes&lt;br /&gt;
	obj.html = wikEd.RemoveTag(obj.html, &#039;p&#039;, null, &#039;\x00\x00&#039;, &#039;\x00\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// escape character entities&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;amp;(?!(amp;|lt;|gt;))/g, &#039;&amp;amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove comments&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;!--(.|\n)*?--&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;hr&amp;gt; horizontal rule&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;hr\b[^&amp;gt;]*&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00\x00----\x00\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;i&amp;gt; &amp;lt;em&amp;gt; &amp;lt;dfn&amp;gt; &amp;lt;var&amp;gt; &amp;lt;cite&amp;gt; italic&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;(i|em|dfn|var|cite)\b[^&amp;gt;]*?&amp;gt;/gi, &#039;\&#039;\&#039;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;\/(i|em|dfn|var|cite)\b[^&amp;gt;]*?&amp;gt;/gi, &#039;\&#039;\&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;b&amp;gt; &amp;lt;strong&amp;gt; bold&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;(b|strong)\b[^&amp;gt;]*?&amp;gt;/gi, &#039;\&#039;\&#039;\&#039;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;\/(b|strong)\b[^&amp;gt;]*?&amp;gt;/gi, &#039;\&#039;\&#039;\&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;h1&amp;gt; .. &amp;lt;h6&amp;gt; headings&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*(^|\n|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;h1\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/h1&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00\x00= $4 =\x00\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*(^|\n|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;h2\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/h2&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00\x00== $4 ==\x00\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*(^|\n|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;h3\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/h3&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00\x00=== $4 ===\x00\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*(^|\n|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;h4\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/h4&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00\x00==== $4 ====\x00\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*(^|\n|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;h5\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/h5&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00\x00===== $4 =====\x00\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*(^|\n|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;h6\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/h6&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00\x00====== $4 ======\x00\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;(h[0-6])\b[^&amp;gt;]*&amp;gt;((.|\n)*?)&amp;lt;\/\1&amp;gt;/gi, &#039;$2&#039;);&lt;br /&gt;
&lt;br /&gt;
// convert html tables to wikicode&lt;br /&gt;
&lt;br /&gt;
	// remove &amp;lt;thead&amp;gt; &amp;lt;tbody&amp;gt; &amp;lt;tfoot&amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|\x00|&amp;lt;br\b[^&amp;gt;]*&amp;gt;)&amp;lt;\/?(thead|tbody|tfoot)\b[^&amp;gt;]*&amp;gt;(\s|\x00|&amp;lt;br\b[^&amp;gt;]*&amp;gt;)*()/gi, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove &amp;lt;col&amp;gt;&amp;lt;/col&amp;gt; and &amp;lt;colgroup&amp;gt;&amp;lt;/colgroup&amp;gt;\s&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;(col)\b[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/\2&amp;gt;(|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;(colgroup)\b[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/\2&amp;gt;(|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// line breaks to &amp;lt;br /&amp;gt; in table cells, but not in html markup&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;(td|th|caption)\b[^&amp;gt;]*&amp;gt;)((.|\n)*?)(&amp;lt;\/\2&amp;gt;)/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5) {&lt;br /&gt;
			p3 = p3.replace(/^(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00&amp;gt;)+/gi, &#039;&#039;);&lt;br /&gt;
			p3 = p3.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00&amp;gt;)+$/gi, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
			// preserve &amp;lt;br&amp;gt; in tags&lt;br /&gt;
			p3 = p3.replace(/(&amp;lt;(\w+)[^&amp;gt;]*&amp;gt;)((.|\n)*?)(&amp;lt;\/\2+&amp;gt;)/gi,&lt;br /&gt;
				function(p, p1, p2, p3, p4, p5) {&lt;br /&gt;
					p3 = p3.replace(/&amp;lt;br\b[^&amp;gt;]*&amp;gt;\s*()/gi, &#039;\x04&#039;);&lt;br /&gt;
					return p1 + p3 + p5;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			p3 = p3.replace(/&amp;lt;br\b[^&amp;gt;]*&amp;gt;\s*()/gi, &#039;&amp;amp;lt;br /&amp;amp;gt;&#039;);&lt;br /&gt;
			p3 = p3.replace(/\x04/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
			return p1 + p3 + p5;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove table closing tags&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;\/(tr|thead|tbody|tfoot)&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;td&amp;gt; table cells&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;td&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00| &#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;(td)\s+([^&amp;gt;]*)&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p3 = wikEd.SanitizeAttributes(p2, p3, wikiCode);&lt;br /&gt;
			if (p3 === &#039;&#039;) {&lt;br /&gt;
				return &#039;\x00| &#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				return &#039;\x00|&#039; + p3 + &#039; | &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;th&amp;gt; table cells&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;th&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00! &#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;(th)\s+([^&amp;gt;]*)&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p3 = wikEd.SanitizeAttributes(p2, p3, wikiCode);&lt;br /&gt;
			if (p3 === &#039;&#039;) {&lt;br /&gt;
				return &#039;\x00! &#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				return &#039;\x00!&#039; + p3 + &#039; | &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;tr&amp;gt; table rows&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;tr&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00|-\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;(tr)\s+([^&amp;gt;]*)&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			return &#039;\x00|-&#039; + wikEd.SanitizeAttributes(p2, p3, wikiCode) + &#039;\x00&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;caption&amp;gt; table caption&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;caption&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi, &#039;\x00|+ &#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*&amp;lt;(caption)\s+([^&amp;gt;]*)&amp;gt;(\s|&amp;lt;br\b[^&amp;gt;]*&amp;gt;|\x00)*()/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p3 = wikEd.SanitizeAttributes(p2, p3, wikiCode);&lt;br /&gt;
			if (p3 === &#039;&#039;) {&lt;br /&gt;
				return &#039;\x00|+ &#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				return &#039;\x00|+&#039; + p3 + &#039; | &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove closing tags&lt;br /&gt;
	obj.html = obj.html.replace(/\s*&amp;lt;\/(td|th|caption)&amp;gt;\s*()/gi, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// line breaks, also in table cells (continued)&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;br\s*\/?&amp;gt;[\n ]*()/gi, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;table&amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/[\s\x00]*&amp;lt;table&amp;gt;[\s\x00]*(\|-(?=[\n\x00]))?/gi, &#039;\x00\x00{|\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/[\s\x00]*&amp;lt;(table)\s+([^&amp;gt;]*)&amp;gt;[\s\x00]*(\|-(?=[\n\x00]))?/gi,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			var table = &#039;\x00\x00{|&#039;;&lt;br /&gt;
			if (wikEd.config.wikifyTableParameters !== &#039;&#039;) {&lt;br /&gt;
				table += &#039; &#039; + wikEd.config.wikifyTableParameters;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				table += wikEd.SanitizeAttributes(p1, p2, wikiCode);&lt;br /&gt;
			}&lt;br /&gt;
			return table + &#039;\x00&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	obj.html = obj.html.replace(/[\s\x00]*&amp;lt;\/table&amp;gt;[\s\x00]*()/gi, &#039;\x00|}\x00\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert links&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;a(\b[^&amp;gt;]*)&amp;gt;((.|\n)*?)&amp;lt;\/a&amp;gt;/gi,&lt;br /&gt;
		function(p, p1, p2) {&lt;br /&gt;
			var linkParam = p1;&lt;br /&gt;
			var linkText = p2;&lt;br /&gt;
&lt;br /&gt;
			var hrefUrlParam = null;&lt;br /&gt;
			var hrefUrlArticle = null;&lt;br /&gt;
			var imgWidth = &#039;&#039;;&lt;br /&gt;
			var hrefParamTitle = null;&lt;br /&gt;
			var hrefParamISBN = null;&lt;br /&gt;
			var hrefParamAction = null;&lt;br /&gt;
			var hrefParamSpecial = false;&lt;br /&gt;
			var linkArticleAnchor = &#039;&#039;;&lt;br /&gt;
			var linkArticle = &#039;&#039;;&lt;br /&gt;
			var linkTitle = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
			// get href value&lt;br /&gt;
			var hrefValue;&lt;br /&gt;
			var regExpMatchLink = linkParam.match(/\bhref=&amp;quot;([^&amp;quot;&amp;gt;]*)&amp;quot;/);&lt;br /&gt;
			if (regExpMatchLink !== null) {&lt;br /&gt;
				hrefValue = regExpMatchLink[1];&lt;br /&gt;
&lt;br /&gt;
				// get absolute path from ./index.php and ../../index.php&lt;br /&gt;
				hrefValue = wikEd.RelativeToAbsolutePath(hrefValue);&lt;br /&gt;
&lt;br /&gt;
				// check for wiki article link and get parameters&lt;br /&gt;
				//                                             1                         2 article 2                        3articl314 anchor  4                          6                       7   8 urlpar 87539 anchor 9&lt;br /&gt;
				var regExpArticle = new RegExp(wikEd.server + &#039;(&#039; + wikEd.articlePath + &#039;([^&amp;quot;\\?#]+)|&#039; + wikEd.script + &#039;\\?([^&amp;quot;#]*))(#[^&amp;quot;]*)?&#039;);&lt;br /&gt;
				var regExpMatchArticle = regExpArticle.exec(hrefValue);&lt;br /&gt;
				if (regExpMatchArticle !== null) {&lt;br /&gt;
&lt;br /&gt;
					// article name from url path &amp;lt;a href=&amp;quot;../wiki/ hrefUrlArticle &amp;quot;&amp;gt;&lt;br /&gt;
					hrefUrlArticle = regExpMatchArticle[2];&lt;br /&gt;
&lt;br /&gt;
					// article name from url parameters &amp;lt;a href=&amp;quot;url? hrefUrlParam &amp;quot;&amp;gt;&lt;br /&gt;
					hrefUrlParam = regExpMatchArticle[3];&lt;br /&gt;
&lt;br /&gt;
					// link anchor &amp;lt;a href=&amp;quot;link #anchor&amp;quot;&amp;gt;&lt;br /&gt;
					linkArticleAnchor = regExpMatchArticle[4] || &#039;&#039;;&lt;br /&gt;
					if (linkArticleAnchor !== &#039;&#039;) {&lt;br /&gt;
						linkArticleAnchor = linkArticleAnchor.replace(/\.([0-9A-F]{2})/g, &#039;%$1&#039;);&lt;br /&gt;
						linkArticleAnchor = decodeURIComponent(linkArticleAnchor);&lt;br /&gt;
						linkArticleAnchor = linkArticleAnchor.replace(/_\d+$/g, &#039;&#039;);&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// parse hrefUrlParam and check for special parameters&lt;br /&gt;
					if (hrefUrlParam !== null) {&lt;br /&gt;
						var regExpMatchHref;&lt;br /&gt;
						var regExpHref = /(^|&amp;amp;amp;)(\w+)=([^&amp;quot;\&amp;amp;]+)/g;&lt;br /&gt;
						while ( (regExpMatchHref = regExpHref.exec(hrefUrlParam)) !== null) {&lt;br /&gt;
							var param = regExpMatchHref[2];&lt;br /&gt;
							var value = regExpMatchHref[3];&lt;br /&gt;
							switch (param) {&lt;br /&gt;
								case &#039;title&#039;:&lt;br /&gt;
									hrefParamTitle = value;&lt;br /&gt;
									break;&lt;br /&gt;
								case &#039;isbn&#039;:&lt;br /&gt;
									hrefParamISBN = value;&lt;br /&gt;
									break;&lt;br /&gt;
								case &#039;redlink&#039;:&lt;br /&gt;
									break;&lt;br /&gt;
								case &#039;action&#039;:&lt;br /&gt;
									hrefParamAction = value;&lt;br /&gt;
									break;&lt;br /&gt;
								default:&lt;br /&gt;
									hrefParamSpecial = true;&lt;br /&gt;
							}&lt;br /&gt;
							if (hrefParamAction !== null) {&lt;br /&gt;
								break;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// ISBN links&lt;br /&gt;
					if (hrefParamAction === null) {&lt;br /&gt;
						if ( (hrefParamISBN !== null) &amp;amp;&amp;amp; (hrefParamSpecial !== true) ) {&lt;br /&gt;
							var isbn = hrefParamISBN;&lt;br /&gt;
							var regExpMatchISBN = /((\d\-?){13}|(\d\-?){10})/.exec(linkText);&lt;br /&gt;
							if (regExpMatchISBN !== null) {&lt;br /&gt;
								isbn = regExpMatchISBN[1];&lt;br /&gt;
							}&lt;br /&gt;
							return &#039;ISBN &#039; + isbn;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// get article from href parameters&lt;br /&gt;
						else if ( (hrefParamTitle !== null) &amp;amp;&amp;amp; (hrefParamSpecial !== true) ) {&lt;br /&gt;
							linkArticle = hrefParamTitle;&lt;br /&gt;
							linkArticle = linkArticle.replace(/_/g, &#039; &#039;);&lt;br /&gt;
							linkArticle = decodeURIComponent(linkArticle);&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// get article name from url path&lt;br /&gt;
						else if (hrefUrlArticle !== null) {&lt;br /&gt;
							linkArticle = hrefUrlArticle;&lt;br /&gt;
							linkArticle = linkArticle.replace(/_/g, &#039; &#039;);&lt;br /&gt;
							linkArticle = decodeURIComponent(linkArticle);&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// get article name from &amp;lt;a title=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
						else {&lt;br /&gt;
							var regExpMatchTitle = /\btitle=&amp;quot;([^&amp;quot;&amp;gt;]+)&amp;quot;/.exec(linkParam);&lt;br /&gt;
							if (regExpMatchTitle !== null) {&lt;br /&gt;
								linkArticle = regExpMatchTitle[1];&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// format wiki link&lt;br /&gt;
				if (linkArticle !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
					// check for wiki image&lt;br /&gt;
					var regExpMatchImage = /^&amp;lt;img\b[^&amp;gt;]*?\bwidth=&amp;quot;(\d+)&amp;quot;[^&amp;gt;]*&amp;gt;$/.exec(linkText);&lt;br /&gt;
					if (regExpMatchImage !== null) {&lt;br /&gt;
						imgWidth = regExpMatchImage[1];&lt;br /&gt;
						imgWidth = &#039;|&#039; + imgWidth + &#039;px&#039;;&lt;br /&gt;
						if ( (linkTitle !== &#039;&#039;) &amp;amp;&amp;amp; (linkTitle != &#039;Enlarge&#039;) ) {&lt;br /&gt;
							linkTitle = &#039;|&#039; + linkTitle;&lt;br /&gt;
							return &#039;[[&#039; + linkArticle + imgWidth + linkTitle + &#039;]]&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							return &#039;[[&#039; + linkArticle + imgWidth + &#039;]]&#039;;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// category link&lt;br /&gt;
					var regExpCat = new RegExp(&#039;^(Category|&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;)\\s*:(.*)&#039;, &#039;i&#039;);&lt;br /&gt;
					var regExpMatchCat = regExpCat.exec(linkArticle);&lt;br /&gt;
					if (regExpMatchCat !== null) {&lt;br /&gt;
						return &#039;[[&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;:&#039; + regExpMatchCat[1].charAt(0).toUpperCase() + linkText.substr(1) + &#039;]]&#039;;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// wiki link&lt;br /&gt;
					if (linkArticle == linkText.charAt(0).toUpperCase() + linkText.substr(1)) {&lt;br /&gt;
						return &#039;[[&#039; + linkText + linkArticleAnchor + &#039;]]&#039;;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// date link (English only)&lt;br /&gt;
					var regExpMatchDate = /^(January|February|March|April|May|June|July|August|September|October|November|December) (\d{1,2})$/.exec(linkArticle);&lt;br /&gt;
					if (regExpMatchDate !== null) {&lt;br /&gt;
						var month = regExpMatchDate[1];&lt;br /&gt;
						var day = regExpMatchDate[2];&lt;br /&gt;
						if (linkText == (day + &#039; &#039; + month) ) {&lt;br /&gt;
							return &#039;[[&#039; + linkArticle + linkArticleAnchor + &#039;]]&#039;;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// lowercase the article name if the first char of the link text can exist in lower/uppercase and is lowercase&lt;br /&gt;
					if ( linkText.charAt(0).toLowerCase() != linkText.charAt(0).toUpperCase() ) {&lt;br /&gt;
						if ( linkText.charAt(0) == linkText.charAt(0).toLowerCase() ) {&lt;br /&gt;
							linkArticle = linkArticle.charAt(0).toLowerCase() + linkArticle.substr(1);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// suffix links&lt;br /&gt;
					var regExpStrSuffix = new RegExp(&#039;^&#039; + linkArticle.replace(/(\W)/g, &#039;\\$1&#039;) + &#039;([&#039; + wikEd.letters + &#039;_0-9]+)$&#039;);&lt;br /&gt;
					var regExpMatchSuffix = regExpStrSuffix.exec(linkText);&lt;br /&gt;
					if (regExpMatchSuffix !== null) {&lt;br /&gt;
						return &#039;[[&#039; + linkArticle + linkArticleAnchor + &#039;]]&#039; + regExpMatchSuffix[1];&lt;br /&gt;
					}&lt;br /&gt;
					return &#039;[[&#039; + linkArticle + linkArticleAnchor + &#039;|&#039; + linkText + &#039;]]&#039;;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// external link&lt;br /&gt;
				if (hrefValue !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
					// PubMed link&lt;br /&gt;
					var regExpMatchPubMed = /^(https?:)?\/\/www\.ncbi\.nlm\.nih\.gov\/entrez\/query\.fcgi\?cmd=Retrieve&amp;amp;amp;db=pubmed&amp;amp;amp;.*?&amp;amp;amp;list_uids=(\d+)/.exec(hrefValue);&lt;br /&gt;
					if (regExpMatchPubMed !== null) {&lt;br /&gt;
						return &#039;PMID &#039; + regExpMatchPubMed[2];&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// DOI link&lt;br /&gt;
					var regExpMatchDOI;&lt;br /&gt;
					regExpMatchDOI = /^(https?:)?\/\/dx\.doi\.org\/(.*)/.exec(hrefValue);&lt;br /&gt;
					if (regExpMatchDOI !== null) {&lt;br /&gt;
						return &#039;{{doi|&#039; + regExpMatchDOI[2] + &#039;}}&#039;;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// other external link&lt;br /&gt;
					return &#039;[&#039; + hrefValue + &#039; &#039; + linkText + &#039;]&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// return unchanged text&lt;br /&gt;
			return p1;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// clean up MediaWiki category list&lt;br /&gt;
	var regExp = new RegExp(&#039;&amp;lt;span\\b[^&amp;gt;]*&amp;gt;(\\[\\[(Category|&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;)\\s*:[^\\]]+\\]\\])&amp;lt;\\/span&amp;gt;[\\s\\x00\\|]*&#039;, &#039;gi&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(regExp, &#039;$1\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// clean up DOI&lt;br /&gt;
	obj.html = obj.html.replace(/\[\[Digital object identifier\|DOI\]\]:(\{\{doi\|[^\}\s]+\}\})/gi, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert images&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;img\b([^&amp;gt;]*)&amp;gt;/gi,&lt;br /&gt;
		function(p, p1) {&lt;br /&gt;
&lt;br /&gt;
			// get and format parameters&lt;br /&gt;
			var address = &#039;&#039;;&lt;br /&gt;
			var regExpMatch = /\bsrc\s*=\s*(&#039;|&amp;quot;)([^&#039;&amp;quot;]*)(&#039;|&amp;quot;)/i.exec(p1);&lt;br /&gt;
			if (regExpMatch !== null) {&lt;br /&gt;
				address = regExpMatch[2].replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var imgAlt = &#039;&#039;;&lt;br /&gt;
			regExpMatch = /\balt\s*=\s*(&#039;|&amp;quot;)([^&#039;&amp;quot;]*)(&#039;|&amp;quot;)/i.exec(p1);&lt;br /&gt;
			if (regExpMatch !== null) {&lt;br /&gt;
				imgAlt = regExpMatch[2].replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
				imgAlt = imgAlt.replace(/&amp;amp;amp;nbsp;|[\n\x00]/g, &#039; &#039;);&lt;br /&gt;
				imgAlt = imgAlt.replace(/\s{2,}/g, &#039; &#039;);&lt;br /&gt;
				imgAlt = imgAlt.replace(/^\s|\s$/g, &#039;&#039;);&lt;br /&gt;
				if (imgAlt !== &#039;&#039;) {&lt;br /&gt;
					imgAlt = &#039;|&#039; + imgAlt;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var imgWidth = &#039;&#039;;&lt;br /&gt;
			regExpMatch = /\bwidth\s*=\s*(&#039;|&amp;quot;)([^&#039;&amp;quot;]*)(&#039;|&amp;quot;)/i.exec(p1);&lt;br /&gt;
			if (regExpMatch !== null) {&lt;br /&gt;
				imgWidth = &#039;|&#039; + regExpMatch[2].replace(/^\s+|\s+$/g, &#039;&#039;) + &#039;px&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var imgLink = &#039;&#039;;&lt;br /&gt;
			regExpMatch = /([^\/]+)$/.exec(address);&lt;br /&gt;
			if (regExpMatch !== null) {&lt;br /&gt;
				imgLink = regExpMatch[1];&lt;br /&gt;
				if (imgLink !== &#039;&#039;) {&lt;br /&gt;
					return &#039;[[&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;:&#039; + imgLink + imgWidth + imgAlt + &#039;]]&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			return &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// convert lists: * # : ;&lt;br /&gt;
	var listObj = {};&lt;br /&gt;
	listObj.prefix = &#039;&#039;;&lt;br /&gt;
	obj.html = obj.html.replace(/[\s\x00]*&amp;lt;(\/?(ol|ul|li|dl|dd|dt))\b[^&amp;gt;]*&amp;gt;[\s\x00]*()/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			switch (p1.toLowerCase()) {&lt;br /&gt;
				case &#039;ol&#039;:&lt;br /&gt;
					listObj.prefix += &#039;#&#039;;&lt;br /&gt;
					return &#039;\x00&#039;;&lt;br /&gt;
				case &#039;ul&#039;:&lt;br /&gt;
					listObj.prefix += &#039;*&#039;;&lt;br /&gt;
					return &#039;\x00&#039;;&lt;br /&gt;
				case &#039;dl&#039;:&lt;br /&gt;
					listObj.prefix += &#039;:&#039;;&lt;br /&gt;
					return &#039;\x00&#039;;&lt;br /&gt;
				case &#039;/ol&#039;:&lt;br /&gt;
				case &#039;/ul&#039;:&lt;br /&gt;
				case &#039;/dl&#039;:&lt;br /&gt;
					listObj.prefix = listObj.prefix.substr(0, listObj.prefix.length - 1);&lt;br /&gt;
					return &#039;\x00\x00&#039;;&lt;br /&gt;
				case &#039;li&#039;:&lt;br /&gt;
				case &#039;dd&#039;:&lt;br /&gt;
					return &#039;\x00&#039; + listObj.prefix + &#039; &#039;;&lt;br /&gt;
				case &#039;dt&#039;:&lt;br /&gt;
					return &#039;\x00&#039; + listObj.prefix.replace(/:$/, &#039;;&#039;) + &#039; &#039;;&lt;br /&gt;
				case &#039;/li&#039;:&lt;br /&gt;
				case &#039;/dt&#039;:&lt;br /&gt;
				case &#039;/dd&#039;:&lt;br /&gt;
					return &#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			return &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	obj.html = obj.html.replace(/[\n|\x00]+[#*:;]+\s(?=[\n|\x00])/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// &amp;lt;&amp;gt; remove not allowed tags&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;\/?)(\/?)(\w+)([^&amp;gt;]*&amp;gt;)/g,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
&lt;br /&gt;
			// keep html elements with name, id, or class starting with wikEdKeep&lt;br /&gt;
			if (wikEd.keepFormatting === true) {&lt;br /&gt;
				if ( /^(div|span|ins|del)$/i.test(p3) === true) {&lt;br /&gt;
					if ( /\b(name|id|class)=&amp;quot;wikEdKeep/.test(p4) === true) {&lt;br /&gt;
						p = p.replace(/&amp;lt;/g, &#039;\x01&#039;);&lt;br /&gt;
						p = p.replace(/&amp;gt;/g, &#039;\x02&#039;);&lt;br /&gt;
						return p;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// keep allowed tags&lt;br /&gt;
			if ( /^(abbr|big|blockquote|colgroup|center|code|del|div|br|font|ins|p|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby|nowiki|math|score|noinclude|includeonly|onlyinclude|ref|charinsert|gallery|syntaxhighlight|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references|syntaxhighlight|wbr)$/i.test(p3) === true) {&lt;br /&gt;
				return p;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// sanitize attributes in opening html tags&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;(\w+)\s+([^&amp;gt;]*?)\s*(\/?)&amp;gt;/gi,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			if (p3 !== &#039;&#039;) {&lt;br /&gt;
				p3 = &#039; &#039; + p3;&lt;br /&gt;
			}&lt;br /&gt;
			return &#039;&amp;lt;&#039; + p1 + wikEd.SanitizeAttributes(p1, p2, wikiCode) + p3 + &#039;&amp;gt;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// unformat underlined, italic or bold blanks&lt;br /&gt;
	// corrupts existing text&lt;br /&gt;
	// obj.html = obj.html.replace(/&amp;lt;u&amp;gt;(&#039;&#039;&#039;|&#039;&#039;|\s|\x00)*([\s\x00]+)(&#039;&#039;&#039;|&#039;&#039;|\s|\x00)*&amp;lt;\/u&amp;gt;/g, &#039;$2&#039;);&lt;br /&gt;
	// obj.html = obj.html.replace(/&#039;&#039;&#039;(&#039;&#039;|\s|\x00)*([\s\x00]+)(&#039;&#039;|\s|\x00)*&#039;&#039;&#039;/g, &#039;$2&#039;);&lt;br /&gt;
	// obj.html = obj.html.replace(/&#039;&#039;([\s\x00]+)&#039;&#039;/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// fix MS Word non-style heading formatting&lt;br /&gt;
	obj.html = obj.html.replace(/(\x00(={1,6})\s*)(&amp;lt;u&amp;gt;|&#039;&#039;&#039;|&#039;&#039;)+((.|\n)*?)(&amp;lt;\/u&amp;gt;|&#039;&#039;&#039;|&#039;\&#039;)+( *\2\x00)/gi, &#039;$1$4$7&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove empty headings&lt;br /&gt;
	obj.html = obj.html.replace(/\x00(={1,6})\s+\1\x00/g, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove space-only lines&lt;br /&gt;
	if (wikiCode !== true) {&lt;br /&gt;
		obj.html = obj.html.replace(/([\s\x00]*\x00[\s\x00]*)/g,&lt;br /&gt;
			function(p, p1) {&lt;br /&gt;
				return p1.replace(/\n/g, &#039;\x00&#039;);&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove trailing linebreaks from table cells&lt;br /&gt;
	obj.html = obj.html.replace(/\x00{2,}(\||!)/g, &#039;\x00$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove leading and trailing spaces&lt;br /&gt;
	if (wikiCode === true) {&lt;br /&gt;
		obj.html = obj.html.replace(/\x00[ \n]+&amp;lt;/g, &#039;\x00&amp;lt;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		obj.html = obj.html.replace(/\x00\s+&amp;lt;/g, &#039;\x00&amp;lt;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;gt;\s+\x00/g, &#039;&amp;gt;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove empty inline and block tag pairs&lt;br /&gt;
	obj.html = wikEd.RemoveEmptyTags(obj.html, /( *)&amp;lt;(abbr|big|colgroup|code|del|font|ins|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby|nowiki|math|score|noinclude|includeonly|onlyinclude|ref|charinsert)\b[^&amp;gt;]*&amp;gt;&amp;lt;\/\1&amp;gt; *()/gi, &#039;$1&#039;);&lt;br /&gt;
	obj.html = wikEd.RemoveEmptyTags(obj.html, /[\s\x00]*&amp;lt;(blockquote|center|div|gallery|syntaxhighlight|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)\b[^&amp;gt;]*&amp;gt;&amp;lt;\/\1&amp;gt;[\s\x00]*()/gi, &#039;\x00\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove empty lines from block tags&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;(blockquote|center|div|p|pre|gallery|syntaxhighlight|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)\b[^&amp;gt;]*&amp;gt;[\s\x00])[\s\x00]+/gi, &#039;$1&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/[\s\x00]+([\s\x00]&amp;lt;\/(blockquote|center|div|p|pre|gallery|syntaxhighlight|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)&amp;gt;)/gi, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// blockquote&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;blockquote\b[^&amp;gt;]*&amp;gt;[\s\x00]+)([\S\s]*?)([\s\x00]+&amp;lt;\/blockquote&amp;gt;)/gi,&lt;br /&gt;
		function(p, p1, p2, p3) {&lt;br /&gt;
			p2 = p2.replace(/\x00/g, &#039;&amp;lt;br&amp;gt;\n&#039;);&lt;br /&gt;
			return p1 + p2 + p3;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// escape &amp;lt; &amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// newlines to &amp;lt;br&amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/\x00+\n/g, &#039;\n&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\n\x00+/g, &#039;\n&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\n*\x00(\x00|\n)+/g, &#039;\n\n&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\x00/g, &#039;\n&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// preserved table and pre tags and spaces&lt;br /&gt;
	obj.html = obj.html.replace(/\x01/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\x02/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\x03/g, &#039;\xa0&#039;);&lt;br /&gt;
&lt;br /&gt;
	// table block element needs only one newline&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;\/table&amp;gt;&amp;lt;br\b[^&amp;gt;]*&amp;gt;)(&amp;lt;br\b[^&amp;gt;]*&amp;gt;)+/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove empty lines from article start and end&lt;br /&gt;
	if (obj.from == &#039;whole&#039;) {&lt;br /&gt;
		obj.html = obj.html.replace(/^(&amp;lt;br\b[^&amp;gt;]*&amp;gt;)+/gi, &#039;&#039;);&lt;br /&gt;
		obj.html = obj.html.replace(/(&amp;lt;br\b[^&amp;gt;]*&amp;gt;)+$/gi, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RemoveEmptyTag: remove empty html tag pairs&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.RemoveEmptyTags = function (html, tag, replace) {&lt;br /&gt;
&lt;br /&gt;
	var tagRegExp;&lt;br /&gt;
	if (typeof tag == &#039;string&#039;) {&lt;br /&gt;
		tagRegExp = new RegExp(&#039;&amp;lt;(&#039; + tag + &#039;)\\b[^&amp;gt;]*&amp;gt;&amp;lt;\/\\1&amp;gt;&#039;, &#039;gi&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		tagRegExp = tag;&lt;br /&gt;
	}&lt;br /&gt;
	if (replace === undefined) {&lt;br /&gt;
		replace = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	while (tagRegExp.test(html) === true) {&lt;br /&gt;
		html = html.replace(tagRegExp, replace);&lt;br /&gt;
		tagRegExp.lastIndex = 0;&lt;br /&gt;
	}&lt;br /&gt;
	return html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RemoveTag: recursively remove html tag pairs&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.RemoveTag = function (html, tag, attribRegExp, replaceOpen, replaceClose) {&lt;br /&gt;
&lt;br /&gt;
	attribRegExp = attribRegExp || null;&lt;br /&gt;
	replaceOpen = replaceOpen || &#039;&#039;;&lt;br /&gt;
	replaceClose = replaceClose || &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	var tagRegExp;&lt;br /&gt;
	if (typeof tag == &#039;string&#039;) {&lt;br /&gt;
&lt;br /&gt;
		//                      1 2    23           3   4     4 1&lt;br /&gt;
		tagRegExp = new RegExp(&#039;(&amp;lt;(\\/?)(&#039; + tag + &#039;)\\b([^&amp;gt;]*)&amp;gt;)&#039;, &#039;g&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		tagRegExp = tag;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var isRemove = [];&lt;br /&gt;
	html = html.replace(tagRegExp,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p2 = p2 || &#039;&#039;;&lt;br /&gt;
			p4 = p4 || &#039;&#039;;&lt;br /&gt;
			if (p2 === &#039;&#039;) {&lt;br /&gt;
				if (&lt;br /&gt;
					( (attribRegExp === null) &amp;amp;&amp;amp; (p4 === &#039;&#039;) ) ||&lt;br /&gt;
					( (attribRegExp !== null) &amp;amp;&amp;amp; (attribRegExp.test(p4) === true) )&lt;br /&gt;
				) {&lt;br /&gt;
					isRemove.push(true);&lt;br /&gt;
					return replaceOpen;&lt;br /&gt;
				}&lt;br /&gt;
				isRemove.push(false);&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
			if (isRemove.pop() === true) {&lt;br /&gt;
				return replaceClose;&lt;br /&gt;
			}&lt;br /&gt;
			return p1;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	return html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RemoveEmbracingTags: recursively remove embracing html tag pairs&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.RemoveEmbracingTags = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	// quick test for no embracing tags&lt;br /&gt;
	if (/^[^&amp;lt;]|[^&amp;gt;]$/.test(obj.html)) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// dump fragments to code list&lt;br /&gt;
	// use stack to identify tag pairs&lt;br /&gt;
	// use pointer list to link pairs&lt;br /&gt;
	var stack = [];&lt;br /&gt;
	var code = [];&lt;br /&gt;
	var pointer = [];&lt;br /&gt;
&lt;br /&gt;
	//            1     12 3   34   4        25     5&lt;br /&gt;
	var regExp = /([^&amp;lt;]*)(&amp;lt;(\/?)(\w+)\b[^&amp;gt;]*&amp;gt;)([^&amp;lt;]*)/g;&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	while ( (regExpMatch = regExp.exec(obj.html)) !== null) {&lt;br /&gt;
		var pre = regExpMatch[1];&lt;br /&gt;
		var tag = regExpMatch[2];&lt;br /&gt;
		var close = regExpMatch[3];&lt;br /&gt;
		var name = regExpMatch[4];&lt;br /&gt;
		var post = regExpMatch[5];&lt;br /&gt;
&lt;br /&gt;
		// pre&lt;br /&gt;
		if (pre !== &#039;&#039;) {&lt;br /&gt;
			code.push(pre);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// ignore &amp;lt;tag /&amp;gt;&lt;br /&gt;
		if (/\/&amp;gt;$/.test(tag) === false) {&lt;br /&gt;
&lt;br /&gt;
			// opening tag&lt;br /&gt;
			if (close != &#039;/&#039;) {&lt;br /&gt;
				stack.push([code.length, name]);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// closing tag&lt;br /&gt;
			else {&lt;br /&gt;
				var pop = stack.pop();&lt;br /&gt;
				var openName = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
				// skip empty (void) opening elements on stack&lt;br /&gt;
				while (pop !== undefined) {&lt;br /&gt;
					openName = pop[1];&lt;br /&gt;
					if (name == openName) {&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
					else if (/^(area|br|col|embed|hr|img|input|p|param|source|wbr)$/i.test(openName) === true) {&lt;br /&gt;
						pop = stack.pop();&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if (name == openName) {&lt;br /&gt;
					var pos = pop[0];&lt;br /&gt;
					pointer[code.length] = pos;&lt;br /&gt;
					pointer[pos] = code.length;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		code.push(tag);&lt;br /&gt;
&lt;br /&gt;
		// post&lt;br /&gt;
		if (post !== &#039;&#039;) {&lt;br /&gt;
			code.push(post);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// check for embracing pairs and remove them&lt;br /&gt;
	var j = code.length;&lt;br /&gt;
	for (var i = 0; i &amp;lt; j; i ++) {&lt;br /&gt;
		j --;&lt;br /&gt;
		if (pointer[i] === undefined) {&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		if (pointer[i] != j) {&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		code[i] = &#039;&#039;;&lt;br /&gt;
		code[j] = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// join fragments&lt;br /&gt;
	obj.html = code.join(&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RelativeToAbsolutePath&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.RelativeToAbsolutePath = function (relativePath, fullPath) {&lt;br /&gt;
&lt;br /&gt;
	var absolutePath = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// get current url&lt;br /&gt;
	if (fullPath === undefined) {&lt;br /&gt;
		fullPath = window.location.href;&lt;br /&gt;
		fullPath = fullPath.replace(/#.*()/, &#039;&#039;);&lt;br /&gt;
		fullPath = fullPath.replace(/\?.*()/, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// ./index.php&lt;br /&gt;
	if (/^\.\/()/.test(relativePath) === true) {&lt;br /&gt;
		relativePath = relativePath.replace(/^\.\/()/, &#039;&#039;);&lt;br /&gt;
		fullPath = fullPath.replace(/\/[^\/]*$/, &#039;&#039;);&lt;br /&gt;
		absolutePath = fullPath + &#039;/&#039; + relativePath;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// ../../index.php&lt;br /&gt;
	else if (/^\.\.\/()/.test(relativePath) === true) {&lt;br /&gt;
		var regExp = /^\.\.\/()/;&lt;br /&gt;
		while (regExp.test(relativePath) === true) {&lt;br /&gt;
			relativePath = relativePath.replace(/^\.\.\/()/, &#039;&#039;);&lt;br /&gt;
			fullPath = fullPath.replace(/\/[^\/]*$/, &#039;&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		absolutePath = fullPath + &#039;/&#039; + relativePath;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// full path&lt;br /&gt;
	else {&lt;br /&gt;
		absolutePath = relativePath;&lt;br /&gt;
	}&lt;br /&gt;
	return absolutePath;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SanitizeAttributes: see Sanitizer.php&lt;br /&gt;
//   wikiCode === true: allow extended set of attributes for existing wikicode&lt;br /&gt;
&lt;br /&gt;
wikEd.SanitizeAttributes = function (tag, attributes, wikiCode, errors) {&lt;br /&gt;
&lt;br /&gt;
	attributes = attributes || &#039;&#039;;&lt;br /&gt;
	var common;&lt;br /&gt;
	var tablealign;&lt;br /&gt;
	var tablecell;&lt;br /&gt;
	var table;&lt;br /&gt;
	if (wikiCode === true) {&lt;br /&gt;
		common = &#039;|dir|style|class|lang|id|title|&#039;;&lt;br /&gt;
		tablealign = &#039;|align|char|charoff|valign|&#039;;&lt;br /&gt;
		table = &#039;|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor|&#039;;&lt;br /&gt;
		tablecell = &#039;|abbr|axis|headers|scope|rowspan|colspan|nowrap|width|height|bgcolor|&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		common = &#039;|dir|&#039;;&lt;br /&gt;
		table = &#039;|border|cellspacing|cellpadding|align|bgcolor|&#039;;&lt;br /&gt;
		tablealign = &#039;|align|valign|&#039;;&lt;br /&gt;
		tablecell = &#039;|rowspan|colspan|nowrap|bgcolor|&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	tag = tag.toLowerCase();&lt;br /&gt;
	var sanitized = &#039;&#039;;&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
&lt;br /&gt;
	//               1   12       34   45   5   6   632&lt;br /&gt;
	var regExp = /\s*(\w+)(\s*=\s*((&#039;|&amp;quot;)(.*?)\4|(\w+)))?\s*/g;&lt;br /&gt;
	var junk = attributes.replace(regExp, &#039;\x00&#039;);&lt;br /&gt;
	junk = junk.replace(/^\x00+|\x00\x00+|\x00+$/g, &#039;&#039;);&lt;br /&gt;
	junk = junk.replace(/\x00/g, &#039;/&#039;);&lt;br /&gt;
	var error = &#039;&#039;;&lt;br /&gt;
	if (junk !== &#039;&#039;) {&lt;br /&gt;
		error += &#039;Not supported text in attribute. (&#039; + junk + &#039;)&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// error handling&lt;br /&gt;
	if (error !== &#039;&#039;) {&lt;br /&gt;
		if (errors !== undefined) {&lt;br /&gt;
			var attribClean = attributes;&lt;br /&gt;
			attribClean = attribClean.replace(/  +/g, &#039; &#039;);&lt;br /&gt;
			attribClean = attribClean.replace(/^ | $/g, &#039;&#039;);&lt;br /&gt;
			if (attribClean !== &#039;&#039;) {&lt;br /&gt;
				attribClean = &#039; &#039; + attribClean;&lt;br /&gt;
			}&lt;br /&gt;
			errors.push(error + &#039;(&amp;lt;&#039; + tag + attribClean + &#039;&amp;gt;)&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	while ( (regExpMatch = regExp.exec(attributes)) !== null) {&lt;br /&gt;
		var error = &#039;&#039;;&lt;br /&gt;
		var attrib = regExpMatch[1].toLowerCase();&lt;br /&gt;
		var attribValue = regExpMatch[5] || regExpMatch[6] || &#039;&#039;;&lt;br /&gt;
		var valid = false;&lt;br /&gt;
		var tagCheck = &#039;|&#039; + tag + &#039;|&#039;;&lt;br /&gt;
		var attribCheck = &#039;|&#039; + attrib + &#039;|&#039;;&lt;br /&gt;
&lt;br /&gt;
		// empty or missing attributes as parameters for wiki markup&lt;br /&gt;
		var flag = false;&lt;br /&gt;
&lt;br /&gt;
		// include non-html wiki markup and  extended set of attributes for existing wikicode&lt;br /&gt;
		if (wikiCode === true) {&lt;br /&gt;
			if (&#039;|center|em|strong|cite|code|var|sub|sup|dl|dd|dt|tt|b|i|big|small|strike|s|u|rb|rp|ruby|wbr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|div|span|h1|h2|h3|h4|h5|h6|p|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|align|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|blockquote|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|cite|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|br|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if (&#039;|style|clear|&#039;.indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|pre|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|width|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|ins|del|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|cite|datetime|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;ul&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|type|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|ol|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|type|start|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|li|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|type|value|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|table|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + table).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|caption|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|align|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|thead|tfoot|tbody|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|colgroup|col|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|span|width|&#039; + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|tr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|bgcolor|&#039; + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|td|th|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + tablecell + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|font|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|size|color|face|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|abbr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|hr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|noshade|size|width|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|rt|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|rbspan|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|dfn|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((&#039;|name|id|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// wiki markup&lt;br /&gt;
			else if (&#039;|ref|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((&#039;|name|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|references|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|syntaxhighlight|source|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|lang|enclose|highlight|line|start|&#039;).indexOf(attribCheck) &amp;gt;= 0) {&lt;br /&gt;
					valid = true;&lt;br /&gt;
					if ( (&#039;|line|&#039;.indexOf(attribCheck) &amp;gt;= 0) &amp;amp;&amp;amp; (attribValue === &#039;&#039;) ) {&lt;br /&gt;
						flag = true;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|poem|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|compact|&#039;).indexOf(attribCheck) &amp;gt;= 0) {&lt;br /&gt;
					valid = true;&lt;br /&gt;
					if ( (&#039;|compact|&#039;.indexOf(attribCheck) &amp;gt;= 0) &amp;amp;&amp;amp; (attribValue === &#039;&#039;) ) {&lt;br /&gt;
						flag = true;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|categorytree|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|mode|depth|onlyroot|hideroot|hideprefix|showcount|namespaces|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|gallery|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|perrow|widths|heights|caption|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|nowiki|noinclude|includeonly|onlyinclude|inputbox|timeline|imagemap|hiero|charinsert|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|math|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|alt|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|score|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|lang|midi|override_midi|override_ogg|raw vorbis|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// strict, for html code to be wikified from external sources (websites, Word)&lt;br /&gt;
		else {&lt;br /&gt;
			if (&#039;|center|em|strong|cite|code|var|sub|sup|dl|dd|dt|tt|b|i|big|small|strike|s|u|rb|rp|ruby|blockquote|pre|ins|del|wbr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|div|span|h1|h2|h3|h4|h5|h6|p|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|align|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|br|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if (&#039;|clear|&#039;.indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|ul|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|type|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|ol|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|type|start|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|li|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|type|value|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|table|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + table).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|caption|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|align|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|thead|tfoot|tbody|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|colgroup|col|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|span|&#039; + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|tr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|bgcolor&#039; + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|td|th|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + tablecell + tablealign).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|font|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|color|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|abbr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|title|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|hr|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|noshade|size|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|rt|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((common + &#039;|rbspan|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
			else if (&#039;|dfn|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if ((&#039;|name|id|&#039;).indexOf(attribCheck) &amp;gt;= 0) { valid = true; }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// ignore empty attributes&lt;br /&gt;
		if ( (flag !== true) &amp;amp;&amp;amp; (attribValue === &#039;&#039;) ) {&lt;br /&gt;
			error += &#039;Empty attribute. &#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// ignore not supported attributes&lt;br /&gt;
		if (valid === false) {&lt;br /&gt;
			error += &#039;Not supported attribute &#039; + attrib + &#039;. &#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// error handling&lt;br /&gt;
		if (error !== &#039;&#039;) {&lt;br /&gt;
			if (errors !== undefined) {&lt;br /&gt;
				var attribClean = attributes;&lt;br /&gt;
				attribClean = attribClean.replace(/  +/g, &#039; &#039;);&lt;br /&gt;
				attribClean = attribClean.replace(/^ | $/g, &#039;&#039;);&lt;br /&gt;
				if (attribClean !== &#039;&#039;) {&lt;br /&gt;
					attribClean = &#039; &#039; + attribClean;&lt;br /&gt;
				}&lt;br /&gt;
				errors.push(error + &#039;(&amp;lt;&#039; + tag + attribClean + &#039;&amp;gt;)&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// clean up defaults for align&lt;br /&gt;
		if (attrib == &#039;align&#039;) {&lt;br /&gt;
			if (&#039;|tr|td|th|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if (attribValue == &#039;left&#039;) {&lt;br /&gt;
					attribValue = &#039;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// clean up defaults for valign&lt;br /&gt;
		else if (attrib == &#039;valign&#039;) {&lt;br /&gt;
			if (&#039;|tr|td|th|&#039;.indexOf(tagCheck) &amp;gt;= 0) {&lt;br /&gt;
				if (attribValue == &#039;top&#039;) {&lt;br /&gt;
					attribValue = &#039;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// clean up style&lt;br /&gt;
		else if (attrib == &#039;style&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// remove non-standard Mozilla styles&lt;br /&gt;
			attribValue = attribValue.replace(/(^|\s)(-moz-[\w\-]+):\s[\w\-]+;\s*()/g, &#039;$1&#039;);&lt;br /&gt;
			attribValue = attribValue.replace(/(^|\s)([\w\-]+):\s[^;]*(-moz-[\w\-]+|windowtext)[^;]*;\s*()/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
			// remove dimensions from null values&lt;br /&gt;
			attribValue = attribValue.replace(/\b0(%|in|cm|mm|em|ex|pt|pc|px)\b/g, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
			// remove empty definitions and spaces&lt;br /&gt;
			attribValue = attribValue.replace(/[\w\-]+\s*\:\s*; *()/g, &#039;&#039;);&lt;br /&gt;
			attribValue = attribValue.replace(/\s*(;|:)\s*()/g, &#039;$1 &#039;);&lt;br /&gt;
			attribValue = attribValue.replace(/(\s|;)+$/g, &#039;;&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// clean up class&lt;br /&gt;
		else if (attrib == &#039;class&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// remove MS Word classes&lt;br /&gt;
			attribValue = attribValue.replace(/^Ms.*$/g, &#039;&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add attribute&lt;br /&gt;
		if (flag === true) {&lt;br /&gt;
			sanitized += &#039; &#039; + attrib;&lt;br /&gt;
		}&lt;br /&gt;
		else if (attribValue !== &#039;&#039;) {&lt;br /&gt;
			sanitized += &#039; &#039; + attrib + &#039;=&amp;quot;&#039; + attribValue + &#039;&amp;quot;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return sanitized;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.RemoveHighlighting: remove syntax highlighting in obj.html; sets obj.htmlCode if text contains html code&lt;br /&gt;
//   expects &amp;lt;br&amp;gt; instead of \n&lt;br /&gt;
&lt;br /&gt;
wikEd.RemoveHighlighting = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	// preserve tags, spaces and newlines in pre tag markup&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;amp;lt;(syntaxhighlight|source|pre)\b[^\/]*?&amp;amp;gt;)((.|\n)*?)(&amp;amp;lt;\/\2&amp;amp;gt;)/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5) {&lt;br /&gt;
			p3 = p3.replace(/ /g, &#039;\xa0&#039;);&lt;br /&gt;
			p3 = p3.replace(/\n/g, &#039;\x00&#039;);&lt;br /&gt;
			return p1 + p3 + p5;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// preserve spaces and content in pre, syntaxhighlight, source, and nowiki&lt;br /&gt;
	obj.plain = obj.plain.replace(/(&amp;amp;lt;(syntaxhighlight|source|pre|nowiki)\b[^\/]*?&amp;amp;gt;)((.|\n)*?)(&amp;amp;lt;\/\2&amp;amp;gt;)/gi,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5) {&lt;br /&gt;
			p3 = p3.replace(/([\[\]{}=*#:;|&amp;amp;])/g, &#039;\x00$1\x00&#039;);&lt;br /&gt;
			if (/^(syntaxhighlight|source|pre)$/i.test(p2) === true) {&lt;br /&gt;
				p3 = p3.replace(/ /g, &#039;\x01&#039;);&lt;br /&gt;
				p3 = p3.replace(/\n/g, &#039;\x02&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			return p1 + p3 + p5;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// remove highlighting error messages&lt;br /&gt;
	if (wikEd.config.highlightError === true) {&lt;br /&gt;
		obj.html = obj.html.replace(/&amp;lt;span\b[^&amp;gt;]*?\bclass=&amp;quot;wikEdHighlightError&amp;quot;[^&amp;gt;]*&amp;gt;(.|\n)*?&amp;lt;\/span&amp;gt;&amp;lt;!--wikEdHighlightError--&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove tablemode highlighting code&lt;br /&gt;
	obj.html = wikEd.RemoveTableModeHighlighting(obj.html);&lt;br /&gt;
&lt;br /&gt;
	// remove highlighting and atttribute-free span tags&lt;br /&gt;
	obj.html = wikEd.RemoveTag(obj.html, &#039;span&#039;, /\bclass=&amp;quot;wikEd[\w\/]+&amp;quot;/);&lt;br /&gt;
&lt;br /&gt;
	// remove highlighting div tags&lt;br /&gt;
	obj.html = wikEd.RemoveTag(obj.html, &#039;div&#039;, /\bclass=&amp;quot;wikEd[\w\/]+&amp;quot;/, &#039;\x00&#039;, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// comments&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;lt;!--wikEd[\w\/]+--&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove span and font tags from WebKit https://bugs.webkit.org/show_bug.cgi?id=13490&lt;br /&gt;
	// filtering these tags does not help, they accumulate anyway&lt;br /&gt;
	obj.html = wikEd.RemoveTag(obj.html, &#039;span|font&#039;, /\bclass=&amp;quot;(Apple-style-span|Apple-.*?)&amp;quot;/, &#039;\x00&#039;, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove highlighting div tags from WebKit&lt;br /&gt;
	var isRemove = [];&lt;br /&gt;
&lt;br /&gt;
	//                           12             2  3   3     4     4 5             5 1&lt;br /&gt;
	obj.html = obj.html.replace(/(([\x00\x01]\s*)?&amp;lt;(\/?)div\b([^&amp;gt;]*)&amp;gt;(\s*[\x00\x01])?)/g,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5) {&lt;br /&gt;
			if (p3 === &#039;&#039;) {&lt;br /&gt;
				if ( (p2 !== &#039;&#039;) || (p5 !== &#039;&#039;) ) {&lt;br /&gt;
					if (/\bstyle=&amp;quot;/.test(p4) === true) {&lt;br /&gt;
						if (/\bclass=&amp;quot;/.test(p4) === false) {&lt;br /&gt;
							isRemove.push(true);&lt;br /&gt;
							return &#039;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				isRemove.push(false);&lt;br /&gt;
				return p1;&lt;br /&gt;
			}&lt;br /&gt;
			if (isRemove.pop() === true) {&lt;br /&gt;
				return &#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			return p1;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	obj.html = obj.html.replace(/[\x00\x01]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// preserve spaces and newlines in pre tag&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;pre\b[^&amp;gt;]*&amp;gt;)((.|\n)*?)(&amp;lt;\/pre&amp;gt;)/g,&lt;br /&gt;
		function(p, p1, p2, p3, p4) {&lt;br /&gt;
			p2 = p2.replace(/ /g, &#039;\xa0&#039;);&lt;br /&gt;
			p2 = p2.replace(/\n/g, &#039;\x00&#039;);&lt;br /&gt;
&lt;br /&gt;
			return p1 + p2 + p4;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// newlines&lt;br /&gt;
	obj.html = obj.html.replace(/[\n ]+/g, &#039; &#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\x00/g, &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// non-breaking spaces&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;amp;nbsp;/g, &#039;\xa0&#039;);&lt;br /&gt;
&lt;br /&gt;
	// check for pasted html content&lt;br /&gt;
	if (/&amp;lt;(?!br\b)/.test(obj.html) === true) {&lt;br /&gt;
		obj.htmlCode = true;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		obj.htmlCode = false;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightSyntaxInit: initialize regExp for syntax highlighting and regExp-to-number array, called during start up&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightSyntaxInit = function () {&lt;br /&gt;
&lt;br /&gt;
	wikEd.parseObj.matchToTag = [&#039;&#039;];&lt;br /&gt;
	wikEd.parseObj.regExpTags = null;&lt;br /&gt;
&lt;br /&gt;
	// main regular expression search definitions&lt;br /&gt;
	// [regular expression fragment, tag, tagClass, tagStart (regexp starts with newline)]&lt;br /&gt;
	var tagArray = [&lt;br /&gt;
		[&#039;(((\\bhttps?:|\\bftp:|\\birc:|\\bgopher:|)\\/\\/)|\\bnews:|\\bmailto:)[^\\x00-\\x20\\s&amp;quot;\\[\\]\\x7f]+&#039;, &#039;inlineURL&#039;, &#039;block&#039;], // inline link&lt;br /&gt;
&lt;br /&gt;
		// not beneficial in current browsers&lt;br /&gt;
		// [&#039;[^{}\\[\\]\x00\x01_|!=*#:;&amp;quot;\&#039;\\n\\~\\-]+&#039;, &#039;text&#039;, &#039;ignore&#039;], // chew-up fragment to ignore plain text, triples regExp speed in ancient browsers only, check later if chewed into start of inlineLink; start-with-text tags (PMID,...) have to be tested for separately to benefit from his&lt;br /&gt;
&lt;br /&gt;
		[&#039;\x00(nowiki)\\b[^\x00\x01]*\x01(.|\\n)*?\x00/nowiki\\s*\x01&#039;, &#039;nowiki&#039;, &#039;block&#039;], // &amp;lt;nowiki&amp;gt;...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
		[&#039;\x00(pre)\\b[^\x00\x01]*\x01(.|\\n)*?\x00/pre\\s*\x01&#039;,       &#039;pre&#039;,    &#039;block&#039;], // &amp;lt;pre&amp;gt;...&amp;lt;/pre&amp;gt;&lt;br /&gt;
		[&#039;\x00(math)\\b[^\x00\x01]*\x01(.|\\n)*?\x00/math\\s*\x01&#039;,     &#039;math&#039;,   &#039;block&#039;], // &amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&lt;br /&gt;
		[&#039;\x00(score)\\b[^\x00\x01]*\x01(.|\\n)*?\x00/score\\s*\x01&#039;,   &#039;score&#039;,  &#039;block&#039;], // &amp;lt;score&amp;gt;...&amp;lt;/score&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		[&#039;(^|\\n)([ \xa0]+)(\\S[^\\n]*)&#039;,        &#039;preform&#039;,       &#039;block&#039;], // &amp;quot;preformatted&amp;quot; text line (leading space)&lt;br /&gt;
		[&#039;(^|\\n)([*#:;]+)([^\\n]*)&#039;,            &#039;list&#039;,          &#039;block&#039;], // list line&lt;br /&gt;
&lt;br /&gt;
		[&#039;\x00(br|wbr)\\b[^\x00\x01]*\x01&#039;, &#039;void&#039;,               &#039;block&#039;], // &amp;lt;br&amp;gt;, &amp;lt;wbr&amp;gt;&lt;br /&gt;
		[&#039;\x00(\\w+)[^\x00\x01]*?\\/\x01&#039;,  &#039;htmlEmpty&#039;,          &#039;block&#039;], // &amp;lt;html /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		[&#039;\x00(\\w+)[^\x00\x01]*\x01&#039;,      &#039;html&#039;,                &#039;open&#039;], // &amp;lt;html&amp;gt;&lt;br /&gt;
		[&#039;\x00\\/(\\w+)[^\x00\x01]*\x01&#039;,   &#039;html&#039;,               &#039;close&#039;], // &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		[&#039;(^|\\n)(\\{\\|)&#039;,                 &#039;table&#039;,               &#039;open&#039;], // table start&lt;br /&gt;
		[&#039;(^|\\n)(\\|\\}\\})&#039;,              &#039;pipeTemplateEnd&#039;,    &#039;multi&#039;], // empty template parameter + template end&lt;br /&gt;
		[&#039;(^|\\n)(\\|\\})&#039;,                 &#039;table&#039;,              &#039;close&#039;], // table end&lt;br /&gt;
&lt;br /&gt;
		[&#039;(^|\\n)(\\|\\+)&#039;,                 &#039;tableCaption&#039;,        &#039;open&#039;], // table caption&lt;br /&gt;
		[&#039;(^|\\n)(\\|\\-)&#039;,                 &#039;row&#039;,                 &#039;open&#039;], // table row&lt;br /&gt;
&lt;br /&gt;
		[&#039;(^|\\n)(\\|)&#039;,                    &#039;newlinePipe&#039;,        &#039;block&#039;], // table cell, wikilink separator, file parameter separator, empty template parameter&lt;br /&gt;
		[&#039;\\|\\|&#039;,                          &#039;doublePipe&#039;,         &#039;block&#039;], // table cell separator, empty file parameter separator, empty template parameters&lt;br /&gt;
		[&#039;\\|&#039;,                             &#039;pipe&#039;,               &#039;block&#039;], // table cell attribute separator, table caption parameter separator, wikilink separator, file parameter separator, redirect separator, template parameter parameter&lt;br /&gt;
&lt;br /&gt;
		[&#039;(^|\\n)(!)&#039;,                      &#039;header&#039;,              &#039;open&#039;], // table header cell&lt;br /&gt;
		[&#039;!!&#039;,                              &#039;headerSep&#039;,           &#039;open&#039;], // table header cell separator&lt;br /&gt;
&lt;br /&gt;
		[&#039;\\{{2,}&#039;,                         &#039;paramTempl&#039;,          &#039;open&#039;], // template or parameter start&lt;br /&gt;
		[&#039;\\}{2,}&#039;,                         &#039;paramTempl&#039;,         &#039;close&#039;], // template parameter end&lt;br /&gt;
&lt;br /&gt;
		[&#039;(^\\s*)#REDIRECT(?=\\s*\\[\\[)&#039;,  &#039;redirect&#039;,           &#039;block&#039;], // redirect&lt;br /&gt;
&lt;br /&gt;
		[&#039;\\[\\[(?=(Image|File|Media|&#039; + wikEd.config.text[&#039;wikicode Image&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode Media&#039;] + &#039;)\\s*:\\s*)&#039;, &#039;file&#039;, &#039;open&#039;], // file link start /// add translation&lt;br /&gt;
		[&#039;\\[\\[&#039;,                          &#039;link&#039;, &#039;open&#039;],                // wikilink, category start with interlink detection&lt;br /&gt;
		[&#039;\\]\\]&#039;,                          &#039;doubleCloseBracket&#039;, &#039;close&#039;], // wikilink, category, file link, redirect end&lt;br /&gt;
&lt;br /&gt;
		[&#039;\\[((((https?:|ftp:|irc:|gopher:|)\\/\\/)|news:|mailto:)[^\\x00-\\x20\\s&amp;quot;\\[\\]\\x7f]+)(\\s*)&#039;, &#039;external&#039;,  &#039;open&#039;], // external link start; up?? [[url]] detected as ext link!&lt;br /&gt;
		[&#039;\\]&#039;,                             &#039;external&#039;,           &#039;close&#039;], // external link end&lt;br /&gt;
&lt;br /&gt;
		[&#039;(^|\\n)={1,6}&#039;,                   &#039;heading&#039;,             &#039;open&#039;], // heading start - heading can contain multi-line templates and &amp;lt;tag&amp;gt;s, all single-line&lt;br /&gt;
		[&#039;={1,6}[ \xa0\\t]*(?=(\\n|$))&#039;,    &#039;heading&#039;,            &#039;close&#039;], // heading end&lt;br /&gt;
&lt;br /&gt;
		[&#039;\\\&#039;{2,}&#039;,                        &#039;boldItalic&#039;,         &#039;multi&#039;], // bold, italic&lt;br /&gt;
&lt;br /&gt;
		[&#039;__(&#039; + wikEd.magicWords + &#039;)__&#039;,  &#039;magic&#039;,              &#039;block&#039;], // magic words&lt;br /&gt;
		[&#039;~{3,5}&#039;,                          &#039;signature&#039;,          &#039;block&#039;], // signature&lt;br /&gt;
		[&#039;(^|\\n)\\-{4,}&#039;,                  &#039;hr&#039;,                 &#039;block&#039;], // hr&lt;br /&gt;
		[&#039;(\\n|$)&#039;,                         &#039;newline&#039;,            &#039;block&#039;]  // breaks: heading, lists, external link, wikilink before&lt;br /&gt;
&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	// parse tag array into regular expression string and parenthesized substring match-to-tag info array&lt;br /&gt;
	var regExpStrings = [];&lt;br /&gt;
	for (var i = 0; i &amp;lt; tagArray.length; i ++) {&lt;br /&gt;
		var regExpSub = tagArray[i][0];&lt;br /&gt;
		var tag = tagArray[i][1];&lt;br /&gt;
		var tagClass = tagArray[i][2];&lt;br /&gt;
&lt;br /&gt;
		// add parenthesized sub regExp to regexp array&lt;br /&gt;
		regExpStrings.push(&#039;(&#039; + regExpSub + &#039;)&#039;);&lt;br /&gt;
&lt;br /&gt;
		// detect if a fragment starts with (^|\\n) to handle the leading newlines&lt;br /&gt;
		var tagStart = false;&lt;br /&gt;
		if (/^\(\^\|\\n\)/.test(regExpSub) === true) {&lt;br /&gt;
			tagStart = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// save tag information for matched parenthesis&lt;br /&gt;
		wikEd.parseObj.matchToTag.push( [tag, tagClass, tagStart] );&lt;br /&gt;
&lt;br /&gt;
		// add empty entry for all sub parentheses, ignore (? and \(&lt;br /&gt;
		var pos = 0;&lt;br /&gt;
		while ( (pos = regExpSub.indexOf(&#039;(&#039;, pos) + 1) &amp;gt; 0) {&lt;br /&gt;
			if (regExpSub.charAt(pos) != &#039;?&#039;) {&lt;br /&gt;
				if (regExpSub.charAt(pos - 2) != &#039;\\&#039;) {&lt;br /&gt;
					wikEd.parseObj.matchToTag.push( [] );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// create regExp from or-joined parenthesized sub regExps&lt;br /&gt;
	wikEd.parseObj.regExpTags = new RegExp(regExpStrings.join(&#039;|&#039;), &#039;gi&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightSyntax: highlight syntax in obj.html;&lt;br /&gt;
//   existing highlighting must have been removed using wikEd.RemoveHighlighting&lt;br /&gt;
//   expects &amp;lt; &amp;gt; &amp;amp;lt; &amp;amp;gt; &amp;amp;amp;  \xa0 instead of &amp;amp;nbsp;  \n instead of &amp;lt;br&amp;gt;&lt;br /&gt;
// known bugs:&lt;br /&gt;
// - templates inside elements&lt;br /&gt;
// - fragment highlighting misses surrounding html&lt;br /&gt;
//&lt;br /&gt;
// this is a real wikicode parser that works as follows:&lt;br /&gt;
//   cycle through the text with a complex regexp search for wikicode and highlighting fragments&lt;br /&gt;
//     build an array-based tree structure of text elements&lt;br /&gt;
//       tag info: text pos, text length, tag type (open, close, block, error)&lt;br /&gt;
//       connectivity info: parent, firstChild, nextSibling, paired opening/closing (all array indexes)&lt;br /&gt;
//   add actual highlighting html code to parse tree elements&lt;br /&gt;
//&lt;br /&gt;
/* TO DO:&lt;br /&gt;
heading closes links&lt;br /&gt;
valid table markup: \n :{|&lt;br /&gt;
preformatted lines: space-only lines inside and as last allowed&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightSyntax = function (obj, noTimeOut, keepComments, noBlocks) {&lt;br /&gt;
&lt;br /&gt;
	// start timer to cancel after wikEd.config.maxHighlightTime ms&lt;br /&gt;
	var highlightStartDate = new Date();&lt;br /&gt;
&lt;br /&gt;
	// linkify raw watchlist&lt;br /&gt;
	if (wikEd.editWatchlist === true) {&lt;br /&gt;
		obj.html = obj.html.replace(/(.*)/gm,&lt;br /&gt;
			function(p, p1) {&lt;br /&gt;
				var ns = &#039;&#039;;&lt;br /&gt;
				var article = p1;&lt;br /&gt;
				var regExp = /^(.*?:)(.*)$/;&lt;br /&gt;
				var regExpMatch = regExp.exec(article);&lt;br /&gt;
				if (regExpMatch !== null) {&lt;br /&gt;
					ns = regExpMatch[1];&lt;br /&gt;
					article = regExpMatch[2];&lt;br /&gt;
				}&lt;br /&gt;
				var html = &#039;&amp;lt;span class=&amp;quot;wikEdWatchlistLink&amp;quot; &#039; + wikEd.HighlightLinkify(ns, article) + &#039;&amp;gt;&#039; + p + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
				return html;&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// &amp;amp;lt; &amp;amp;gt; &amp;amp;amp; to \x00 \x01 &amp;amp;&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;amp;lt;/g, &#039;\x00&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;amp;gt;/g, &#039;\x01&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// trailing, leading, and multi spaces to nbsp&lt;br /&gt;
	obj.html = obj.html.replace(/^ | $/gm, &#039;\xa0&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/(\n|\xa0 | ) /g, &#039;$1\xa0&#039;);&lt;br /&gt;
&lt;br /&gt;
	// define parse object&lt;br /&gt;
	var parseObj = {&lt;br /&gt;
&lt;br /&gt;
		// tree object that holds nodes to be sorted and joined for final text:&lt;br /&gt;
		// { &#039;tag&#039;: , &#039;parent&#039;: , &#039;firstChild&#039;: , &#039;nextSibling&#039;: , &#039;start&#039;: , &#039;tagLength&#039;: , &#039;type&#039;: , &#039;paired&#039;: , &#039;pairedPos&#039;: , &#039;left&#039;: , &#039;right&#039;: , &#039;index&#039;: , &#039;attrib&#039;: , &#039;newline&#039;: }&lt;br /&gt;
		&#039;tree&#039;: [],&lt;br /&gt;
&lt;br /&gt;
		// main regular expression for syntactic elements&lt;br /&gt;
		&#039;regExp&#039;: null,&lt;br /&gt;
&lt;br /&gt;
		// last match&lt;br /&gt;
		&#039;regExpMatch&#039;: null,&lt;br /&gt;
&lt;br /&gt;
		// highlight whole text or fragment&lt;br /&gt;
		&#039;whole&#039;: false,&lt;br /&gt;
&lt;br /&gt;
		// ignore leading closing tags for fragment highlighting&lt;br /&gt;
		&#039;addedOpenTag&#039;: false,&lt;br /&gt;
&lt;br /&gt;
		// quick references&lt;br /&gt;
		&#039;lastOpenTag&#039;: null,&lt;br /&gt;
		&#039;lastOpenNode&#039;: 0,&lt;br /&gt;
&lt;br /&gt;
		// filtered ignore p tags&lt;br /&gt;
		&#039;lastOpenNodeFiltered&#039;: null,&lt;br /&gt;
		&#039;lastOpenTagFiltered&#039;: null,&lt;br /&gt;
&lt;br /&gt;
		&#039;secondlastOpenNodeFiltered&#039;: null,&lt;br /&gt;
		&#039;secondlastOpenTagFiltered&#039;: null,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// add root node&lt;br /&gt;
	parseObj.tree[0] = { &#039;type&#039;: &#039;root&#039; };&lt;br /&gt;
&lt;br /&gt;
	// clear array of link addresses and preview image ids&lt;br /&gt;
	if (obj.whole === true) {&lt;br /&gt;
		parseObj.whole = true;&lt;br /&gt;
		wikEd.wikiLinks = [];&lt;br /&gt;
		wikEd.referenceArray = [];&lt;br /&gt;
		wikEd.templateArray = [];&lt;br /&gt;
		wikEd.charEntityArray = [];&lt;br /&gt;
		wikEd.HighlightNamedHideButtonsStylesheet = new wikEd.StyleSheet(wikEd.frameDocument);&lt;br /&gt;
		wikEd.filePreviewNo = 0;&lt;br /&gt;
		wikEd.filePreviewIds = [];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// take out comments and html formatting to be kept&lt;br /&gt;
	var content = &#039;&#039;;&lt;br /&gt;
	var from = 0;&lt;br /&gt;
	var commentsLength = 0;&lt;br /&gt;
	var regExpMatch;&lt;br /&gt;
	var regExpComments = /(\x00!--(.|\n)*?--\x01)|(&amp;lt;[^&amp;gt;]*&amp;gt;)/g;&lt;br /&gt;
	while ( (regExpMatch = regExpComments.exec(obj.html)) !== null) {&lt;br /&gt;
		var tag;&lt;br /&gt;
		var p1 = regExpMatch[1] || &#039;&#039;;&lt;br /&gt;
		var p2 = regExpMatch[2] || &#039;&#039;;&lt;br /&gt;
		if (p1 !== &#039;&#039;) {&lt;br /&gt;
			tag = &#039;comment&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else if (p2 !== &#039;&#039;) {&lt;br /&gt;
			tag = &#039;keep&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		parseObj.tree.push( { &#039;tag&#039;: tag, &#039;start&#039;: regExpMatch.index - commentsLength, &#039;tagLength&#039;: 0, &#039;type&#039;: tag, &#039;left&#039;: regExpMatch[0] } );&lt;br /&gt;
		content += obj.html.substring(from, regExpMatch.index);&lt;br /&gt;
		commentsLength += regExpMatch[0].length;&lt;br /&gt;
		from = regExpComments.lastIndex;&lt;br /&gt;
	}&lt;br /&gt;
	if (parseObj.tree.length &amp;gt; 0) {&lt;br /&gt;
		content += obj.html.substring(from);&lt;br /&gt;
		obj.html = content;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//// opening block tags and templates break link?&lt;br /&gt;
&lt;br /&gt;
	// show main parsing regExp:&lt;br /&gt;
	// WED(&#039;regExp&#039;, wikEd.parseObj.regExpTags.toString().replace(/\x00/g, &#039;&amp;lt;&#039;).replace(/\x01/g, &#039;&amp;gt;&#039;).replace(/\n/g, &#039;\\n&#039;));&lt;br /&gt;
&lt;br /&gt;
	// cycle through text and find tags with a regexp search&lt;br /&gt;
	wikEd.parseObj.regExpTags.lastIndex = 0;&lt;br /&gt;
	while ( (parseObj.regExpMatch = wikEd.parseObj.regExpTags.exec(obj.html)) !== null) {&lt;br /&gt;
&lt;br /&gt;
		// cancel highlighting after wikEd.config.maxHighlightTime ms&lt;br /&gt;
		if (noTimeOut !== true) {&lt;br /&gt;
			var currentDate = new Date();&lt;br /&gt;
			if ( (currentDate - highlightStartDate) &amp;gt; wikEd.config.maxHighlightTime) {&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var tagMatch = parseObj.regExpMatch[0];&lt;br /&gt;
		var tagFrom = parseObj.regExpMatch.index;&lt;br /&gt;
		var tagLength = tagMatch.length;&lt;br /&gt;
		var tagTo = tagFrom + tagLength;&lt;br /&gt;
		var tagProperties = [];&lt;br /&gt;
		var tagMatchParenth = 0;&lt;br /&gt;
&lt;br /&gt;
		// get regexp index number from first defined parenthesized submatch&lt;br /&gt;
		var tag = &#039;&#039;;&lt;br /&gt;
		var tagClass = &#039;&#039;;&lt;br /&gt;
		var tagStart = &#039;&#039;;&lt;br /&gt;
		for (var i = 1; i &amp;lt; wikEd.parseObj.matchToTag.length; i ++) {&lt;br /&gt;
			if (typeof parseObj.regExpMatch[i] != &#039;undefined&#039;) {&lt;br /&gt;
&lt;br /&gt;
				// get tag information&lt;br /&gt;
				tag = wikEd.parseObj.matchToTag[i][0];&lt;br /&gt;
				tagClass = wikEd.parseObj.matchToTag[i][1];&lt;br /&gt;
				tagStart = wikEd.parseObj.matchToTag[i][2];&lt;br /&gt;
				tagMatchParenth = i;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// handle chew-up regExp matches that massively speed up regexp search&lt;br /&gt;
		if (tagClass == &#039;ignore&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// move regExp pointer back if chew-up regExp fragment has eaten into the start of an inline link&lt;br /&gt;
			if (obj.html.charAt(wikEd.parseObj.regExpTags.lastIndex) == &#039;:&#039;) {&lt;br /&gt;
				var regExpMatch = /(https?|ftp|irc|gopher)$/.exec(tagMatch);&lt;br /&gt;
				if (regExpMatch !== null) {&lt;br /&gt;
					wikEd.parseObj.regExpTags.lastIndex = wikEd.parseObj.regExpTags.lastIndex - regExpMatch[0].length;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// detect and remove newline from leading (^|\n) in sub-regexp: table, pipeTemplateEnd, tableCaption, row, newlinePipe, header&lt;br /&gt;
		var leadingNewline = false;&lt;br /&gt;
		if (tagStart === true) {&lt;br /&gt;
			if (parseObj.regExpMatch[tagMatchParenth + 1] == &#039;\n&#039;) {&lt;br /&gt;
				tagFrom ++;&lt;br /&gt;
				tagLength --;&lt;br /&gt;
				leadingNewline = true;&lt;br /&gt;
				tagProperties.push([&#039;newline&#039;, true]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// newlines close or end certain tags&lt;br /&gt;
		if (leadingNewline === true) {&lt;br /&gt;
			wikEd.HighlightBuildTree(&#039;newline&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
		var openNode = parseObj.tree[parseObj.lastOpenNodeFiltered];&lt;br /&gt;
&lt;br /&gt;
		// get attrib text&lt;br /&gt;
		if ( (tagClass == &#039;open&#039;) &amp;amp;&amp;amp; ( (tag == &#039;table&#039;) || (tag == &#039;row&#039;) ) ) {&lt;br /&gt;
			var attribEnd = obj.html.indexOf(&#039;\n&#039;, tagTo);&lt;br /&gt;
			if (attribEnd == -1) {&lt;br /&gt;
				attribEnd = null;&lt;br /&gt;
			}&lt;br /&gt;
			var attribText = obj.html.substring(tagTo, attribEnd);&lt;br /&gt;
			if (attribText !== &#039;&#039;) {&lt;br /&gt;
				attribText = attribText.replace(/^ +| +$/g, &#039;&#039;);&lt;br /&gt;
				tagProperties.push([&#039;attrib&#039;, attribText]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// no wikicode in link target, template, or parameter name&lt;br /&gt;
		if ( (parseObj.lastOpenTag == &#039;link&#039;) || (parseObj.lastOpenTag == &#039;template&#039;) || (parseObj.lastOpenTag == &#039;parameter&#039;) ) {&lt;br /&gt;
&lt;br /&gt;
			if ( (openNode !== undefined) &amp;amp;&amp;amp; (openNode.firstChild === null) ) {&lt;br /&gt;
&lt;br /&gt;
				// allow templates and template parameters, template and link separators, and newline&lt;br /&gt;
				if (&lt;br /&gt;
					( (tagClass == &#039;open&#039;) &amp;amp;&amp;amp; (tag != &#039;paramTempl&#039;) ) ||&lt;br /&gt;
					( (tagClass == &#039;block&#039;) &amp;amp;&amp;amp; (tag != &#039;newlinePipe&#039;) &amp;amp;&amp;amp; (tag != &#039;doublePipe&#039;) &amp;amp;&amp;amp; (tag != &#039;pipe&#039;) &amp;amp;&amp;amp; (tag != &#039;headerSep&#039;) &amp;amp;&amp;amp; (tag != &#039;newline&#039;) &amp;amp;&amp;amp; (tag != &#039;preform&#039;) ) //// preform ok?&lt;br /&gt;
				) {&lt;br /&gt;
&lt;br /&gt;
					// convert opening tag to error and continue&lt;br /&gt;
					var errorText;&lt;br /&gt;
					if (parseObj.lastOpenTag == &#039;link&#039;) {&lt;br /&gt;
						errorText = wikEd.config.text.wikEdErrorCodeInLinkName;&lt;br /&gt;
					}&lt;br /&gt;
					else if (parseObj.lastOpenTag == &#039;template&#039;) {&lt;br /&gt;
						errorText = wikEd.config.text.wikEdErrorCodeInTemplName;&lt;br /&gt;
					}&lt;br /&gt;
					else if (parseObj.lastOpenTag == &#039;parameter&#039;) {&lt;br /&gt;
						errorText = wikEd.config.text.wikEdErrorCodeInParamName;&lt;br /&gt;
					}&lt;br /&gt;
					wikEd.HighlightMarkLastOpenNode(errorText, parseObj);&lt;br /&gt;
					wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// handle current tag by dispatching infos to stack manager that builds a hierarchical tree&lt;br /&gt;
		switch (tag) {&lt;br /&gt;
&lt;br /&gt;
			// non-ambiguous tags&lt;br /&gt;
			case &#039;nowiki&#039;:&lt;br /&gt;
			case &#039;pre&#039;:&lt;br /&gt;
			case &#039;math&#039;:&lt;br /&gt;
			case &#039;score&#039;:&lt;br /&gt;
			case &#039;void&#039;:&lt;br /&gt;
			case &#039;file&#039;:&lt;br /&gt;
			case &#039;heading&#039;:&lt;br /&gt;
			case &#039;redirect&#039;:&lt;br /&gt;
			case &#039;magic&#039;:&lt;br /&gt;
			case &#039;signature&#039;:&lt;br /&gt;
			case &#039;hr&#039;:&lt;br /&gt;
				wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// bold and italic&lt;br /&gt;
			case &#039;boldItalic&#039;:&lt;br /&gt;
				switch (tagLength) {&lt;br /&gt;
					case 2:&lt;br /&gt;
						switch(parseObj.lastOpenTagFiltered) {&lt;br /&gt;
							case &#039;italic&#039;:&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;close&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
								break;&lt;br /&gt;
							case &#039;boldItalic&#039;:&lt;br /&gt;
								wikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, &#039;italic&#039;, 3, 2, parseObj);&lt;br /&gt;
								wikEd.HighlightTreeRedefine(parseObj.secondlastOpenNodeFiltered, &#039;bold&#039;, 0, 3, parseObj);&lt;br /&gt;
								wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;close&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
								break;&lt;br /&gt;
							default:&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case 3:&lt;br /&gt;
						switch(parseObj.lastOpenTagFiltered) {&lt;br /&gt;
							case &#039;bold&#039;:&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;close&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
								break;&lt;br /&gt;
							case &#039;boldItalic&#039;:&lt;br /&gt;
								wikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, &#039;bold&#039;, 2, 3, parseObj);&lt;br /&gt;
								wikEd.HighlightTreeRedefine(parseObj.secondlastOpenNodeFiltered, &#039;italic&#039;, 0, 2, parseObj);&lt;br /&gt;
								wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;close&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
								break;&lt;br /&gt;
							default:&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case 5:&lt;br /&gt;
						switch(parseObj.lastOpenTagFiltered) {&lt;br /&gt;
							case &#039;bold&#039;:&lt;br /&gt;
								if (parseObj.secondlastOpenTagFiltered == &#039;italic&#039;) {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;close&#039;, tagFrom, 3, parseObj);&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;close&#039;, tagFrom + 3, 2, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
								else {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;close&#039;, tagFrom, 3, parseObj);&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;open&#039;, tagFrom + 3, 2, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
								break;&lt;br /&gt;
							case &#039;italic&#039;:&lt;br /&gt;
								if (parseObj.secondlastOpenTagFiltered == &#039;bold&#039;) {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;close&#039;, tagFrom, 2, parseObj);&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;close&#039;, tagFrom + 2, 3, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
								else {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;close&#039;, tagFrom, 2, parseObj);&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;open&#039;, tagFrom + 2, 3, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
								break;&lt;br /&gt;
							case &#039;boldItalic&#039;:&lt;br /&gt;
								wikEd.HighlightTreeRedefine(parseObj.secondlastOpenNodeFiltered, &#039;bold&#039;, 0, 3, parseObj);&lt;br /&gt;
								wikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, &#039;italic&#039;, 3, 2, parseObj);&lt;br /&gt;
								wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
								parseObj.lastOpenTag = &#039;italic&#039;;&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;italic&#039;, &#039;close&#039;, tagFrom, 2, parseObj);&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;bold&#039;, &#039;close&#039;, tagFrom + 2, 3, parseObj);&lt;br /&gt;
								break;&lt;br /&gt;
							default:&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;boldItalic&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;boldItalic&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					default:&lt;br /&gt;
						parseObj.tree.push( { &#039;start&#039;: tagFrom, &#039;tagLength&#039;: tagLength, &#039;type&#039;: &#039;error&#039;, &#039;left&#039;: wikEd.config.text.wikEdErrorBoldItalic } );&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// templParam: template or template parameter&lt;br /&gt;
			case &#039;paramTempl&#039;:&lt;br /&gt;
&lt;br /&gt;
				// template or parameter&lt;br /&gt;
				var paramTemplTag = tag;&lt;br /&gt;
				if (tagLength == 2) {&lt;br /&gt;
					paramTemplTag = &#039;template&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				else if (tagLength == 3) {&lt;br /&gt;
					paramTemplTag = &#039;parameter&#039;;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// open paramTempl&lt;br /&gt;
				if (tagClass == &#039;open&#039;) {&lt;br /&gt;
					wikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
&lt;br /&gt;
					// add spare elements for later disambiguation&lt;br /&gt;
					if (paramTemplTag == &#039;paramTempl&#039;) {&lt;br /&gt;
						for (var pos = 2; pos &amp;lt; tagLength - 1; pos = pos + 2) {&lt;br /&gt;
							wikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// close paramTempl&lt;br /&gt;
				else {&lt;br /&gt;
&lt;br /&gt;
					// no opening tag, delegate error handling&lt;br /&gt;
					if ( (parseObj.lastOpenNode === 0) || (parseObj.lastOpenNode === null) ) {&lt;br /&gt;
						wikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
					if (openNode === undefined) {&lt;br /&gt;
						wikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// close template or parameter, open and close defined&lt;br /&gt;
					if (&lt;br /&gt;
						( (paramTemplTag == &#039;template&#039;) &amp;amp;&amp;amp; (parseObj.lastOpenTagFiltered == &#039;template&#039;) ) ||&lt;br /&gt;
						( (paramTemplTag == &#039;parameter&#039;) &amp;amp;&amp;amp; (parseObj.lastOpenTagFiltered == &#039;parameter&#039;) ) ||&lt;br /&gt;
						( (paramTemplTag == &#039;parameter&#039;) &amp;amp;&amp;amp; (parseObj.lastOpenTagFiltered == &#039;parameterPiped&#039;) )&lt;br /&gt;
					) {&lt;br /&gt;
						wikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// closing defines ambiguous opening&lt;br /&gt;
					else if (&lt;br /&gt;
						( (paramTemplTag == &#039;template&#039;) || (paramTemplTag == &#039;parameter&#039;) ) &amp;amp;&amp;amp;&lt;br /&gt;
						(parseObj.lastOpenTagFiltered == &#039;paramTempl&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
						(openNode.tagLength &amp;gt;= tagLength)&lt;br /&gt;
					) {&lt;br /&gt;
&lt;br /&gt;
						// redefine ambiguous opening&lt;br /&gt;
						wikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, paramTemplTag, openNode.tagLength - tagLength, tagLength, parseObj);&lt;br /&gt;
&lt;br /&gt;
						// adjust all ambiguous parents&lt;br /&gt;
						var redefinedTag;&lt;br /&gt;
						var redefinedLength;&lt;br /&gt;
						var nodeNo = openNode.parent;&lt;br /&gt;
						while ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== null) &amp;amp;&amp;amp; (nodeNo !== undefined) ) {&lt;br /&gt;
							var node = parseObj.tree[nodeNo];&lt;br /&gt;
							if (node.tag != &#039;paramTempl&#039;) {&lt;br /&gt;
								break;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							if (nodeNo == openNode.parent) {&lt;br /&gt;
								redefinedTag = node.tag;&lt;br /&gt;
								redefinedLength = node.tagLength - tagLength;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// ignore spare paramTempl opening tags like p tags&lt;br /&gt;
							if (redefinedLength === 0) {&lt;br /&gt;
								redefinedTag = &#039;spare&#039;;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// mark remaining single { as error&lt;br /&gt;
							else if (redefinedLength == 1) {&lt;br /&gt;
								parseObj.tree.push( {&lt;br /&gt;
									&#039;start&#039;: node.start,&lt;br /&gt;
									&#039;tagLength&#039;: node.tagLength,&lt;br /&gt;
									&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
									&#039;left&#039;: wikEd.config.text.wikEdErrorTemplParam&lt;br /&gt;
								} );&lt;br /&gt;
								redefinedTag = &#039;spare&#039;;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// this is a template&lt;br /&gt;
							else if (redefinedLength == 2) {&lt;br /&gt;
								node.tag = &#039;template&#039;;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// this is a parameter&lt;br /&gt;
							else if (redefinedLength == 3) {&lt;br /&gt;
								node.tag = &#039;parameter&#039;;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// redefine parent&lt;br /&gt;
							wikEd.HighlightTreeRedefine(nodeNo, redefinedTag, null, redefinedLength, parseObj);&lt;br /&gt;
&lt;br /&gt;
							// all further opening paramTempl tags are spare&lt;br /&gt;
							if (redefinedLength &amp;lt;= 3) {&lt;br /&gt;
								redefinedTag = &#039;spare&#039;;&lt;br /&gt;
								redefinedLength = 0;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// up one level&lt;br /&gt;
							nodeNo = node.parent;&lt;br /&gt;
						}&lt;br /&gt;
						wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
&lt;br /&gt;
						// and close innermost tag&lt;br /&gt;
						wikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// opening defines ambiguous closing&lt;br /&gt;
					else if ( (&lt;br /&gt;
						(openNode.tag == &#039;template&#039;) ||&lt;br /&gt;
						(openNode.tag == &#039;parameter&#039;) ||&lt;br /&gt;
						(openNode.tag == &#039;parameterPiped&#039;) ) &amp;amp;&amp;amp; (tagLength &amp;gt;= openNode.tagLength)&lt;br /&gt;
					) {&lt;br /&gt;
						wikEd.HighlightBuildTree(openNode.tag, tagClass, tagFrom, openNode.tagLength, parseObj);&lt;br /&gt;
						wikEd.parseObj.regExpTags.lastIndex = wikEd.parseObj.regExpTags.lastIndex - tagLength + openNode.tagLength;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// both ambiguous&lt;br /&gt;
					else if (&lt;br /&gt;
						(paramTemplTag == &#039;paramTempl&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
						(openNode.tag == &#039;paramTempl&#039;) &amp;amp;&amp;amp;&lt;br /&gt;
						( (openNode.tagLength &amp;gt; 3) &amp;amp;&amp;amp; (tagLength &amp;gt; 3) )&lt;br /&gt;
					) {&lt;br /&gt;
						parseObj.tree.push( {&lt;br /&gt;
							&#039;start&#039;: openNode.start,&lt;br /&gt;
							&#039;tagLength&#039;: openNode.tagLength,&lt;br /&gt;
							&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
							&#039;left&#039;: wikEd.config.text.wikEdErrorTemplParamAmbig&lt;br /&gt;
						} );&lt;br /&gt;
						parseObj.tree.push( {&lt;br /&gt;
							&#039;start&#039;: tagFrom,&lt;br /&gt;
							&#039;tagLength&#039;: tagLength,&lt;br /&gt;
							&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
							&#039;left&#039;: wikEd.config.text.wikEdErrorTemplParamAmbig&lt;br /&gt;
						} );&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// opening and closing do not match&lt;br /&gt;
					else {&lt;br /&gt;
						parseObj.tree.push( {&lt;br /&gt;
							&#039;start&#039;: openNode.start,&lt;br /&gt;
							&#039;tagLength&#039;: openNode.tagLength,&lt;br /&gt;
							&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
							&#039;left&#039;: wikEd.config.text.wikEdErrorTemplParam&lt;br /&gt;
						} );&lt;br /&gt;
						parseObj.tree.push( {&lt;br /&gt;
							&#039;start&#039;: tagFrom,&lt;br /&gt;
							&#039;tagLength&#039;: tagLength,&lt;br /&gt;
							&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
							&#039;left&#039;: wikEd.config.text.wikEdErrorTemplParam&lt;br /&gt;
						} );&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// wikilink&lt;br /&gt;
			case &#039;link&#039;:&lt;br /&gt;
				wikEd.HighlightBuildTree(tag, tagClass, tagFrom, 2, parseObj);&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// inline link block and external link&lt;br /&gt;
			case &#039;inlineURL&#039;:&lt;br /&gt;
			case &#039;external&#039;:&lt;br /&gt;
&lt;br /&gt;
				// trailing punctuation not part of inline links&lt;br /&gt;
				if (tag == &#039;inlineURL&#039;) {&lt;br /&gt;
					var regExpMatch;&lt;br /&gt;
					if (/\(/.test(tagMatch) === true) {&lt;br /&gt;
						regExpMatch = /^(.*?)([.,:;\\!?)]+)$/.exec(tagMatch);&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						regExpMatch = /^(.*?)([.,:;\\!?]+)$/.exec(tagMatch);&lt;br /&gt;
					}&lt;br /&gt;
					if (regExpMatch !== null) {&lt;br /&gt;
						wikEd.parseObj.regExpTags.lastIndex = tagFrom + regExpMatch[1].length;&lt;br /&gt;
						tagMatch = regExpMatch[1];&lt;br /&gt;
						tagLength = tagMatch.length;&lt;br /&gt;
						tagTo = tagFrom + tagLength;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// urls in templates or tables are interrupted by tag strings&lt;br /&gt;
				if (tag == &#039;inlineURL&#039;) {&lt;br /&gt;
					var node = parseObj.tree[parseObj.lastOpenNode];&lt;br /&gt;
					while ( (node !== undefined) &amp;amp;&amp;amp; (node !== null) ) {&lt;br /&gt;
&lt;br /&gt;
						// urls in templates are interrupted by }} and |&lt;br /&gt;
						if ( (node.tag == &#039;template&#039;) || (node.tag == &#039;paramTempl&#039;) || (node.tag == &#039;parameter&#039;) || (node.tag == &#039;parameterPiped&#039;) ) {&lt;br /&gt;
							var regExpMatch;&lt;br /&gt;
							if ( (regExpMatch = /^(.*?)(\}\}|\|)(.*?)$/.exec(tagMatch)) !== null) {&lt;br /&gt;
								wikEd.parseObj.regExpTags.lastIndex = tagFrom + regExpMatch[1].length;&lt;br /&gt;
								tagMatch = regExpMatch[1];&lt;br /&gt;
								tagLength = tagMatch.length;&lt;br /&gt;
								tagTo = tagFrom + tagLength;&lt;br /&gt;
							}&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// urls in tables are interrupted by ||&lt;br /&gt;
						else if (node.tag == &#039;table&#039;) {&lt;br /&gt;
							var regExpMatch;&lt;br /&gt;
							if ( (regExpMatch = /^(.*?)(\}\}|\|)(.*?)$/.exec(tagMatch)) !== null) {&lt;br /&gt;
								wikEd.parseObj.regExpTags.lastIndex = tagFrom + regExpMatch[1].length;&lt;br /&gt;
								tagMatch = regExpMatch[1];&lt;br /&gt;
								tagLength = tagMatch.length;&lt;br /&gt;
								tagTo = tagFrom + tagLength;&lt;br /&gt;
							}&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
						node = parseObj.tree[node.parent];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// dissect external [url text&lt;br /&gt;
				if (tag == &#039;external&#039;) {&lt;br /&gt;
					if (tagClass == &#039;open&#039;) {&lt;br /&gt;
						var url = parseObj.regExpMatch[tagMatchParenth + 1];&lt;br /&gt;
						var spaces = parseObj.regExpMatch[tagMatchParenth + 5];&lt;br /&gt;
						wikEd.HighlightBuildTree(tag, tagClass, tagFrom, 1, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;externalURL&#039;, &#039;block&#039;, tagFrom + 1, url.length, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;externalText&#039;, tagClass, tagFrom + 1 + url.length + spaces.length, 0, parseObj);&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// close ], ignore false positive non-tags that have no opening [&lt;br /&gt;
					else {&lt;br /&gt;
						var node = parseObj.tree[parseObj.lastOpenNode];&lt;br /&gt;
						while ( (node !== null) &amp;amp;&amp;amp; (node !== undefined) ) {&lt;br /&gt;
							if (node.tag == tag) {&lt;br /&gt;
								break;&lt;br /&gt;
							}&lt;br /&gt;
							node = parseObj.tree[node.parent];&lt;br /&gt;
						}&lt;br /&gt;
						if ( (node !== null) &amp;amp;&amp;amp; (node !== undefined) ) {&lt;br /&gt;
							if (node.parent !== null) {&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;externalText&#039;, tagClass, tagFrom, 0, parseObj);&lt;br /&gt;
								wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// &amp;lt;html&amp;gt;&lt;br /&gt;
			case &#039;html&#039;:&lt;br /&gt;
				var htmlTag = parseObj.regExpMatch[tagMatchParenth + 1].toLowerCase();&lt;br /&gt;
				if (/^(ref|references|sub|sup|u|s|p|wbr)$/i.test(htmlTag) === true) {&lt;br /&gt;
					wikEd.HighlightBuildTree(htmlTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				else if (/^(table|tr|td|th|col|thead|tfoot|tbody|colgroup|caption|abbr|big|blockquote|center|code|del|div|font|ins|small|span|strike|tt|rb|rp|rt|ruby|nowiki|math|score|noinclude|includeonly|onlyinclude|gallery|categorytree|charinsert|hiero|imagemap|inputbox|poem|syntaxhighlight|source|timeline)$/.test(htmlTag) === true) {&lt;br /&gt;
					wikEd.HighlightBuildTree(htmlTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.HighlightBuildTree(&#039;htmlUnknown&#039;, &#039;block&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// &amp;lt;html /&amp;gt;&lt;br /&gt;
			case &#039;htmlEmpty&#039;:&lt;br /&gt;
				var htmlTag = parseObj.regExpMatch[tagMatchParenth + 1].toLowerCase();&lt;br /&gt;
				if (/^(references|ref|br|p|wbr)$/i.test(htmlTag) === true) {&lt;br /&gt;
					wikEd.HighlightBuildTree(htmlTag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// |}}: table end or empty template parameter + template end&lt;br /&gt;
			case &#039;pipeTemplateEnd&#039;:&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;table&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;table&#039;, &#039;close&#039;, tagFrom, 2, parseObj, tagProperties);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableAttrib&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;table&#039;, &#039;close&#039;, tagFrom, 2, parseObj, tagProperties);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableCaption&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;table&#039;, &#039;close&#039;, tagFrom, 2, parseObj, tagProperties);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;close&#039;, openNode.start + openNode.tagLength, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;table&#039;, &#039;close&#039;, tagFrom, 2, parseObj, tagProperties);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;row&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;table&#039;, &#039;close&#039;, tagFrom, 2, parseObj, tagProperties);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;rowAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;rowAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom, 2, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;table&#039;, &#039;close&#039;, tagFrom, 2, parseObj, tagProperties);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;table&#039;, &#039;close&#039;, tagFrom, 2, parseObj, tagProperties);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;template&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;templateParam&#039;, &#039;block&#039;, tagFrom, 1, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;template&#039;, &#039;close&#039;, tagFrom + 1, 2, parseObj);&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// {|, |}: table&lt;br /&gt;
			case &#039;table&#039;:&lt;br /&gt;
				if (tagClass == &#039;open&#039;) {&lt;br /&gt;
					switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
						case &#039;tableAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;tableAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;tableCaption&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;captionAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;close&#039;, openNode.start + openNode.tagLength, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;row&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;rowAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;rowAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;header&#039;:&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;headerAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;cell&#039;:&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;cellAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
					}&lt;br /&gt;
					wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj, tagProperties);&lt;br /&gt;
					wikEd.HighlightBuildTree(&#039;tableAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// close close&lt;br /&gt;
				else {&lt;br /&gt;
					switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
						case &#039;tableAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;tableAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;tableCaption&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;captionAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;close&#039;, openNode.start + openNode.tagLength, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;row&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;rowAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;rowAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;header&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;headerAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;cell&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
						case &#039;cellAttrib&#039;:&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
							break;&lt;br /&gt;
					}&lt;br /&gt;
					wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj, tagProperties);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// ]]: wikilink, file link, redirect&lt;br /&gt;
			case &#039;doubleCloseBracket&#039;:&lt;br /&gt;
				if (parseObj.lastOpenTagFiltered == &#039;file&#039;) {&lt;br /&gt;
					wikEd.HighlightBuildTree(parseObj.lastOpenTagFiltered, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.HighlightBuildTree(&#039;link&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// \n|: table cell, wikilink separator, file parameter separator, redirect separator, empty template parameter&lt;br /&gt;
			case &#039;newlinePipe&#039;:&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;table&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableCaption&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;row&#039;:&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;rowAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;rowAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;link&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;linkParam&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;file&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;fileParam&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;template&#039;:&lt;br /&gt;
					case &#039;paramTempl&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;templateParam&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;table&#039;:&lt;br /&gt;
					case &#039;tableAttrib&#039;:&lt;br /&gt;
					case &#039;tableCaption&#039;:&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
					case &#039;row&#039;:&lt;br /&gt;
					case &#039;rowAttrib&#039;:&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj, tagProperties);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// \n!: header&lt;br /&gt;
			case &#039;header&#039;:&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;table&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableCaption&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;close&#039;, openNode.start + openNode.tagLength, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;open&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;row&#039;:&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;rowAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;rowAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj, tagProperties);&lt;br /&gt;
				wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// ||: table cell separator, empty file parameter separator, empty template parameters&lt;br /&gt;
			case &#039;doublePipe&#039;:&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;link&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;linkParam&#039;, tagClass, tagFrom, 1, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;file&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;fileParam&#039;, tagClass, tagFrom, 1, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;fileParam&#039;, tagClass, tagFrom + 1, 1, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;template&#039;:&lt;br /&gt;
					case &#039;paramTempl&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;templateParam&#039;, tagClass, tagFrom, 1, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;templateParam&#039;, tagClass, tagFrom + 1, 1, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// !!: table header separator&lt;br /&gt;
			case &#039;headerSep&#039;:&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;open&#039;, tagFrom, tagLength, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// |-, |+: table caption, table row&lt;br /&gt;
			case &#039;tableCaption&#039;:&lt;br /&gt;
			case &#039;row&#039;:&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;table&#039;:&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableCaption&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;close&#039;, openNode.start + openNode.tagLength, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;tableCaption&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;row&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;rowAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;rowAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;header&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;cell&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;row&#039;, &#039;close&#039;, tagFrom - 1, 0, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj, tagProperties);&lt;br /&gt;
				if (tag == &#039;row&#039;) {&lt;br /&gt;
					wikEd.HighlightBuildTree(&#039;rowAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				else if (tag == &#039;tableCaption&#039;) {&lt;br /&gt;
					wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;open&#039;, tagTo, 0, parseObj);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// pipe |: table tableCaption, cell, or header attribute separator, wikilink separator, file parameter separator, template parameter, parameter default&lt;br /&gt;
			case &#039;pipe&#039;:&lt;br /&gt;
				switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
&lt;br /&gt;
						// save attrib text to open tag: tableCaption, header, cell&lt;br /&gt;
						if (openNode !== undefined) {&lt;br /&gt;
							var attribText = obj.html.substring(openNode.start + openNode.tagLength, tagFrom);&lt;br /&gt;
							var attribEnd = attribText.indexOf(&#039;\n&#039;);&lt;br /&gt;
							if (attribEnd == -1) {&lt;br /&gt;
								attribEnd = tagFrom;&lt;br /&gt;
							}&lt;br /&gt;
							else {&lt;br /&gt;
								attribText = attribText.substr(0, attribEnd);&lt;br /&gt;
								attribEnd = openNode.start + openNode.tagLength + attribEnd - 1;&lt;br /&gt;
							}&lt;br /&gt;
							if (attribText !== &#039;&#039;) {&lt;br /&gt;
								attribText = attribText.replace(/^ +| +$/g, &#039;&#039;);&lt;br /&gt;
							}&lt;br /&gt;
							parseObj.tree[openNode.parent].attrib = attribText;&lt;br /&gt;
							switch (parseObj.lastOpenTagFiltered) {&lt;br /&gt;
								case &#039;captionAttrib&#039;:&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;captionAttrib&#039;, &#039;close&#039;, attribEnd, tagLength, parseObj);&lt;br /&gt;
									break;&lt;br /&gt;
								case &#039;headerAttrib&#039;:&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;headerAttrib&#039;, &#039;close&#039;, attribEnd, tagLength, parseObj);&lt;br /&gt;
									break;&lt;br /&gt;
								case &#039;cellAttrib&#039;:&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;cellAttrib&#039;, &#039;close&#039;, attribEnd, tagLength, parseObj);&lt;br /&gt;
									break;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;link&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;linkParam&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;file&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;fileParam&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;template&#039;:&lt;br /&gt;
					case &#039;paramTempl&#039;: //// check later for parameterPiped&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;templateParam&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;parameter&#039;:&lt;br /&gt;
						wikEd.HighlightBuildTree(&#039;parameterDefault&#039;, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// list and preformatted (leading space) lines&lt;br /&gt;
			case &#039;preform&#039;:&lt;br /&gt;
&lt;br /&gt;
				// ignore template parameters preceeded with newline-spaces&lt;br /&gt;
				if (parseObj.lastOpenTagFiltered == &#039;template&#039;) {&lt;br /&gt;
					wikEd.parseObj.regExpTags.lastIndex = tagTo - parseObj.regExpMatch[tagMatchParenth + 3].length;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				// run through, no break&lt;br /&gt;
&lt;br /&gt;
			case &#039;list&#039;:&lt;br /&gt;
&lt;br /&gt;
				// highlight line&lt;br /&gt;
				wikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);&lt;br /&gt;
&lt;br /&gt;
				// highlight tag&lt;br /&gt;
				wikEd.HighlightBuildTree(tag + &#039;Tag&#039;, tagClass, tagFrom, parseObj.regExpMatch[tagMatchParenth + 2].length, parseObj);&lt;br /&gt;
&lt;br /&gt;
				// move text pointer after tag&lt;br /&gt;
				wikEd.parseObj.regExpTags.lastIndex = tagTo - parseObj.regExpMatch[tagMatchParenth + 3].length;&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// newline, old&lt;br /&gt;
			case &#039;newline&#039;:&lt;br /&gt;
				wikEd.HighlightBuildTree(tag, &#039;close&#039;, tagFrom, 0, parseObj);&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// unrecognized tag&lt;br /&gt;
			default:&lt;br /&gt;
				parseObj.tree.push( { &#039;start&#039;: tagFrom, &#039;tagLength&#039;: tagLength, &#039;type&#039;: &#039;error&#039;, &#039;left&#039;: wikEd.config.text.wikEdErrorNoHandler } );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// quit after reaching $ &#039;newline&#039;&lt;br /&gt;
		if (tagMatch === &#039;&#039;) {&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// do not tolerate trailing opening tags for whole text highlighting&lt;br /&gt;
	if (parseObj.whole === true)  {&lt;br /&gt;
&lt;br /&gt;
		// mark remaining unmatched opening tags&lt;br /&gt;
		while ( (parseObj.lastOpenNode !== 0) &amp;amp;&amp;amp; (parseObj.lastOpenNode !== null) ) {&lt;br /&gt;
			wikEd.HighlightMarkLastOpenNode(wikEd.config.text.wikEdErrorNoClose, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// show parsing tree before&lt;br /&gt;
	// WED(&#039;parseObj.tree&#039;, parseObj.tree);&lt;br /&gt;
&lt;br /&gt;
	// additional block highlighting (autolinking, colors, spaces, dashed, control chars, charents)&lt;br /&gt;
	if (noBlocks !== true) {&lt;br /&gt;
&lt;br /&gt;
		// wiki autolinking (case sensitive, newlines are actually allowed!)&lt;br /&gt;
		var regExpMatch;&lt;br /&gt;
		var regExpAutoLink = /((PMID)[ \xa0\t]+(\d+))|((RFC)[ \xa0\t]+(\d+))|((RFC)[ \xa0\t]+(\d+))|((ISBN)[ \xa0\t]+((97(8|9)( |-)?)?(\d( |-)?){9}(\d|x)))/g;&lt;br /&gt;
		while ( (regExpMatch = regExpAutoLink.exec(obj.html) ) !== null) {&lt;br /&gt;
			wikEd.HighlightBuildTree(regExpMatch[2] || regExpMatch[5] || regExpMatch[8] || regExpMatch[11], &#039;block&#039;, regExpMatch.index, regExpMatch[0].length, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// named html colors in quotation marks&lt;br /&gt;
		var regExpColorLight = /(&#039;|&amp;quot;)(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|blanchedalmond|burlywood|chartreuse|coral|cornsilk|cyan|darkgray|darkgrey|darkkhaki|darkorange|darksalmon|darkseagreen|floralwhite|fuchsia|gainsboro|ghostwhite|gold|goldenrod|greenyellow|honeydew|hotpink|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightskyblue|lightsteelblue|lightyellow|lime|linen|magenta|mediumaquamarine|mediumspringgreen|mediumturquoise|mintcream|mistyrose|moccasin|navajowhite|oldlace|orange|palegoldenrod|palegreen|paleturquoise|papayawhip|peachpuff|peru|pink|plum|powderblue|salmon|sandybrown|seashell|silver|skyblue|snow|springgreen|tan|thistle|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)(\1)/gi;&lt;br /&gt;
		while ( (regExpMatch = regExpColorLight.exec(obj.html) ) !== null) {&lt;br /&gt;
			wikEd.HighlightBuildTree(&#039;colorLight&#039;, &#039;block&#039;, regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
		var regExpColorDark = /(&#039;|&amp;quot;)(black|blue|blueviolet|brown|cadetblue|chocolate|cornflowerblue|crimson|darkblue|darkcyan|darkgoldenrod|darkgreen|darkmagenta|darkolivegreen|darkorchid|darkred|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|forestgreen|gray|green|grey|indianred|indigo|lightseagreen|lightslategray|lightslategrey|limegreen|maroon|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumvioletred|midnightblue|navy|olive|olivedrab|orangered|orchid|palevioletred|purple|red|rosybrown|royalblue|saddlebrown|seagreen|sienna|slateblue|slategray|slategrey|steelblue|teal|tomato)(\1)/g;&lt;br /&gt;
		while ( (regExpMatch = regExpColorDark.exec(obj.html) ) !== null) {&lt;br /&gt;
			wikEd.HighlightBuildTree(&#039;colorDark&#039;, &#039;block&#039;, regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// RGB hex colors #ddc, exclude links and character entities starting with &amp;amp;&lt;br /&gt;
		var regExpColor3 = /(^|[^\/\w&amp;amp;])(#[0-9a-f]{3})(?=([^\d\w]|$))/gi;&lt;br /&gt;
		while ( (regExpMatch = regExpColor3.exec(obj.html) ) !== null) {&lt;br /&gt;
			wikEd.HighlightBuildTree(&#039;colorHex3&#039;, &#039;block&#039;, regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// RGB hex colors #d4d0cc, exclude links and character entities starting with &amp;amp;&lt;br /&gt;
		var regExpColor6 = /(^|[^\/\w&amp;amp;])(#[0-9a-f]{6})(?=([^\d\w]|$))/gi;&lt;br /&gt;
		while ( (regExpMatch = regExpColor6.exec(obj.html) ) !== null) {&lt;br /&gt;
			wikEd.HighlightBuildTree(&#039;colorHex6&#039;, &#039;block&#039;, regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// RGB decimal colors rgb(128,64,265)&lt;br /&gt;
		var regExpColorDec = /\brgb\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\)/gi;&lt;br /&gt;
		while ( (regExpMatch = regExpColorDec.exec(obj.html) ) !== null) {&lt;br /&gt;
			wikEd.HighlightBuildTree(&#039;colorDec&#039;, &#039;block&#039;, regExpMatch.index, regExpMatch[0].length, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// single character highlighting: spaces, dashes&lt;br /&gt;
		var regExpCharSpaceDash = new RegExp(&#039;[&#039; + wikEd.charHighlightingStr + &#039;]&#039;, &#039;g&#039;);&lt;br /&gt;
		while ( (regExpMatch = regExpCharSpaceDash.exec(obj.html) ) !== null) {&lt;br /&gt;
			wikEd.HighlightBuildTree(&#039;char&#039;, &#039;block&#039;, regExpMatch.index, regExpMatch[0].length, parseObj);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// control character highlighting&lt;br /&gt;
		var regExpCharCtrl = new RegExp(&#039;[&#039; + wikEd.controlCharHighlightingStr + &#039;]&#039;, &#039;g&#039;);&lt;br /&gt;
		while ( (regExpMatch = regExpCharCtrl.exec(obj.html) ) !== null) {&lt;br /&gt;
			if (regExpMatch[0].charCodeAt(0) &amp;gt; 2) {&lt;br /&gt;
				wikEd.HighlightBuildTree(&#039;ctrl&#039;, &#039;block&#039;, regExpMatch.index, regExpMatch[0].length, parseObj);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// character entities&lt;br /&gt;
		var regExpCharEntities = /&amp;amp;(\w+);/g;&lt;br /&gt;
		while ( (regExpMatch = regExpCharEntities.exec(obj.html) ) !== null) {&lt;br /&gt;
			if (wikEd.charEntitiesByName[ regExpMatch[1] ] !== null) {&lt;br /&gt;
				wikEd.HighlightBuildTree(&#039;charEntity&#039;, &#039;block&#039;, regExpMatch.index, regExpMatch[0].length, parseObj);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	// merge wiki syntax in&lt;br /&gt;
	wikEd.HighlightAddHtml(parseObj, obj);&lt;br /&gt;
&lt;br /&gt;
	// get file previews&lt;br /&gt;
	if ( (wikEd.config.filePreview === true) &amp;amp;&amp;amp; (wikEd.filePreviewRequest !== &#039;&#039;) ) {&lt;br /&gt;
		wikEd.AjaxPreview(wikEd.filePreviewRequest, wikEd.FilePreviewAjaxHandler);&lt;br /&gt;
		wikEd.filePreviewRequest = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// merge html and plain text&lt;br /&gt;
	wikEd.HighlightMergeHtml(parseObj, obj);&lt;br /&gt;
&lt;br /&gt;
	// free up array&lt;br /&gt;
	parseObj.tree = [];&lt;br /&gt;
&lt;br /&gt;
	// \x00 and \x01 back to &amp;amp;lt; and &amp;amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/&amp;amp;/g, &#039;&amp;amp;amp;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\x00/g, &#039;&amp;amp;lt;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/\x01/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove linebreaks in tablemode tables&lt;br /&gt;
	if (wikEd.tableMode === true) {&lt;br /&gt;
		obj.html = obj.html.replace(/\n(&amp;lt;(caption|tr|th|td|br)\b[^&amp;gt;]*?\bclass=&amp;quot;wikEdTable\w+&amp;quot;[^&amp;gt;]*?&amp;gt;)/g, &#039;$1&#039;);&lt;br /&gt;
		obj.html = obj.html.replace(/(&amp;lt;\/table&amp;gt;(&amp;lt;!--wikEdTable\w+--&amp;gt;)?)\n/g, &#039;$1&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// WED(&#039;obj.html&#039;, obj.html);&lt;br /&gt;
	// WED(&#039;wikEd.TabifyHTML(obj.html)&#039;, wikEd.TabifyHTML(obj.html));&lt;br /&gt;
&lt;br /&gt;
	// remove comments&lt;br /&gt;
	if ( (wikEd.config.removeHighlightComments === true) &amp;amp;&amp;amp; (keepComments !== true) ) {&lt;br /&gt;
		obj.html = obj.html.replace(/&amp;lt;!--wikEd[\w\/]+--&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightTreeRedefine: redefine opening tag, for bold / italic and template / parameter&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightTreeRedefine = function (openNodeIndex, tag, tagFromDiff, tagLength, parseObj) {&lt;br /&gt;
&lt;br /&gt;
	if (typeof tag == &#039;string&#039;) {&lt;br /&gt;
		parseObj.tree[openNodeIndex].tag = tag;&lt;br /&gt;
	}&lt;br /&gt;
	if (typeof tagFromDiff == &#039;string&#039;) {&lt;br /&gt;
		parseObj.tree[openNodeIndex].start += tagFromDiff;&lt;br /&gt;
	}&lt;br /&gt;
	if (typeof tagLength == &#039;string&#039;) {&lt;br /&gt;
		parseObj.tree[openNodeIndex].tagLength = tagLength;&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightBuildTree: build an array based tree structure of text elements&lt;br /&gt;
//   tag info: text pos, text length, tag type (root, open, close, block, error)&lt;br /&gt;
//   connectivity info: parent, firstChild, nextSibling, paired opening/closing (all array indexes)&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightBuildTree = function (tag, tagClass, tagFrom, tagLength, parseObj, tagProperties) {&lt;br /&gt;
&lt;br /&gt;
	// show parameters:&lt;br /&gt;
	// WED(&#039;tag, tagClass, tagFrom, tagLength&#039;, tag + &#039; ,&#039; + tagClass + &#039;, &#039; + tagFrom + &#039;, &#039; + tagLength);&lt;br /&gt;
&lt;br /&gt;
	// single-element tags (block)&lt;br /&gt;
	var pushNode;&lt;br /&gt;
	if (tagClass == &#039;block&#039;) {&lt;br /&gt;
		var previousSibling = null;&lt;br /&gt;
		if ( (parseObj.lastOpenNode !== 0) &amp;amp;&amp;amp; (parseObj.lastOpenNode !== null) ) {&lt;br /&gt;
			var redefinedParentTag;&lt;br /&gt;
&lt;br /&gt;
			// change parent link to linkPiped, only one valid separator per link&lt;br /&gt;
			if ( (tag == &#039;linkParam&#039;) &amp;amp;&amp;amp; (parseObj.lastOpenTag == &#039;link&#039;) ) {&lt;br /&gt;
				redefinedParentTag = &#039;linkPiped&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// change parent link to parameterPiped, only one valid separator per link&lt;br /&gt;
			else if ( (tag == &#039;parameterDefault&#039;) &amp;amp;&amp;amp; (parseObj.lastOpenTag == &#039;parameter&#039;) ) {&lt;br /&gt;
				redefinedParentTag = &#039;parameterPiped&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// redefine parent tag&lt;br /&gt;
			if (redefinedParentTag !== undefined) {&lt;br /&gt;
				parseObj.tree[parseObj.lastOpenNode].tag = redefinedParentTag;&lt;br /&gt;
				parseObj.lastOpenTagFiltered = redefinedParentTag;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// chain blocks&lt;br /&gt;
			var newNode = parseObj.tree.length;&lt;br /&gt;
&lt;br /&gt;
			// first node&lt;br /&gt;
			if (parseObj.tree[parseObj.lastOpenNode].firstChild === null) {&lt;br /&gt;
				parseObj.tree[parseObj.lastOpenNode].firstChild = newNode;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// chain to previous blocks&lt;br /&gt;
			else {&lt;br /&gt;
				previousSibling = parseObj.tree[parseObj.lastOpenNode].lastChild;&lt;br /&gt;
				var previousSiblingNode = parseObj.tree[previousSibling];&lt;br /&gt;
				if (previousSiblingNode !== undefined) {&lt;br /&gt;
					previousSiblingNode.nextSibling = newNode;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			parseObj.tree[parseObj.lastOpenNode].lastChild = newNode;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add new block to tree&lt;br /&gt;
		pushNode = {&lt;br /&gt;
			&#039;tag&#039;: tag,&lt;br /&gt;
			&#039;start&#039;: tagFrom,&lt;br /&gt;
			&#039;tagLength&#039;: tagLength,&lt;br /&gt;
			&#039;type&#039;: &#039;block&#039;,&lt;br /&gt;
			&#039;parent&#039;: parseObj.lastOpenNode,&lt;br /&gt;
			&#039;previousSibling&#039;: previousSibling&lt;br /&gt;
		};&lt;br /&gt;
		parseObj.tree.push(pushNode);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// opening tags&lt;br /&gt;
	else if (tagClass == &#039;open&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// push new open element onto tree&lt;br /&gt;
		pushNode = {&lt;br /&gt;
			&#039;tag&#039;: tag,&lt;br /&gt;
			&#039;start&#039;: tagFrom,&lt;br /&gt;
			&#039;tagLength&#039;: tagLength,&lt;br /&gt;
			&#039;type&#039;: &#039;open&#039;,&lt;br /&gt;
			&#039;parent&#039;: parseObj.lastOpenNode&lt;br /&gt;
		};&lt;br /&gt;
		parseObj.lastOpenNode = parseObj.tree.push(pushNode) - 1;&lt;br /&gt;
&lt;br /&gt;
		// get new top and second-to-top nodes, ignoring unpaired p tags&lt;br /&gt;
		wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// closing tags&lt;br /&gt;
	else if (tagClass == &#039;close&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// try until we find the correct opening tag after fixing the tree&lt;br /&gt;
		while (true) {&lt;br /&gt;
&lt;br /&gt;
			// no opening tag on stack&lt;br /&gt;
			if (parseObj.lastOpenNode === 0) {&lt;br /&gt;
&lt;br /&gt;
				// ignore unmatched =&lt;br /&gt;
				if (tag == &#039;heading&#039;) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// ignore breaking newlines&lt;br /&gt;
				if (tag != &#039;newline&#039;) {&lt;br /&gt;
&lt;br /&gt;
					// tolerate leading closing tags for fragment highlighting&lt;br /&gt;
					if ( (parseObj.whole === false) &amp;amp;&amp;amp; (parseObj.addedOpenTag === false) )  {&lt;br /&gt;
&lt;br /&gt;
						// add new closing element to tree&lt;br /&gt;
						pushNode = {&lt;br /&gt;
							&#039;tag&#039;: tag,&lt;br /&gt;
							&#039;start&#039;: tagFrom,&lt;br /&gt;
							&#039;tagLength&#039;: tagLength,&lt;br /&gt;
							&#039;type&#039;: &#039;close&#039;,&lt;br /&gt;
							&#039;pairedPos&#039;: parseObj.tree[parseObj.lastOpenNode].start + parseObj.tree[parseObj.lastOpenNode].tagLength,&lt;br /&gt;
						};&lt;br /&gt;
						parseObj.tree.push(pushNode);&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					// add no open tag error to tree&lt;br /&gt;
					else {&lt;br /&gt;
						pushNode = {&lt;br /&gt;
							&#039;start&#039;: tagFrom,&lt;br /&gt;
							&#039;tagLength&#039;: tagLength,&lt;br /&gt;
							&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
							&#039;left&#039;: wikEd.config.text.wikEdErrorNoOpen&lt;br /&gt;
						};&lt;br /&gt;
						parseObj.tree.push(pushNode);&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// ignore unpaired &amp;lt;p&amp;gt; and spare nodes and try again with parent&lt;br /&gt;
			if ( (tag != &#039;p&#039;) &amp;amp;&amp;amp; ( (parseObj.lastOpenTag == &#039;p&#039;) || (parseObj.lastOpenTag == &#039;spare&#039;) ) ) {&lt;br /&gt;
				if (parseObj.lastOpenNode !== null) {&lt;br /&gt;
					parseObj.lastOpenNode = parseObj.tree[parseObj.lastOpenNode].parent;&lt;br /&gt;
					parseObj.lastOpenTag = parseObj.lastOpenNode.tag;&lt;br /&gt;
				}&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// newline breaks heading or external link, remove corresponding opening tag from stack&lt;br /&gt;
			if (tag == &#039;newline&#039;) {&lt;br /&gt;
&lt;br /&gt;
				// mark broken opening tags&lt;br /&gt;
				var nodeNo = parseObj.lastOpenNode;&lt;br /&gt;
				var node = null;&lt;br /&gt;
				while ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== undefined) &amp;amp;&amp;amp; (nodeNo !== null) ) {&lt;br /&gt;
					node = parseObj.tree[nodeNo];&lt;br /&gt;
					if (&lt;br /&gt;
						(node.tag == &#039;heading&#039;) ||&lt;br /&gt;
						(node.tag == &#039;link&#039;) ||&lt;br /&gt;
						(node.tag == &#039;linkPiped&#039;) ||&lt;br /&gt;
						(node.tag == &#039;externalText&#039;) ||&lt;br /&gt;
						(node.tag == &#039;bold&#039;) ||&lt;br /&gt;
						(node.tag == &#039;italic&#039;) ||&lt;br /&gt;
						(node.tag == &#039;boldItalic&#039;)&lt;br /&gt;
					) {&lt;br /&gt;
						wikEd.HighlightMarkLastOpenNode(wikEd.config.text.wikEdErrorNewline, parseObj);&lt;br /&gt;
						wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
					}&lt;br /&gt;
					nodeNo = node.parent;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// correct piped link&lt;br /&gt;
			switch (tag) {&lt;br /&gt;
				case &#039;link&#039;:&lt;br /&gt;
					if (parseObj.lastOpenTag == &#039;linkPiped&#039;) {&lt;br /&gt;
						tag = &#039;linkPiped&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					break;&lt;br /&gt;
&lt;br /&gt;
				// correct piped parameter&lt;br /&gt;
				case &#039;parameter&#039;:&lt;br /&gt;
					if (parseObj.lastOpenTag == &#039;parameterPiped&#039;) {&lt;br /&gt;
						tag = &#039;parameterPiped&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// wrong closing element&lt;br /&gt;
			if (tag != parseObj.lastOpenTag) {&lt;br /&gt;
&lt;br /&gt;
				// ignore common unmatched false positive non-tags: = and ]&lt;br /&gt;
				if ( (tag == &#039;heading&#039;) ) {&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// check if there is an open tag for this close tag&lt;br /&gt;
				var nodeNo = parseObj.lastOpenNode;&lt;br /&gt;
				while ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== undefined) &amp;amp;&amp;amp; (nodeNo !== null) ) {&lt;br /&gt;
					if (parseObj.tree[nodeNo].tag == tag) {&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
					nodeNo = parseObj.tree[nodeNo].parent;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// treat open tags as wrong, close tag as correct&lt;br /&gt;
				if ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== undefined) &amp;amp;&amp;amp; (nodeNo !== null) &amp;amp;&amp;amp; (parseObj.tree[nodeNo].tag == tag) ) {&lt;br /&gt;
&lt;br /&gt;
					// mark remaining unmatched opening tags&lt;br /&gt;
					var nodeNo = parseObj.lastOpenNode;&lt;br /&gt;
					while ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== undefined) &amp;amp;&amp;amp; (nodeNo !== null) ) {&lt;br /&gt;
						var node = parseObj.tree[nodeNo];&lt;br /&gt;
						if (node.tag == tag) {&lt;br /&gt;
							parseObj.lastOpenNode = nodeNo;&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
						nodeNo = node.parent;&lt;br /&gt;
						node.type = &#039;error&#039;;&lt;br /&gt;
						node.left = wikEd.config.text.wikEdErrorNoClose;&lt;br /&gt;
						node.parent = null;&lt;br /&gt;
					}&lt;br /&gt;
					wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// treat open tags as correct, treat close tag as wrong&lt;br /&gt;
				else {&lt;br /&gt;
&lt;br /&gt;
					// add wrong close tag error to tree&lt;br /&gt;
					pushNode = {&lt;br /&gt;
						&#039;start&#039;: tagFrom,&lt;br /&gt;
						&#039;tagLength&#039;: tagLength,&lt;br /&gt;
						&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
						&#039;left&#039;: wikEd.config.text.wikEdErrorNoOpen&lt;br /&gt;
					};&lt;br /&gt;
					parseObj.tree.push(pushNode);&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// headings in templates are ignored but we do not want to hide that template&lt;br /&gt;
			if (tag == &#039;heading&#039;) {&lt;br /&gt;
&lt;br /&gt;
				// check for heading in template or ref&lt;br /&gt;
				var ignoreHeading = false;&lt;br /&gt;
				var nodeNo = parseObj.tree[parseObj.lastOpenNode].parent;&lt;br /&gt;
				while ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== undefined) &amp;amp;&amp;amp; (nodeNo !== null) ) {&lt;br /&gt;
					var node = parseObj.tree[nodeNo];&lt;br /&gt;
					if (node.tag == &#039;template&#039;) {&lt;br /&gt;
						node.noHide = true;&lt;br /&gt;
						ignoreHeading = true;&lt;br /&gt;
					}&lt;br /&gt;
					else if (node.tag == &#039;ref&#039;) {&lt;br /&gt;
						node.noHide = true;&lt;br /&gt;
						ignoreHeading = true;&lt;br /&gt;
					}&lt;br /&gt;
					nodeNo = node.parent;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// clean out opening heading&lt;br /&gt;
				if (ignoreHeading === true) {&lt;br /&gt;
&lt;br /&gt;
					// add headings in template errors to tree&lt;br /&gt;
&lt;br /&gt;
					// convert opening tag to error&lt;br /&gt;
					wikEd.HighlightMarkLastOpenNode(wikEd.config.text.wikEdErrorTemplHeading, parseObj);&lt;br /&gt;
					pushNode = {&lt;br /&gt;
						&#039;start&#039;: tagFrom,&lt;br /&gt;
						&#039;tagLength&#039;: tagLength,&lt;br /&gt;
						&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
						&#039;left&#039;: wikEd.config.text.wikEdErrorTemplHeading&lt;br /&gt;
					};&lt;br /&gt;
					parseObj.tree.push(pushNode);&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// it is the correct closing element&lt;br /&gt;
&lt;br /&gt;
			// save element last text position to opening tag entry&lt;br /&gt;
			var pairedPos;&lt;br /&gt;
			var openNode = parseObj.tree[parseObj.lastOpenNode];&lt;br /&gt;
			openNode.pairedPos = tagFrom;&lt;br /&gt;
			pairedPos = parseObj.tree[parseObj.lastOpenNode].start + parseObj.tree[parseObj.lastOpenNode].tagLength;&lt;br /&gt;
&lt;br /&gt;
			// add new closing element to tree&lt;br /&gt;
			pushNode = {&lt;br /&gt;
				&#039;tag&#039;: tag,&lt;br /&gt;
				&#039;start&#039;: tagFrom,&lt;br /&gt;
				&#039;tagLength&#039;: tagLength,&lt;br /&gt;
				&#039;type&#039;: &#039;close&#039;,&lt;br /&gt;
				&#039;paired&#039;: parseObj.lastOpenNode,&lt;br /&gt;
				&#039;pairedPos&#039;: pairedPos,&lt;br /&gt;
				&#039;parent&#039;: openNode.parent&lt;br /&gt;
			};&lt;br /&gt;
			parseObj.tree.push(pushNode);&lt;br /&gt;
&lt;br /&gt;
			// up one level&lt;br /&gt;
			if ( (parseObj.lastOpenNode !== 0) &amp;amp;&amp;amp; (parseObj.lastOpenNode !== null) ) {&lt;br /&gt;
				parseObj.lastOpenNode = parseObj.tree[parseObj.lastOpenNode].parent;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get new top and second-to-top nodes, ignoring unpaired p tags&lt;br /&gt;
		wikEd.HighlightGetLevel(parseObj);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add extra properties&lt;br /&gt;
	if ( (pushNode !== undefined) &amp;amp;&amp;amp; (tagProperties !== undefined) ) {&lt;br /&gt;
		for (var i = 0; i &amp;lt; tagProperties.length; i ++) {&lt;br /&gt;
			pushNode[tagProperties[i][0]] = tagProperties[i][1];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightMarkLastOpenNode: redefine last open node as an error, ignore p and spare, handle pipe subnodes&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightMarkLastOpenNode = function (errorText, parseObj) {&lt;br /&gt;
&lt;br /&gt;
	var lastOpenNode = parseObj.lastOpenNode;&lt;br /&gt;
	var openNode = parseObj.tree[lastOpenNode];&lt;br /&gt;
	parseObj.lastOpenNode = openNode.parent;&lt;br /&gt;
	if ( (openNode.tag != &#039;p&#039;) &amp;amp;&amp;amp; (openNode.tag != &#039;spare&#039;) ) {&lt;br /&gt;
&lt;br /&gt;
		// mark pipes&lt;br /&gt;
		if ( (openNode.tag == &#039;linkPiped&#039;) || (openNode.tag == &#039;parameterPiped&#039;) || (openNode.tag == &#039;template&#039;) || (openNode.tag == &#039;paramTempl&#039;) ) {&lt;br /&gt;
			var childNode = parseObj.tree[openNode.firstChild];&lt;br /&gt;
			if (childNode !== undefined) {&lt;br /&gt;
				parseObj.tree[openNode.firstChild] = {&lt;br /&gt;
					&#039;start&#039;: childNode.start,&lt;br /&gt;
					&#039;tagLength&#039;: childNode.tagLength,&lt;br /&gt;
					&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
					&#039;left&#039;: errorText&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// mark child nodes of error nodes with lower priority (table elements)&lt;br /&gt;
		wikEd.HighlightMarkNestedErrors(lastOpenNode, errorText, parseObj);&lt;br /&gt;
&lt;br /&gt;
		// mark unmatched opening tags&lt;br /&gt;
		parseObj.tree[lastOpenNode] = {&lt;br /&gt;
			&#039;start&#039;: openNode.start,&lt;br /&gt;
			&#039;tagLength&#039;: openNode.tagLength,&lt;br /&gt;
			&#039;type&#039;: &#039;error&#039;,&lt;br /&gt;
			&#039;left&#039;: errorText&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightMarkNestedErrors: mark child nodes of error nodes with lower priority (table elements)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightMarkNestedErrors = function (parent, errorText, parseObj) {&lt;br /&gt;
&lt;br /&gt;
	var tagNesting = {&lt;br /&gt;
		&#039;table&#039;:   &#039;tableCaption|row|tableAttrib&#039;,&lt;br /&gt;
		&#039;tableCaption&#039;: &#039;captionAttrib&#039;,&lt;br /&gt;
		&#039;row&#039;:     &#039;header|cell|rowAttrib&#039;,&lt;br /&gt;
		&#039;header&#039;:  &#039;headerAttrib&#039;,&lt;br /&gt;
		&#039;cell&#039;:    &#039;cellAttrib&#039;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var regExp = null;&lt;br /&gt;
	if (tagNesting.hasOwnProperty(parseObj.tree[parent].tag) === true) {&lt;br /&gt;
		regExp = new RegExp(&#039;^(&#039; + tagNesting[parseObj.tree[parent].tag ]+ &#039;)$&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for (var i = 0; i &amp;lt; parseObj.tree.length; i ++) {&lt;br /&gt;
		var node = parseObj.tree[i];&lt;br /&gt;
		if ( (node.parent == parent) &amp;amp;&amp;amp; (regExp !== null) &amp;amp;&amp;amp; (regExp.test(node.tag) === true) ) {&lt;br /&gt;
			wikEd.HighlightMarkNestedErrors(i, errorText, parseObj);&lt;br /&gt;
			node.type = &#039;error&#039;;&lt;br /&gt;
			node.left = errorText;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightGetLevel: get current innermost (top) element name from parse stack, ignoring unpaired p tags&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightGetLevel = function (parseObj) {&lt;br /&gt;
&lt;br /&gt;
	parseObj.lastOpenTag = null;&lt;br /&gt;
	parseObj.lastOpenNodeFiltered = null;&lt;br /&gt;
	parseObj.lastOpenTagFiltered = null;&lt;br /&gt;
	parseObj.secondlastOpenNodeFiltered = null;&lt;br /&gt;
	parseObj.secondlastOpenTagFiltered = null;&lt;br /&gt;
&lt;br /&gt;
	if ( (parseObj.lastOpenNode === 0) || (parseObj.lastOpenNode === null) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	parseObj.lastOpenTag = parseObj.tree[parseObj.lastOpenNode].tag;&lt;br /&gt;
	var nodeNo = parseObj.lastOpenNode;&lt;br /&gt;
	while ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== undefined) &amp;amp;&amp;amp; (nodeNo !== null) ) {&lt;br /&gt;
		var node = parseObj.tree[nodeNo];&lt;br /&gt;
		if ( (node.tag != &#039;p&#039;) &amp;amp;&amp;amp; (node.tag != &#039;spare&#039;) ) {&lt;br /&gt;
			parseObj.lastOpenNodeFiltered = nodeNo;&lt;br /&gt;
			parseObj.lastOpenTagFiltered = parseObj.tree[nodeNo].tag;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		nodeNo = parseObj.tree[nodeNo].parent;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== null) ) {&lt;br /&gt;
		nodeNo = parseObj.tree[nodeNo].parent;&lt;br /&gt;
		while ( (nodeNo !== 0) &amp;amp;&amp;amp; (nodeNo !== undefined) &amp;amp;&amp;amp; (nodeNo !== null) ) {&lt;br /&gt;
			var node = parseObj.tree[nodeNo];&lt;br /&gt;
			if ( (node.tag != &#039;p&#039;) &amp;amp;&amp;amp; (node.tag != &#039;spare&#039;) ) {&lt;br /&gt;
				parseObj.secondlastOpenNodeFiltered = nodeNo;&lt;br /&gt;
				parseObj.secondlastOpenTagFiltered = parseObj.tree[nodeNo].tag;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
			nodeNo = parseObj.tree[nodeNo].parent;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightAddCode: add actual highlighting html code to parse tree elements&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightAddHtml = function (parseObj, obj) {&lt;br /&gt;
&lt;br /&gt;
	// cycle through currently existing parse array&lt;br /&gt;
	var from = 0;&lt;br /&gt;
	var i = 0;&lt;br /&gt;
	var cellCount = 0;&lt;br /&gt;
	while (i &amp;lt; parseObj.tree.length) {&lt;br /&gt;
&lt;br /&gt;
		var node = parseObj.tree[i];&lt;br /&gt;
		var tag = node.tag;&lt;br /&gt;
		var tagFrom = node.start;&lt;br /&gt;
		var tagLength = node.tagLength;&lt;br /&gt;
		var tagType = node.type;&lt;br /&gt;
		var pairedPos = node.pairedPos;&lt;br /&gt;
		var tagTo = tagFrom + tagLength;&lt;br /&gt;
		var tagMatch = &#039;&#039;;&lt;br /&gt;
		if (tagLength &amp;gt; 0) {&lt;br /&gt;
			tagMatch = obj.html.substr(tagFrom, tagLength);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var insertLeft = &#039;&#039;;&lt;br /&gt;
		var insertRight = &#039;&#039;;&lt;br /&gt;
		var pushRight = &#039;&#039;;&lt;br /&gt;
		var pushRight2 = &#039;&#039;;&lt;br /&gt;
		var pushRightPos2;&lt;br /&gt;
		var pushLeft = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// get sanitized attributes&lt;br /&gt;
		var attrib = &#039;&#039;;&lt;br /&gt;
		if ( (node.attrib !== undefined) &amp;amp;&amp;amp; (node.attrib !== &#039;&#039;) ) {&lt;br /&gt;
			var htmlTag = &#039;&#039;;&lt;br /&gt;
			switch (tag) {&lt;br /&gt;
				case &#039;table&#039;:&lt;br /&gt;
					htmlTag = &#039;table&#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &#039;tableCaption&#039;:&lt;br /&gt;
					htmlTag = &#039;tr&#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &#039;row&#039;:&lt;br /&gt;
					htmlTag = &#039;tr&#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &#039;header&#039;:&lt;br /&gt;
					htmlTag = &#039;th&#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &#039;cell&#039;:&lt;br /&gt;
					htmlTag = &#039;td&#039;;&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			if (htmlTag !== &#039;&#039;) {&lt;br /&gt;
				attrib = wikEd.SanitizeAttributes(htmlTag, node.attrib, true);&lt;br /&gt;
				if (attrib !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
					// adjust rowspan in headers and cells&lt;br /&gt;
					if ( (htmlTag == &#039;th&#039;) || (htmlTag == &#039;td&#039;) ) {&lt;br /&gt;
						attrib = attrib.replace(/\b(rowspan\s*=\s*(&#039;|&amp;quot;|)\s*\+?)(\d+)(\s*\2)/gi,&lt;br /&gt;
							function (p, p1, p2, p3, p4) {&lt;br /&gt;
								return p1 + (p3 * 2 - 1) + p4;&lt;br /&gt;
							}&lt;br /&gt;
						);&lt;br /&gt;
					}&lt;br /&gt;
					attrib = &#039; &#039; + attrib;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get parent and paired&lt;br /&gt;
		var parent = null;&lt;br /&gt;
		if ( (node.parent !== undefined) &amp;amp;&amp;amp; (node.parent !== null) &amp;amp;&amp;amp; (node.parent &amp;gt; 0) ) {&lt;br /&gt;
			parent = parseObj.tree[node.parent];&lt;br /&gt;
		}&lt;br /&gt;
		var paired = null;&lt;br /&gt;
		if ( (node.paired !== undefined) &amp;amp;&amp;amp; (node.paired &amp;gt; 0) ) {&lt;br /&gt;
			paired = parseObj.tree[node.paired];&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get linebreaks before tag&lt;br /&gt;
		var newlineClass = &#039;&#039;;&lt;br /&gt;
		var newlineHtml = &#039;&#039;;&lt;br /&gt;
		if (node.newline === true) {&lt;br /&gt;
&lt;br /&gt;
			// add actual linebreak after headers/cells instead for pasting of table to raw text (still adds tabs as cell separators)&lt;br /&gt;
			if ( (cellCount &amp;gt; 0) &amp;amp;&amp;amp; (tagType == &#039;open&#039;) &amp;amp;&amp;amp; ( (tag == &#039;header&#039;) || (tag == &#039;cell&#039;) ) ) {&lt;br /&gt;
				newlineHtml = &#039;&amp;lt;div class=&amp;quot;wikEdTableBR&amp;quot;&amp;gt;&amp;lt;br class=&amp;quot;wikEdTableBR&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!--wikEdTableBR--&amp;gt;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				newlineClass = &#039;BR&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		var parentNewlineClass = &#039;&#039;;&lt;br /&gt;
		if ( (parent !== null) &amp;amp;&amp;amp; (parent.newline === true) ) {&lt;br /&gt;
			parentNewlineClass = &#039;BR&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		var pairedNewlineClass = &#039;&#039;;&lt;br /&gt;
		if ( (paired !== null) &amp;amp;&amp;amp; (paired.newline === true) ) {&lt;br /&gt;
			pairedNewlineClass = &#039;BR&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		switch (tagType) {&lt;br /&gt;
&lt;br /&gt;
			// tag type: open&lt;br /&gt;
			case &#039;open&#039;:&lt;br /&gt;
				var innerPlain = &#039;&#039;;&lt;br /&gt;
				if (pairedPos !== undefined) {&lt;br /&gt;
					innerPlain = obj.html.substring(tagTo, pairedPos);&lt;br /&gt;
				}&lt;br /&gt;
				switch (tag) {&lt;br /&gt;
					case &#039;italic&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdItalic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdWiki&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdWiki--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;bold&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdBold&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdWiki&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdWiki--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;link&#039;:&lt;br /&gt;
					case &#039;linkPiped&#039;:&lt;br /&gt;
						var linkClass = &#039;wikEdLink&#039;;&lt;br /&gt;
						var follow = &#039;&#039;;&lt;br /&gt;
						var interClean = &#039;&#039;;&lt;br /&gt;
						var nsClean = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
						// detect interlink and namespace&lt;br /&gt;
						//                 1   123 inter: 3     2 45  :  5 6        namespace           64 7template 7   8  9param  98&lt;br /&gt;
						var regExpLink = /^(\s*)(([\w\- ]+)\:\s*)?((\:\s*)?([^\:\|\[\]\{\}\n\t]*\s*\:\s*))?([^\|\n]+?)\s*(\|((.|\n)*))?\s*$/gi;&lt;br /&gt;
						regExpLink.lastIndex = 0;&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						if ( (regExpMatch = regExpLink.exec(innerPlain)) !== null) {&lt;br /&gt;
&lt;br /&gt;
							// get interwiki, namespace, article, paramters&lt;br /&gt;
							var pre = regExpMatch[1] || &#039;&#039;;&lt;br /&gt;
							var inter = regExpMatch[2] || &#039;&#039;;&lt;br /&gt;
							var ns = regExpMatch[4] || &#039;&#039;;&lt;br /&gt;
							var article = regExpMatch[7] || &#039;&#039;;&lt;br /&gt;
							var param = regExpMatch[9] || &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
							if (inter !== &#039;&#039;) {&lt;br /&gt;
								interClean = inter;&lt;br /&gt;
								interClean = interClean.replace(/\s/g, &#039; &#039;);&lt;br /&gt;
								interClean = interClean.replace(/ {2,}/g, &#039; &#039;);&lt;br /&gt;
								interClean = interClean.replace(/: +:/, &#039;&#039;);&lt;br /&gt;
								interClean = interClean.replace(/^ $/, &#039;&#039;);&lt;br /&gt;
							}&lt;br /&gt;
							var interStart = tagTo + regExpMatch.index + pre.length;&lt;br /&gt;
&lt;br /&gt;
							if (ns !== &#039;&#039;) {&lt;br /&gt;
								nsClean = ns;&lt;br /&gt;
								nsClean = nsClean.replace(/\s/g, &#039; &#039;);&lt;br /&gt;
								nsClean = nsClean.replace(/ {2,}/g, &#039; &#039;);&lt;br /&gt;
								nsClean = nsClean.replace(/: :/, &#039;&#039;);&lt;br /&gt;
								nsClean = nsClean.replace(/^ $/, &#039;&#039;);&lt;br /&gt;
							}&lt;br /&gt;
							var nsStart = interStart + ns.length;&lt;br /&gt;
&lt;br /&gt;
							// change interwiki into more common namespace if ambiguous&lt;br /&gt;
							if ( (interClean !== &#039;&#039;) &amp;amp;&amp;amp; (nsClean === &#039;&#039;) ) {&lt;br /&gt;
								ns = inter;&lt;br /&gt;
								nsClean = interClean;&lt;br /&gt;
								nsStart = interStart;&lt;br /&gt;
								inter = &#039;&#039;;&lt;br /&gt;
								interClean = &#039;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// detect cross-namespace links&lt;br /&gt;
							linkClass = &#039;wikEdLink&#039;;&lt;br /&gt;
							if (wikEd.pageNamespace !== null) {&lt;br /&gt;
								if (ns != wikEd.pageNamespace) {&lt;br /&gt;
									linkClass = &#039;wikEdLinkCrossNs&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// highlight interwiki and namespace&lt;br /&gt;
							if (article !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
								// highlight interwiki&lt;br /&gt;
								if (inter !== &#039;&#039;) {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;linkInter&#039;, &#039;block&#039;, interStart, inter.length, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
&lt;br /&gt;
								// highlight namespace&lt;br /&gt;
								if (ns !== &#039;&#039;) {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;linkNamespace&#039;, &#039;block&#039;, nsStart, ns.length, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
&lt;br /&gt;
								// linkify&lt;br /&gt;
								var regExpCasing = new RegExp(&#039;(^|\\:)&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;(\\:|$)&#039;, &#039;i&#039;);&lt;br /&gt;
								nsClean = nsClean.replace(regExpCasing, &#039;$1&#039; + wikEd.config.text[&#039;wikicode Category&#039;] + &#039;$2&#039;);&lt;br /&gt;
								if (nsClean == &#039;:&#039;) {&lt;br /&gt;
									nsClean = &#039;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
								follow = &#039; &#039; + wikEd.HighlightLinkify(interClean + nsClean, article);&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						if (nsClean.toLowerCase() == wikEd.config.text[&#039;wikicode Category&#039;].toLowerCase() + &#039;:&#039;) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdCat&amp;quot;&#039; + follow + &#039;&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdCatName&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else if (tag == &#039;linkPiped&#039;) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;&#039; + linkClass + &#039;&amp;quot;&#039; + follow + &#039;&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTarget&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;&#039; + linkClass + &#039;&amp;quot;&#039; + follow + &#039;&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkName&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;file&#039;:&lt;br /&gt;
						var previewCode = &#039;&#039;;&lt;br /&gt;
						var regExpFile = new RegExp(&#039;^\\s*(Image|File|Media|&#039; + wikEd.config.text[&#039;wikicode Image&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode File&#039;] + &#039;|&#039; + wikEd.config.text[&#039;wikicode Media&#039;] + &#039;)\\s*:\\s*([^\\|\\n]*)&#039;, &#039;i&#039;);&lt;br /&gt;
						var regExpMatch = regExpFile.exec(innerPlain);&lt;br /&gt;
						if (regExpMatch === null) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdFile&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// linkify and preview&lt;br /&gt;
						else {&lt;br /&gt;
							var fileTag = regExpMatch[1];&lt;br /&gt;
							var fileName = regExpMatch[2];&lt;br /&gt;
&lt;br /&gt;
							// add file preview box&lt;br /&gt;
							var filePlain = fileTag + &#039;:&#039; + fileName.replace(/&amp;lt;[^&amp;gt;]*&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
							filePlain = filePlain.replace(/ /g,&#039;_&#039;);&lt;br /&gt;
							if (wikEd.config.filePreview === true) {&lt;br /&gt;
&lt;br /&gt;
								// get image size&lt;br /&gt;
								var filePreviewSize = wikEd.config.filePreviewSize;&lt;br /&gt;
								var regExpMatch;&lt;br /&gt;
								if ( (regExpMatch = /\|(\d+)px(\||$)/.exec(innerPlain)) !== null) {&lt;br /&gt;
									var size = parseInt(regExpMatch[1]);&lt;br /&gt;
									if ( (size &amp;gt; 0) &amp;amp;&amp;amp; (size &amp;lt; wikEd.config.filePreviewSize) ) {&lt;br /&gt;
										filePreviewSize = size;&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
&lt;br /&gt;
								// get image url and size from cache&lt;br /&gt;
								var style = &#039;&#039;;&lt;br /&gt;
								var fileObj = wikEd.filePreviewCache[&#039;wikEd&#039; + filePlain + filePreviewSize];&lt;br /&gt;
								if (fileObj !== undefined) {&lt;br /&gt;
									var filePreviewHeight = filePreviewSize;&lt;br /&gt;
									if (fileObj.height !== null) {&lt;br /&gt;
										filePreviewHeight = fileObj.height;&lt;br /&gt;
									}&lt;br /&gt;
									var filePreviewWidth = filePreviewSize;&lt;br /&gt;
									if (fileObj.width !== null) {&lt;br /&gt;
										filePreviewWidth = fileObj.width;&lt;br /&gt;
									}&lt;br /&gt;
									style = &#039;background-image: url(&#039; + fileObj.url + &#039;); height: &#039; + filePreviewHeight + &#039;px; width: &#039; + filePreviewWidth + &#039;px;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
&lt;br /&gt;
								// get image url and size through an ajax request&lt;br /&gt;
								else {&lt;br /&gt;
									style = &#039;display: none; height: &#039; + filePreviewSize + &#039;px; width: &#039; + filePreviewSize + &#039;px;&#039;;&lt;br /&gt;
									var fileTagPreview = fileTag;&lt;br /&gt;
									if ( (fileTag == &#039;Media&#039;) || (fileTag == wikEd.config.text[&#039;wikicode Media&#039;]) ) {&lt;br /&gt;
										fileTagPreview = &#039;File&#039;;&lt;br /&gt;
									}&lt;br /&gt;
									wikEd.filePreviewRequest += &#039;\n&#039; + filePlain + &#039; &#039; + filePreviewSize + &#039; [[&#039; + fileTagPreview + &#039;:&#039; + fileName + &#039;|&#039; + filePreviewSize + &#039;px|&#039; + filePreviewSize + &#039;x&#039; + filePreviewSize + &#039;px]]\n&#039;;&lt;br /&gt;
									wikEd.filePreviewIds[wikEd.filePreviewNo] = filePlain + filePreviewSize;&lt;br /&gt;
								}&lt;br /&gt;
								previewCode = &#039;&amp;lt;span class=&amp;quot;wikEdFilePreview&amp;quot; id=&amp;quot;wikEdFilePreview&#039; + wikEd.filePreviewNo + &#039;&amp;quot; style=&amp;quot;&#039; + style + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdFilePreview + &#039; (&#039; + filePlain + &#039;)&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFilePreview--&amp;gt;&#039;;&lt;br /&gt;
								wikEd.filePreviewNo ++;&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdFile&amp;quot; &#039; + wikEd.HighlightLinkify(&#039;&#039;, filePlain) + &#039;&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						insertRight = previewCode + &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileName&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;external&#039;:&lt;br /&gt;
						var url = &#039;&#039;;&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						if ( (regExpMatch = /\w\S+/.exec(innerPlain)) !== null) {&lt;br /&gt;
							url = regExpMatch[0];&lt;br /&gt;
						}&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdURL&amp;quot; &#039; + wikEd.HighlightLinkify(&#039;&#039;, &#039;&#039;, url) + &#039;&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;externalText&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdURLText&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;template&#039;:&lt;br /&gt;
						var mod = &#039;&#039;;&lt;br /&gt;
						var inter = &#039;&#039;;&lt;br /&gt;
						var interClean = &#039;&#039;;&lt;br /&gt;
						var ns = &#039;&#039;;&lt;br /&gt;
						var nsClean = &#039;&#039;;&lt;br /&gt;
						var template = &#039;&#039;;&lt;br /&gt;
						var param = &#039;&#039;;&lt;br /&gt;
						var follow = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
						//                                 12          mod              2  :    1 34  :    4 5        namespace                 53     6 template            6    7   89 param  98&lt;br /&gt;
						var regExpTempl = new RegExp(&#039;^\\s*((&#039; + wikEd.templModifier + &#039;)\\:\\s*)?((\\:\\s*)?([^:|\\[\\]{}\\s\\x00\\x01]*\\s*\\:))?\\s*([^:\\n\\x00\\x01{}]+?)\\s*(\\|((.|\\n)*?))?\\s*$&#039;, &#039;gi&#039;);&lt;br /&gt;
&lt;br /&gt;
						// detect parser variables and functions, might slow main regexp down&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						var isParserVar = false;&lt;br /&gt;
						if ( (regExpMatch = regExpTempl.exec(innerPlain)) !== null) {&lt;br /&gt;
&lt;br /&gt;
							// get modifier, namespace, template, paramters&lt;br /&gt;
							var p1 = regExpMatch[1] || &#039;&#039;;&lt;br /&gt;
							if (p1 !== &#039;&#039;) {&lt;br /&gt;
								mod = p1;&lt;br /&gt;
								interClean = mod.replace(/\s+$/g, &#039;&#039;);&lt;br /&gt;
								interClean = inter.replace(/:$/g, &#039;&#039;);&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							var p3 = regExpMatch[3] || &#039;&#039;;&lt;br /&gt;
							if (p3 !== &#039;&#039;) {&lt;br /&gt;
								ns = p3;&lt;br /&gt;
								nsClean = ns.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
								nsClean = nsClean.replace(/\s*\:\s*()/g, &#039;:&#039;);&lt;br /&gt;
								nsClean = nsClean.replace(/\s\s+/g, &#039; &#039;);&lt;br /&gt;
								nsClean = nsClean.replace(/(.):$/g, &#039;$1&#039;);&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							template = regExpMatch[6] || &#039;&#039;;&lt;br /&gt;
							param = regExpMatch[8] || &#039;&#039;;&lt;br /&gt;
							var parserVar = ns.substr(0, ns.length - 1);&lt;br /&gt;
&lt;br /&gt;
							// {{VARIABLE}}&lt;br /&gt;
							if (isParserVar === false) {&lt;br /&gt;
								if ( (template !== &#039;&#039;) &amp;amp;&amp;amp; (ns === &#039;&#039;) &amp;amp;&amp;amp; (param === &#039;&#039;) ) {&lt;br /&gt;
									var regExpParserVar = new RegExp(&#039;^(&#039; + wikEd.parserVariables + &#039;|&#039; + wikEd.parserVariablesR + &#039;)$&#039;, &#039;&#039;);&lt;br /&gt;
									var regExpMatchParserVar;&lt;br /&gt;
									if ( (regExpMatchParserVar = regExpParserVar.exec(template)) !== null) {&lt;br /&gt;
										isParserVar = true;&lt;br /&gt;
										wikEd.HighlightBuildTree(&#039;templateParserFunct&#039;, &#039;block&#039;, tagFrom + 2, innerPlain.length, parseObj);&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// {{VARIABLE:R}}&lt;br /&gt;
							if (isParserVar === false) {&lt;br /&gt;
								if ( (ns !== &#039;&#039;) &amp;amp;&amp;amp; (template == &#039;R&#039;) ) {&lt;br /&gt;
									var regExpParserVar = new RegExp(&#039;^(&#039; + wikEd.parserVariablesR + &#039;)$&#039;, &#039;&#039;);&lt;br /&gt;
									var regExpMatchParserVar;&lt;br /&gt;
									if ( (regExpMatchParserVar = regExpParserVar.exec(parserVar)) !== null) {&lt;br /&gt;
										isParserVar = true;&lt;br /&gt;
										wikEd.HighlightBuildTree(&#039;templateParserFunct&#039;, &#039;block&#039;, tagFrom + 2, innerPlain.indexOf(&#039;:&#039;) + 1, parseObj);&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// {{FUNCTION:param|R}}&lt;br /&gt;
							if (isParserVar === false) {&lt;br /&gt;
								if ( (ns !== &#039;&#039;) &amp;amp;&amp;amp; ( (param === &#039;&#039;) || (param == &#039;R&#039;) ) ) {&lt;br /&gt;
									var regExpParserVar = new RegExp(&#039;^(&#039; + wikEd.parserFunctionsR + &#039;)$&#039;, &#039;&#039;);&lt;br /&gt;
									if ( (regExpMatch = regExpParserVar.exec(parserVar)) !== null) {&lt;br /&gt;
										isParserVar = true;&lt;br /&gt;
										wikEd.HighlightBuildTree(&#039;templateParserFunct&#039;, &#039;block&#039;, tagFrom + 2, innerPlain.indexOf(&#039;:&#039;) + 1, parseObj);&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// {{function:param|param}}&lt;br /&gt;
							if (isParserVar === false) {&lt;br /&gt;
								if (ns !== &#039;&#039;) {&lt;br /&gt;
									var regExpParserVar = new RegExp(&#039;^(&#039; + wikEd.parserFunctions + &#039;)$&#039;, &#039;i&#039;);&lt;br /&gt;
									if ( (regExpMatch = regExpParserVar.exec(parserVar)) !== null) {&lt;br /&gt;
										isParserVar = true;&lt;br /&gt;
										wikEd.HighlightBuildTree(&#039;templateParserFunct&#039;, &#039;block&#039;, tagFrom + 2, innerPlain.indexOf(&#039;:&#039;) + 1, parseObj);&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// {{#function:param|param}}&lt;br /&gt;
							if (isParserVar === false) {&lt;br /&gt;
								if (ns !== &#039;&#039;) {&lt;br /&gt;
									var regExpParserVar = new RegExp(&#039;^(#(&#039; + wikEd.parserFunctionsHash + &#039;))$&#039;, &#039;i&#039;);&lt;br /&gt;
									if ( (regExpMatch = regExpParserVar.exec(parserVar)) !== null) {&lt;br /&gt;
&lt;br /&gt;
									// #property: linkify wikibase template (wikidata)&lt;br /&gt;
										if (parserVar == &#039;#property&#039;) {&lt;br /&gt;
&lt;br /&gt;
											// item id from parameter&lt;br /&gt;
											var item = &#039;&#039;;&lt;br /&gt;
											var regExpMatchItem;&lt;br /&gt;
											if ( (regExpMatchItem = /(^|\|)id=([^|]+)/.exec(param)) !== null) {&lt;br /&gt;
												item = regExpMatchItem[2];&lt;br /&gt;
											}&lt;br /&gt;
&lt;br /&gt;
											// item name from parameter&lt;br /&gt;
											else if ( (regExpMatchItem = /(^|\|)of=([^|]+)/.exec(param)) !== null) {&lt;br /&gt;
												item = wikEd.EncodeTitle(regExpMatchItem[2]);&lt;br /&gt;
												item = &#039;Special:ItemByTitle/&#039; + wikEd.wikibase.currentSite.globalSiteId + &#039;/&#039; + item;&lt;br /&gt;
											}&lt;br /&gt;
&lt;br /&gt;
											// get item name from article name&lt;br /&gt;
											else {&lt;br /&gt;
												item = wikEd.EncodeTitle();&lt;br /&gt;
												item = &#039;Special:ItemByTitle/&#039; + wikEd.wikibase.currentSite.globalSiteId + &#039;/&#039; + item ;&lt;br /&gt;
											}&lt;br /&gt;
&lt;br /&gt;
											// get wikibase repository url&lt;br /&gt;
											follow = &#039; &#039; + wikEd.HighlightLinkify(&#039;&#039;, &#039;&#039;, (wikEd.wikibase.repoUrl + wikEd.wikibase.repoArticlePath).replace(/\$1/, item));&lt;br /&gt;
										}&lt;br /&gt;
&lt;br /&gt;
										// #invoke: template scripting (LUA)&lt;br /&gt;
										if (parserVar == &#039;#invoke&#039;) {&lt;br /&gt;
											follow = &#039; &#039; + wikEd.HighlightLinkify(&#039;Module:&#039;, template);&lt;br /&gt;
										}&lt;br /&gt;
&lt;br /&gt;
										isParserVar = true;&lt;br /&gt;
										wikEd.HighlightBuildTree(&#039;templateParserFunct&#039;, &#039;block&#039;, tagFrom + 2, innerPlain.indexOf(&#039;:&#039;) + 1, parseObj);&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
							// highlight template&lt;br /&gt;
							if (isParserVar === false) {&lt;br /&gt;
&lt;br /&gt;
								// highlight modifier&lt;br /&gt;
								if (mod !== &#039;&#039;) {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;templateModifier&#039;, &#039;block&#039;, tagFrom + 2, mod.length, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
&lt;br /&gt;
								// highlight namespace&lt;br /&gt;
								if (ns !== &#039;&#039;) {&lt;br /&gt;
									wikEd.HighlightBuildTree(&#039;templateNamespace&#039;, &#039;block&#039;, tagFrom + 2 + mod.length, ns.length, parseObj);&lt;br /&gt;
								}&lt;br /&gt;
&lt;br /&gt;
								// add missing template namespace and linkify&lt;br /&gt;
								if (ns == &#039;:&#039;) {&lt;br /&gt;
									ns = &#039;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
								else if (ns === &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
									// no Template: addition for subpage linking&lt;br /&gt;
									if (template.indexOf(&#039;/&#039;)!== 0) {&lt;br /&gt;
										ns = wikEd.config.text[&#039;wikicode Template&#039;] + &#039;:&#039;;&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
								follow = &#039; &#039; + wikEd.HighlightLinkify(ns, template);&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						var hideClass = &#039;wikEdTempl&#039;;&lt;br /&gt;
						if ( (template !== &#039;&#039;) &amp;amp;&amp;amp; (isParserVar === false) ) {&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
&lt;br /&gt;
								// show first template immediately following a template or reference&lt;br /&gt;
								var hideButtonClass = &#039;wikEdTemplButton&#039;;&lt;br /&gt;
								var hideButtonStyle = &#039;&#039;;&lt;br /&gt;
								if (parent !== null) {&lt;br /&gt;
									if ( (parent.tag == &#039;template&#039;) || (parent.tag == &#039;ref&#039;) )  {&lt;br /&gt;
										if (/^\s*$/.test(obj.html.substring(parent.start + parent.tagLength, tagFrom)) === true) {&lt;br /&gt;
											hideButtonClass = hideButtonClass.replace(/Button(Show)?/, &#039;ButtonShow&#039;);&lt;br /&gt;
											hideClass = &#039;wikEdTemplShow&#039;;&lt;br /&gt;
											hideButtonStyle = &#039; style=&amp;quot;display: block&amp;quot;&#039;;&lt;br /&gt;
										}&lt;br /&gt;
									}&lt;br /&gt;
								}&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTemplContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;&#039; + hideButtonClass + wikEd.templateArray.length + &#039;&amp;quot; style=&amp;quot;&#039; + hideButtonStyle + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdTemplButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdTemplButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplContainer--&amp;gt;&#039;;&lt;br /&gt;
								wikEd.templateArray.push( {&#039;text&#039;: template, &#039;added&#039;: false} );&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						insertLeft += &#039;&amp;lt;span class=&amp;quot;&#039; + hideClass + &#039;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplName&amp;quot;&#039; + follow + &#039;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;parameter&#039;:&lt;br /&gt;
					case &#039;parameterPiped&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdParam&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdParamName&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;html&#039;:&lt;br /&gt;
					case &#039;tr&#039;:&lt;br /&gt;
					case &#039;td&#039;:&lt;br /&gt;
					case &#039;th&#039;:&lt;br /&gt;
					case &#039;col&#039;:&lt;br /&gt;
					case &#039;thead&#039;:&lt;br /&gt;
					case &#039;tfoot&#039;:&lt;br /&gt;
					case &#039;tbody&#039;:&lt;br /&gt;
					case &#039;colgroup&#039;:&lt;br /&gt;
					case &#039;abbr&#039;:&lt;br /&gt;
					case &#039;big&#039;:&lt;br /&gt;
					case &#039;blockquote&#039;:&lt;br /&gt;
					case &#039;center&#039;:&lt;br /&gt;
					case &#039;code&#039;:&lt;br /&gt;
					case &#039;del&#039;:&lt;br /&gt;
					case &#039;div&#039;:&lt;br /&gt;
					case &#039;font&#039;:&lt;br /&gt;
					case &#039;ins&#039;:&lt;br /&gt;
					case &#039;small&#039;:&lt;br /&gt;
					case &#039;span&#039;:&lt;br /&gt;
					case &#039;strike&#039;:&lt;br /&gt;
					case &#039;tt&#039;:&lt;br /&gt;
					case &#039;rb&#039;:&lt;br /&gt;
					case &#039;rp&#039;:&lt;br /&gt;
					case &#039;rt&#039;:&lt;br /&gt;
					case &#039;ruby&#039;:&lt;br /&gt;
					case &#039;nowiki&#039;:&lt;br /&gt;
					case &#039;math&#039;:&lt;br /&gt;
					case &#039;score&#039;:&lt;br /&gt;
					case &#039;noinclude&#039;:&lt;br /&gt;
					case &#039;includeonly&#039;:&lt;br /&gt;
					case &#039;onlyinclude&#039;:&lt;br /&gt;
					case &#039;gallery&#039;:&lt;br /&gt;
					case &#039;categorytree&#039;:&lt;br /&gt;
					case &#039;charinsert&#039;:&lt;br /&gt;
					case &#039;hiero&#039;:&lt;br /&gt;
					case &#039;imagemap&#039;:&lt;br /&gt;
					case &#039;inputbox&#039;:&lt;br /&gt;
					case &#039;poem&#039;:&lt;br /&gt;
					case &#039;syntaxhighlight&#039;:&lt;br /&gt;
					case &#039;source&#039;:&lt;br /&gt;
					case &#039;timeline&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtml&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;u&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdIns&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;s&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdDel&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;sub&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdSubscript&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;sup&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdSuperscript&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;p&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlUnknown&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdErrorHtmlUnknown + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlUnknown--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;spare&#039;:&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;ref&#039;:&lt;br /&gt;
&lt;br /&gt;
						// ref no hide&lt;br /&gt;
						if (node.noHide === true) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRef&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// ref hide&lt;br /&gt;
						else {&lt;br /&gt;
							var refName = &#039;&#039;;&lt;br /&gt;
							var regExpMatch;&lt;br /&gt;
							if ( (regExpMatch = /(\bname\s*=\s*(&#039;|&amp;quot;))([^\x01]+?)\2/i.exec(tagMatch)) !== null) {&lt;br /&gt;
								refName = regExpMatch[3] || &#039;&#039;;&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;refName&#039;, &#039;block&#039;, tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[3].length, parseObj);&lt;br /&gt;
							}&lt;br /&gt;
							else if ( (regExpMatch = /(\bname\s*=\s*)(\w+)/i.exec(tagMatch)) !== null) {&lt;br /&gt;
								refName = regExpMatch[2];&lt;br /&gt;
								wikEd.HighlightBuildTree(&#039;refName&#039;, &#039;block&#039;, tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);&lt;br /&gt;
							}&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								if (refName !== &#039;&#039;) {&lt;br /&gt;
									insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRefContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdRefButton&#039; + wikEd.referenceArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdRefButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdRefButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRefContainer--&amp;gt;&#039;;&lt;br /&gt;
									wikEd.referenceArray.push( {&#039;text&#039;: refName, &#039;added&#039;: false} );&lt;br /&gt;
								}&lt;br /&gt;
								else {&lt;br /&gt;
									insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRefContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdRefButton&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdRefButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdRefButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRefContainer--&amp;gt;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdRef&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;references&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRefList&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdReferencesTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdReferencesTag--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;heading&#039;:&lt;br /&gt;
						var heading = innerPlain.replace(/^\s+|\s+$/g, &#039;&#039;);&lt;br /&gt;
						if ( (heading == wikEd.config.text[&#039;See also&#039;]) || (heading == wikEd.config.text.References) || (heading == wikEd.config.text[&#039;External links&#039;]) ) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHeadingWP&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHeading&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
&lt;br /&gt;
					// table open&lt;br /&gt;
					case &#039;table&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;table class=&amp;quot;wikEdTableMode&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&#039; + attrib + &#039;&amp;gt;&amp;lt;tr class=&amp;quot;wikEdTableTag&amp;quot;&amp;gt;&amp;lt;td class=&amp;quot;wikEdTableTag&amp;quot; colspan=&amp;quot;1000&amp;quot; align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdTableButton&#039; + wikEd.tableArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdTableButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdTableButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableContainer--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTable&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								wikEd.tableArray.push( {&#039;text&#039;: wikEd.config.text.hideTableStart, &#039;added&#039;: false} );&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableBlock&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableTag&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
							if (node.attrib === undefined) {&lt;br /&gt;
								insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableTag--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableAttrib&#039;:&lt;br /&gt;
						if (parent.attrib !== undefined) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableTagAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableCaption&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
							insertLeft = &#039;&amp;lt;tr class=&amp;quot;wikEdTableCaption&amp;quot;&amp;gt;&amp;lt;td class=&amp;quot;wikEdTableCaption&amp;quot; colspan=&amp;quot;1000&amp;quot; align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableCaption&#039; + newlineClass + &#039;&amp;quot;&#039; + attrib + &#039;&amp;gt;&#039;;&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdTableButton&#039; + wikEd.tableArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdTableButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdTableButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableContainer--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTable&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								wikEd.tableArray.push( {&#039;text&#039;: wikEd.config.text.hideTableCaption, &#039;added&#039;: false} );&lt;br /&gt;
								if (node.attrib === undefined) {&lt;br /&gt;
									insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCaption&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCaptionAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCaptionAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
&lt;br /&gt;
					// pushRight because of dash highlighting&lt;br /&gt;
					case &#039;row&#039;:&lt;br /&gt;
						cellCount = 0;&lt;br /&gt;
						if (tagLength &amp;gt; 0) {&lt;br /&gt;
							if (wikEd.tableMode === true) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;tr class=&amp;quot;wikEdTableRow&amp;quot;&#039; + attrib + &#039;&amp;gt;&amp;lt;td class=&amp;quot;wikEdTableRow&amp;quot; colspan=&amp;quot;1000&amp;quot; align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableRow&#039; + newlineClass + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								if (wikEd.refHide === true) {&lt;br /&gt;
									insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdTableButton&#039; + wikEd.tableArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdTableButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdTableButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableContainer--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTable&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
									wikEd.tableArray.push( {&#039;text&#039;: wikEd.config.text.hideTableRow, &#039;added&#039;: false} );&lt;br /&gt;
								}&lt;br /&gt;
								insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							else {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableRow&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
						// row without tag&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;tr class=&amp;quot;wikEdTableMode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;rowAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableRowAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableRowAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						cellCount ++;&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;td class=&amp;quot;wikEdTableHeader&amp;quot;&#039; + attrib + &#039; align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&#039; + newlineHtml + &#039;&amp;lt;span class=&amp;quot;wikEdTableHeader&#039; + newlineClass + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdTableButton&#039; + wikEd.tableArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdTableButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdTableButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableContainer--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTable&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								wikEd.tableArray.push( {&#039;text&#039;: wikEd.config.text.hideTableHeader, &#039;added&#039;: false} );&lt;br /&gt;
								if (node.attrib === undefined) {&lt;br /&gt;
									insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableHeader&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableHeaderAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableHeaderAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
						cellCount ++;&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;td class=&amp;quot;wikEdTableCell&amp;quot;&#039; + attrib + &#039; align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&#039; + newlineHtml + &#039;&amp;lt;span class=&amp;quot;wikEdTableCell&#039; + newlineClass + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdTableButton&#039; + wikEd.tableArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdTableButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdTableButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableContainer--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTable&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								wikEd.tableArray.push( {&#039;text&#039;: wikEd.config.text.hideTableCell, &#039;added&#039;: false} );&lt;br /&gt;
								if (node.attrib === undefined) {&lt;br /&gt;
									insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCell&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCellAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCellAttrib&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// tag type: close&lt;br /&gt;
			case &#039;close&#039;:&lt;br /&gt;
				switch (tag) {&lt;br /&gt;
					case &#039;italic&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdWiki&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdWiki--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdItalic--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;bold&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdWiki&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdWiki--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdBold--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;link&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkName/CatName--&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLink/Cat--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;linkPiped&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkText--&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLink/Cat/LinkCross--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;file&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFileName/Param/Caption--&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFileTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFile--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;externalText&#039;:&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdURLText--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;external&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdURL--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;template&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplName/Param--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTempl--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;parameter&#039;:&lt;br /&gt;
					case &#039;parameterPiped&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdParamName/Default--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdParam--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;html&#039;:&lt;br /&gt;
					case &#039;tr&#039;:&lt;br /&gt;
					case &#039;td&#039;:&lt;br /&gt;
					case &#039;th&#039;:&lt;br /&gt;
					case &#039;col&#039;:&lt;br /&gt;
					case &#039;thead&#039;:&lt;br /&gt;
					case &#039;tfoot&#039;:&lt;br /&gt;
					case &#039;tbody&#039;:&lt;br /&gt;
					case &#039;colgroup&#039;:&lt;br /&gt;
					case &#039;abbr&#039;:&lt;br /&gt;
					case &#039;big&#039;:&lt;br /&gt;
					case &#039;blockquote&#039;:&lt;br /&gt;
					case &#039;center&#039;:&lt;br /&gt;
					case &#039;code&#039;:&lt;br /&gt;
					case &#039;del&#039;:&lt;br /&gt;
					case &#039;div&#039;:&lt;br /&gt;
					case &#039;font&#039;:&lt;br /&gt;
					case &#039;ins&#039;:&lt;br /&gt;
					case &#039;small&#039;:&lt;br /&gt;
					case &#039;span&#039;:&lt;br /&gt;
					case &#039;strike&#039;:&lt;br /&gt;
					case &#039;tt&#039;:&lt;br /&gt;
					case &#039;rb&#039;:&lt;br /&gt;
					case &#039;rp&#039;:&lt;br /&gt;
					case &#039;rt&#039;:&lt;br /&gt;
					case &#039;ruby&#039;:&lt;br /&gt;
					case &#039;nowiki&#039;:&lt;br /&gt;
					case &#039;math&#039;:&lt;br /&gt;
					case &#039;score&#039;:&lt;br /&gt;
					case &#039;noinclude&#039;:&lt;br /&gt;
					case &#039;includeonly&#039;:&lt;br /&gt;
					case &#039;onlyinclude&#039;:&lt;br /&gt;
					case &#039;gallery&#039;:&lt;br /&gt;
					case &#039;categorytree&#039;:&lt;br /&gt;
					case &#039;charinsert&#039;:&lt;br /&gt;
					case &#039;hiero&#039;:&lt;br /&gt;
					case &#039;imagemap&#039;:&lt;br /&gt;
					case &#039;inputbox&#039;:&lt;br /&gt;
					case &#039;poem&#039;:&lt;br /&gt;
					case &#039;syntaxhighlight&#039;:&lt;br /&gt;
					case &#039;source&#039;:&lt;br /&gt;
					case &#039;timeline&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtml--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;u&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdIns--&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTagButtons--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;s&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdDel--&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTagButtons--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;sub&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTagButtons--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdSubscript--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;sup&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlTagButtons&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTagButtons--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdSuperscript--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;p&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlUnknown&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdErrorHtmlUnknown + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlUnknown--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;ref&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRef--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;references&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdReferencesTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdReferencesTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRefList--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;heading&#039;:&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHeading/WP--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
&lt;br /&gt;
					// table close&lt;br /&gt;
					case &#039;table&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;tr class=&amp;quot;wikEdTableTag&amp;quot;&amp;gt;&amp;lt;td class=&amp;quot;wikEdTableTag&amp;quot; colspan=&amp;quot;1000&amp;quot; align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableTag&#039; + newlineClass + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdTableButton&#039; + wikEd.tableArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdTableButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdTableButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableContainer--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTable&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								wikEd.tableArray.push( {&#039;text&#039;: wikEd.config.text.hideTableEnd, &#039;added&#039;: false} );&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&#039;;&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableTag&#039; + newlineClass + &#039;--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--wikEdTableTag--&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;!--wikEdTableTag--&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;!--wikEdTableMode--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableTag&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableBlock--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableTagAttrib--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableTag&#039; + parentNewlineClass + &#039;--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--wikEdTableTag--&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;!--wikEdTableTag--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableTagAttrib--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableTag--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;tableCaption&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCaption&#039; + pairedNewlineClass + &#039;--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--wikEdTableCaption--&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;!--wikEdTableCaption--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCaption--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;captionAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCaptionAttrib--&amp;gt;&#039;;&lt;br /&gt;
								if (wikEd.refHide === true) {&lt;br /&gt;
									insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
							else {&lt;br /&gt;
								insertRight = &#039;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCaptionAttrib--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;row&#039;:&lt;br /&gt;
						if ( (paired !== null) &amp;amp;&amp;amp; (paired.tagLength &amp;gt; 0) ) {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/tr&amp;gt;&amp;lt;!--wikEdTableRow--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/tr&amp;gt;&amp;lt;!--wikEdTableMode--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;rowAttrib&#039;:&lt;br /&gt;
						var parentAttrib = parent.attrib || &#039;&#039;;&lt;br /&gt;
						if (parentAttrib !== &#039;&#039;) {&lt;br /&gt;
							parentAttrib = wikEd.SanitizeAttributes(&#039;tr&#039;, parentAttrib, true);&lt;br /&gt;
							if (parentAttrib !== &#039;&#039;) {&lt;br /&gt;
								parentAttrib = &#039; &#039; + parentAttrib;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableRowAttrib--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableRow&#039; + parentNewlineClass + &#039;--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--wikEdTableRow--&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;!--wikEdTableRow--&amp;gt;&amp;lt;tr class=&amp;quot;wikEdTableRow&amp;quot;&#039; + parentAttrib + &#039;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableRowAttrib--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
							insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableRow--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;header&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableHeader&#039; + pairedNewlineClass + &#039;--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--wikEdTableHeader--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableHeader--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;headerAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableHeaderAttrib--&amp;gt;&#039;;&lt;br /&gt;
								if (wikEd.refHide === true) {&lt;br /&gt;
									insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableHeaderAttrib--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cell&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCell&#039; + pairedNewlineClass + &#039;--&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;!--wikEdTableCell--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCell--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;cellAttrib&#039;:&lt;br /&gt;
						if (wikEd.tableMode === true) {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCellAttrib--&amp;gt;&#039;;&lt;br /&gt;
								if (wikEd.refHide === true) {&lt;br /&gt;
									insertRight += &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTable--&amp;gt;&#039;;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							if (parent.attrib !== undefined) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTableCode&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
								insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCode--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTableCellAttrib--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// tag type: block&lt;br /&gt;
			case &#039;block&#039;:&lt;br /&gt;
				switch (tag) {&lt;br /&gt;
					case &#039;linkNamespace&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdLinkNs&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkNs--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;linkInter&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdLinkInter&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkInter--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;inlineURL&#039;:&lt;br /&gt;
						var url = &#039;&#039;;&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						if ( (regExpMatch = /\w\S+/.exec(tagMatch)) !== null) {&lt;br /&gt;
							url = regExpMatch[0];&lt;br /&gt;
						}&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdURLName&amp;quot; &#039; + wikEd.HighlightLinkify(&#039;&#039;, &#039;&#039;, url) + &#039;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdURLName--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;externalURL&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdURLTarget&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdURLTarget--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;templateModifier&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTemplMod&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplMod--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;templateNamespace&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdTemplNs&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplNs--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;templateParserFunct&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdParserFunct&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdParserFunct--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;PMID&#039;:&lt;br /&gt;
						var idNumber = &#039;&#039;;&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						if ( (regExpMatch = /\d+/.exec(tagMatch)) !== null) {&lt;br /&gt;
							idNumber = regExpMatch[0];&lt;br /&gt;
						}&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdPMID&amp;quot; &#039; + wikEd.HighlightLinkify(&#039;&#039;, &#039;&#039;, &#039;//www.ncbi.nlm.nih.gov/pubmed/&#039; + idNumber) + &#039;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdPMID--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;ISBN&#039;:&lt;br /&gt;
						var idNumber = &#039;&#039;;&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						if ( (regExpMatch = /\d[\s\d\-]+x?/.exec(tagMatch)) !== null) {&lt;br /&gt;
							idNumber = regExpMatch[0].replace(/\D/g, &#039;&#039;);&lt;br /&gt;
						}&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdISBN&amp;quot; &#039; + wikEd.HighlightLinkify(&#039;&#039;, &#039;Special:BookSources/&#039; + idNumber) + &#039;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdISBN--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;RFC&#039;:&lt;br /&gt;
						var idNumber = &#039;&#039;;&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						if ( (regExpMatch = /\d[\s\d\-]+x?/.exec(tagMatch)) !== null) {&lt;br /&gt;
							idNumber = regExpMatch[0].replace(/\D/g, &#039;&#039;);&lt;br /&gt;
						}&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdISBN&amp;quot; &#039; + wikEd.HighlightLinkify(&#039;&#039;, &#039;&#039;, &#039;//tools.ietf.org/html/rfc&#039; + idNumber) + &#039;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdISBN--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;magic&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdMagic&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdMagic--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;signature&#039;:&lt;br /&gt;
						var title = wikEd.config.text[&#039;wikEdSignature&#039; + tagLength];&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdSignature&amp;quot; title=&amp;quot;&#039; + title + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdSignature--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;hr&#039;:&lt;br /&gt;
						pushLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHr&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHr--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;linkParam&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTarget/CatName--&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdLinkTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdLinkText&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;fileParam&#039;:&lt;br /&gt;
&lt;br /&gt;
						// make text parameters a caption&lt;br /&gt;
						var params = &#039;&#039;;&lt;br /&gt;
						if (pairedPos !== undefined) {&lt;br /&gt;
							params = obj.html.substring(tagFrom + 1, parent.pairedPos - 1);&lt;br /&gt;
						}&lt;br /&gt;
						if (/^\s*(thumb|thumbnail|frame|right|left|center|none|\d+px|\d+x\d+px|link\=.*?|upright|border)\s*(\||$)/.test(params) === true) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFileName/Param--&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFileTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileParam&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFileName/Param--&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdFileTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdFileCaption&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;redirect&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRedir&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRedir--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;templateParam&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplateName/Param--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplParam&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;parameterDefault&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdParamName--&amp;gt;&amp;lt;span class=&amp;quot;wikEdTemplTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTemplTag--&amp;gt;&amp;lt;span class=&amp;quot;wikEdParamDefault&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;void&#039;:&lt;br /&gt;
					case &#039;html&#039;:&lt;br /&gt;
					case &#039;htmlEmpty&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtml&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtml--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;htmlUnknown&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdHtmlUnknown&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdErrorHtmlUnknown + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlUnknown--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;ref&#039;:&lt;br /&gt;
						var refName = &#039;&#039;;&lt;br /&gt;
						var regExpMatch;&lt;br /&gt;
						if ( (regExpMatch = /(\bname\s*=\s*(&#039;|&amp;quot;))([^\x01]+?)\2/i.exec(tagMatch)) !== null) {&lt;br /&gt;
							refName = regExpMatch[3];&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;refName&#039;, &#039;block&#039;, tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[3].length, parseObj);&lt;br /&gt;
						}&lt;br /&gt;
						else if ( (regExpMatch = /(\bname\s*=\s*)(\w+)/i.exec(tagMatch)) !== null) {&lt;br /&gt;
							refName = regExpMatch[2];&lt;br /&gt;
							wikEd.HighlightBuildTree(&#039;refName&#039;, &#039;block&#039;, tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);&lt;br /&gt;
						}&lt;br /&gt;
						if (wikEd.refHide === true) {&lt;br /&gt;
							if (refName !== &#039;&#039;) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRefContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdRefButton&#039; + wikEd.referenceArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdRefButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdRefButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRefContainer--&amp;gt;&#039;;&lt;br /&gt;
								wikEd.referenceArray.push( {&#039;text&#039;: refName + &#039; ↑&#039;, &#039;added&#039;: false} );&lt;br /&gt;
							}&lt;br /&gt;
							else {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRefContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdRefButton&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdRefButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdRefButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRefContainer--&amp;gt;&#039;;&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
						insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdRef&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdHtmlTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHtmlTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRef--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;references&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdReferences&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wikEdReferencesTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdReferencesTag--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdReferences--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;pre&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdPre&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdPre--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;math&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdMath&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdMath--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;score&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdScore&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdScore--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;nowiki&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdNowiki&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdNowiki--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;listTag&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdListTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdListTag--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;preformTag&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdSpaceTag&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdSpaceTag--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;refName&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdRefName&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdRefName--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;list&#039;:&lt;br /&gt;
						pushLeft = &#039;&amp;lt;span class=&amp;quot;wikEdList&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdList--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;preform&#039;:&lt;br /&gt;
						pushLeft = &#039;&amp;lt;span class=&amp;quot;wikEdSpace&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdSpace--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;colorLight&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsLight&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsLight--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;colorDark&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsDark&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsDark--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;colorHex3&#039;:&lt;br /&gt;
						var regExpMatch = /([0-9a-f])([0-9a-f])([0-9a-f])/i.exec(tagMatch);&lt;br /&gt;
						if ( (regExpMatch[1] &amp;gt; 255) || (regExpMatch[2] &amp;gt; 255) || (regExpMatch[3] &amp;gt; 255) ) {&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
						var luminance = parseInt(regExpMatch[1], 16) * 16 * 0.299 + parseInt(regExpMatch[2], 16) * 16 * 0.587 + parseInt(regExpMatch[3], 16) * 16  * 0.114;&lt;br /&gt;
						if (luminance &amp;gt; 128) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsLight&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsLight--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsDark&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsDark--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;colorHex6&#039;:&lt;br /&gt;
						var regExpMatch = /([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i.exec(tagMatch);&lt;br /&gt;
						if ( (regExpMatch[1] &amp;gt; 255) || (regExpMatch[2] &amp;gt; 255) || (regExpMatch[3] &amp;gt; 255) ) {&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
						var luminance = parseInt(regExpMatch[1], 16) * 0.299 + parseInt(regExpMatch[2], 16) * 0.587 + parseInt(regExpMatch[3], 16) * 0.114;&lt;br /&gt;
						if (luminance &amp;gt; 128) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsLight&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsLight--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsDark&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsDark--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;colorDec&#039;:&lt;br /&gt;
						var regExpMatch = /(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i.exec(tagMatch);&lt;br /&gt;
						if ( (regExpMatch[1] &amp;gt; 255) || (regExpMatch[2] &amp;gt; 255) || (regExpMatch[3] &amp;gt; 255) ) {&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
						var luminance = regExpMatch[1] * 0.299 + regExpMatch[2] * 0.587 + regExpMatch[3] * 0.114;&lt;br /&gt;
						if (luminance &amp;gt; 128) {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsLight&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsLight--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						else {&lt;br /&gt;
							insertLeft = &#039;&amp;lt;span style=&amp;quot;background: &#039; + tagMatch + &#039;&amp;quot; class=&amp;quot;wikEdColorsDark&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdColorsDark--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;ctrl&#039;:&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdCtrl&amp;quot; title=&amp;quot;&#039; + wikEd.controlCharHighlighting[tagMatch.charCodeAt(0).toString()] + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdCtrl--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;char&#039;:&lt;br /&gt;
						var charName = wikEd.charHighlighting[tagMatch.charCodeAt(0).toString()];&lt;br /&gt;
						var charClass = &#039;wikEd&#039; + charName;&lt;br /&gt;
						insertLeft = &#039;&amp;lt;span class=&amp;quot;&#039; + charClass + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text[charName] + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
						insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--&#039; + charClass + &#039;--&amp;gt;&#039;;&lt;br /&gt;
						break;&lt;br /&gt;
					case &#039;charEntity&#039;:&lt;br /&gt;
						var regExpMatch = /&amp;amp;(\w+);/i.exec(tagMatch);&lt;br /&gt;
						var character = wikEd.charEntitiesByName[ regExpMatch[1] ];&lt;br /&gt;
						if (character !== undefined) {&lt;br /&gt;
							if (wikEd.refHide === true) {&lt;br /&gt;
								insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdCharEntityContainer&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;wikEdCharEntityButton&#039; + wikEd.charEntityArray.length + &#039;&amp;quot; title=&amp;quot;&#039; + wikEd.config.text.wikEdCharEntityButtonTooltip + &#039;&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;!--wikEdCharEntityButton--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdCharEntityContainer--&amp;gt;&#039;;&lt;br /&gt;
								wikEd.charEntityArray.push( {&#039;text&#039;: character, &#039;added&#039;: false} );&lt;br /&gt;
							}&lt;br /&gt;
							insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdCharEntity&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
							insertRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdCharEntity--&amp;gt;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
&lt;br /&gt;
			// tag type: various&lt;br /&gt;
			case &#039;comment&#039;:&lt;br /&gt;
				insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdComment&amp;quot;&amp;gt;&#039; + node.left + &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdComment--&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;keep&#039;:&lt;br /&gt;
				insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdKeep&amp;quot;&amp;gt;&#039; + node.left + &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdKeep--&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;error&#039;:&lt;br /&gt;
				insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdError&amp;quot; title=&amp;quot;&#039; + node.left + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
				if (wikEd.config.highlightError === true) {&lt;br /&gt;
					insertLeft += &#039;&amp;lt;span class=&amp;quot;wikEdHighlightError&amp;quot;&amp;gt;&#039; + node.left + &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdHighlightError--&amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				pushRight = &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdError--&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;note&#039;: // for debugging&lt;br /&gt;
				insertLeft = &#039;&amp;lt;span class=&amp;quot;wikEdParsingNote&amp;quot;&amp;gt;&#039; + node.tagLength + &#039;&amp;lt;/span&amp;gt;&amp;lt;!--wikEdParsingNote--&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case &#039;root&#039;:&lt;br /&gt;
				break;&lt;br /&gt;
			case undefined:&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add left html into existing entry&lt;br /&gt;
		if (insertLeft !== &#039;&#039;) {&lt;br /&gt;
			node.left = insertLeft;&lt;br /&gt;
			node.index = i;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add left html as new array element to allow for overlapping highlighting as in hr&lt;br /&gt;
		else if (pushLeft !== &#039;&#039;) {&lt;br /&gt;
			parseObj.tree.push( { &#039;start&#039;: tagFrom, &#039;tagLength&#039;: 0, &#039;left&#039;: pushLeft, &#039;index&#039;: i - 0.5 } );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add right html into existing entry&lt;br /&gt;
		if (insertRight !== &#039;&#039;) {&lt;br /&gt;
			node.right = insertRight;&lt;br /&gt;
			node.index = i;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add right html as new array element to allow for overlapping highlighting as in html-like tags and urls&lt;br /&gt;
		else if (pushRight !== &#039;&#039;) {&lt;br /&gt;
			parseObj.tree.push( { &#039;start&#039;: tagTo, &#039;tagLength&#039;: 0, &#039;right&#039;: pushRight, &#039;index&#039;: i + 0.5 } );&lt;br /&gt;
		}&lt;br /&gt;
		if (pushRight2 !== &#039;&#039;) {&lt;br /&gt;
			parseObj.tree.push( { &#039;start&#039;: pushRightPos2, &#039;tagLength&#039;: 0, &#039;right&#039;: pushRight2, &#039;index&#039;: i + 0.5 } );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		from = tagTo;&lt;br /&gt;
		i ++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightMergeHtml: merge parse tree highlighting html code with article text&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightMergeHtml = function (parseObj, obj) {&lt;br /&gt;
&lt;br /&gt;
	if (parseObj.tree.length &amp;lt;= 1) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// sort parse array by position, length, and index&lt;br /&gt;
	parseObj.tree.sort(&lt;br /&gt;
		function(a, b) {&lt;br /&gt;
&lt;br /&gt;
			// by start position&lt;br /&gt;
			if (a.start != b.start) {&lt;br /&gt;
				return a.start - b.start;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// by length&lt;br /&gt;
			if (a.tagLength != b.tagLength) {&lt;br /&gt;
				return a.tagLength - b.tagLength;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// by index&lt;br /&gt;
			return a.index - b.index;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// add comments and highlighting&lt;br /&gt;
	var from = 0;&lt;br /&gt;
	var htmlArray = [];&lt;br /&gt;
&lt;br /&gt;
	// cycle through parse array and assemble html array&lt;br /&gt;
	for (var i = 0; i &amp;lt; parseObj.tree.length; i ++) {&lt;br /&gt;
		var node = parseObj.tree[i];&lt;br /&gt;
		var tagFrom = node.start;&lt;br /&gt;
		var tagLength = node.tagLength;&lt;br /&gt;
		var htmlLeft = node.left;&lt;br /&gt;
		var htmlRight = node.right;&lt;br /&gt;
		var tagTo = tagFrom + tagLength;&lt;br /&gt;
&lt;br /&gt;
		// drop overlapping highlighting //// |- in tables?!&lt;br /&gt;
		if (tagFrom &amp;lt; from) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// ignore root&lt;br /&gt;
		if (tagFrom === undefined) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// push leading plain text&lt;br /&gt;
		htmlArray.push(obj.html.substring(from, tagFrom));&lt;br /&gt;
&lt;br /&gt;
		// push left html&lt;br /&gt;
		if (htmlLeft !== undefined) {&lt;br /&gt;
			htmlArray.push(htmlLeft);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// push right html&lt;br /&gt;
		if (htmlRight !== undefined) {&lt;br /&gt;
			htmlArray.push(obj.html.substring(tagFrom, tagTo));&lt;br /&gt;
			htmlArray.push(htmlRight);&lt;br /&gt;
			from = tagTo;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			from = tagFrom;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	htmlArray.push(obj.html.substring(from));&lt;br /&gt;
&lt;br /&gt;
	// join html array&lt;br /&gt;
	obj.html = htmlArray.join(&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// display highlighted html:&lt;br /&gt;
	// WED(obj.html.replace(/\x00/g, &#039;&amp;amp;lt;&#039;).replace(/\x01/g, &#039;&amp;amp;gt;&#039;));&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HighlightLinkify: prepare the span tag parameters for ctrl-click opening of highlighted links, addding redirect info, and highlighting redlinks&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HighlightLinkify = function (linkPrefix, linkTitle, linkUrl) {&lt;br /&gt;
&lt;br /&gt;
	var linkName = &#039;&#039;;&lt;br /&gt;
	var subpage = false;&lt;br /&gt;
	var link = &#039;&#039;;&lt;br /&gt;
	var info = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// generate url from interlanguage or namespace prefix and title&lt;br /&gt;
	if (typeof linkUrl != &#039;string&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// test for illegal characters&lt;br /&gt;
		if (/[\{\|\}\[\]&amp;lt;&amp;gt;#]/.test(linkPrefix) === true) {&lt;br /&gt;
			return &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// clean prefix and title&lt;br /&gt;
		linkPrefix = wikEd.CleanLink(linkPrefix);&lt;br /&gt;
		linkTitle = wikEd.CleanLink(linkTitle);&lt;br /&gt;
		linkName = linkPrefix + linkTitle;&lt;br /&gt;
		link = linkName;&lt;br /&gt;
&lt;br /&gt;
		// character accentuation for Esperanto, see [[Help:Special_characters#Esperanto]]&lt;br /&gt;
		if (wikEd.wikiGlobals.wgContentLanguage == &#039;eo&#039;) {&lt;br /&gt;
			linkTitle = linkTitle.replace(/([cghjsu])(x+)/gi,&lt;br /&gt;
				function(p, p1, p2) {&lt;br /&gt;
					var accentChar = p1;&lt;br /&gt;
					var xString = p2;&lt;br /&gt;
					var xLength = xString.length;&lt;br /&gt;
					var xCount = Math.floor(xLength / 2);&lt;br /&gt;
					if ( (xLength / 2 - xCount) &amp;gt; 0) {&lt;br /&gt;
						var pos = &#039;CGHJSUcghjsu&#039;.indexOf(accentChar);&lt;br /&gt;
						accentChar = &#039;ĈĜĤĴŜŬĉĝĥĵŝŭ&#039;.substr(pos, 1);&lt;br /&gt;
						xString = xString.replace(/^x|(x)x/gi, &#039;$1&#039;);&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						xString = xString.replace(/(x)x/gi, &#039;$1&#039;);&lt;br /&gt;
					}&lt;br /&gt;
					return accentChar + xString;&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// [[/subpage]] refers to a subpage of the current page, [[#section]] to a section of the current page&lt;br /&gt;
		if ( (linkPrefix === &#039;&#039;) &amp;amp;&amp;amp; ( (linkTitle.indexOf(&#039;/&#039;)=== 0) || (linkTitle.indexOf(&#039;#&#039;)=== 0) ) ) {&lt;br /&gt;
			subpage = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Wiktionary differentiates between lower and uppercased titles, interwiki should not be uppercased&lt;br /&gt;
		if (subpage === true) {&lt;br /&gt;
			linkUrl = linkPrefix + wikEd.pageName + linkTitle;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			linkUrl = linkPrefix + linkTitle;&lt;br /&gt;
		}&lt;br /&gt;
		linkUrl = wikEd.EncodeTitle(linkUrl);&lt;br /&gt;
		if (typeof wikEd.config.linkifyArticlePath  == &#039;string&#039;) {&lt;br /&gt;
			linkUrl = wikEd.config.linkifyArticlePath.replace(/\$1/, linkUrl);&lt;br /&gt;
		}&lt;br /&gt;
		else if (typeof wikEd.wikiGlobals.wgArticlePath == &#039;string&#039;) {&lt;br /&gt;
			linkUrl = wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, linkUrl);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			linkUrl = &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// detect redirect and redlink info&lt;br /&gt;
		if ( (Object.prototype.hasOwnProperty.call(wikEd.linkInfo, link) === true) &amp;amp;&amp;amp; (wikEd.linkInfo[link].updated === true) ) {&lt;br /&gt;
&lt;br /&gt;
			// redirect&lt;br /&gt;
			if (wikEd.linkInfo[link].redirect === true) {&lt;br /&gt;
				var target = wikEd.linkInfo[link].target;&lt;br /&gt;
				if ( (target !== undefined) &amp;amp;&amp;amp; (target !== null) ) {&lt;br /&gt;
					info += wikEd.config.text.redirect + &#039; &#039; + target;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// redlinks&lt;br /&gt;
			if (wikEd.linkInfo[link].missing === true) {&lt;br /&gt;
				info += wikEd.config.text.redlink;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// collect new links&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.linkInfo[link] = {&lt;br /&gt;
				update: true,&lt;br /&gt;
				updated: false,&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// url provided&lt;br /&gt;
	else {&lt;br /&gt;
&lt;br /&gt;
		// test for illegal characters&lt;br /&gt;
		if (/[&amp;lt;&amp;gt;]/.test(linkUrl) === true) {&lt;br /&gt;
			return &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// test for templates&lt;br /&gt;
		if (/\{|\}/.test(linkUrl) === true) {&lt;br /&gt;
			return &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		linkName = wikEd.EncodeTitle(linkUrl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var linkPopup = linkName;&lt;br /&gt;
	if (subpage === true) {&lt;br /&gt;
		linkPopup = wikEd.pageName + linkPopup;&lt;br /&gt;
	}&lt;br /&gt;
	linkPopup = linkPopup.replace(/\t/g, &#039;  &#039;);&lt;br /&gt;
	linkPopup = wikEd.EscapeHtml(linkPopup);&lt;br /&gt;
	linkPopup = linkPopup.replace(/&amp;quot;/g, &#039;&amp;amp;quot;&#039;);&lt;br /&gt;
	var linkParam = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	if (linkUrl !== &#039;&#039;) {&lt;br /&gt;
		var titleClick;&lt;br /&gt;
		if (wikEd.platform == &#039;mac&#039;) {&lt;br /&gt;
			titleClick = wikEd.config.text.followLinkMac;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			titleClick = wikEd.config.text.followLink;&lt;br /&gt;
		}&lt;br /&gt;
		var id = &#039;wikEdWikiLink&#039; + Object.getOwnPropertyNames(wikEd.wikiLinks).length;&lt;br /&gt;
		var linkify = linkPopup + &#039; &#039; + titleClick;&lt;br /&gt;
		linkParam += &#039;id=&amp;quot;&#039; + id + &#039;&amp;quot; title=&amp;quot;&#039; + linkify + info + &#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// save link infos for linkification and redlinking&lt;br /&gt;
		wikEd.wikiLinks[id] = { url: linkUrl, link: link, linkify: linkify, info: info };&lt;br /&gt;
	}&lt;br /&gt;
	return linkParam;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.CleanLink: clean and normalize article title&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.CleanLink = function (link) {&lt;br /&gt;
&lt;br /&gt;
	// remove highlighting code&lt;br /&gt;
	link = link.replace(/&amp;lt;[^&amp;gt;]*&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove control chars&lt;br /&gt;
	var regExp = new RegExp(&#039;[&#039; + wikEd.controlCharHighlightingStr + &#039;\t\n\r]&#039;, &#039;g&#039;);&lt;br /&gt;
	link = link.replace(regExp, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// fix strange white spaces, leading colons&lt;br /&gt;
	link = link.replace(/\s/g, &#039; &#039;);&lt;br /&gt;
	link = link.replace(/^ +/, &#039;&#039;);&lt;br /&gt;
	link = link.replace(/^:+ *()/, &#039;&#039;);&lt;br /&gt;
	link = link.replace(/ +/g, &#039;_&#039;);&lt;br /&gt;
&lt;br /&gt;
	// quotes and ampersand&lt;br /&gt;
	link = link.replace(/&amp;amp;amp;quot;/g, &#039;&amp;quot;&#039;);&lt;br /&gt;
	link = link.replace(/&amp;amp;amp;apos;/g, &#039;\&#039;&#039;);&lt;br /&gt;
	link = link.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
	return link;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.EncodeTitle: encode article title for use in url (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.EncodeTitle = function (title) {&lt;br /&gt;
&lt;br /&gt;
	if (title === undefined) {&lt;br /&gt;
		title = wikEd.wikiGlobals.wgTitle;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// characters not supported&lt;br /&gt;
	title = title.replace(/[&amp;lt;&amp;gt;\[\]|{}]/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	title = title.replace(/ /g, &#039;_&#039;);&lt;br /&gt;
	title = encodeURI(title);&lt;br /&gt;
	title = title.replace(/%25(\d\d)/g, &#039;%$1&#039;);&lt;br /&gt;
	title = title.replace(/&amp;amp;/g, &#039;%26&#039;);&lt;br /&gt;
	title = title.replace(/#/g, &#039;%23&#039;);&lt;br /&gt;
	title = title.replace(/&#039;/g, &#039;%27&#039;);&lt;br /&gt;
	title = title.replace(/\?/g, &#039;%3F&#039;);&lt;br /&gt;
	title = title.replace(/\+/g, &#039;%2B&#039;);&lt;br /&gt;
	return title;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.EscapeHtml: escape html code, &amp;amp;&amp;lt;&amp;gt; to character entities&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.EscapeHtml = function (html) {&lt;br /&gt;
&lt;br /&gt;
	html = html.replace(/&amp;amp;/g, &#039;&amp;amp;amp;&#039;);&lt;br /&gt;
	html = html.replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;);&lt;br /&gt;
	html = html.replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;);&lt;br /&gt;
	return html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.UpdateTextarea: copy frame content or provided text to textarea&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.UpdateTextarea = function (text) {&lt;br /&gt;
&lt;br /&gt;
	var obj = {};&lt;br /&gt;
	if (text !== undefined) {&lt;br /&gt;
		obj.html = text;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get frame content, remove dynamically inserted nodes by other scripts&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.CleanNodes(wikEd.frameDocument);&lt;br /&gt;
		obj.html = wikEd.frameBody.innerHTML;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove trailing blanks and newlines at end of text&lt;br /&gt;
	obj.html = obj.html.replace(/((&amp;lt;br\b[^&amp;gt;]*&amp;gt;)|\s)+$/g, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// remove leading spaces in lines&lt;br /&gt;
	obj.html = obj.html.replace(/(&amp;lt;br\b[^&amp;gt;]*&amp;gt;)[\n\r]* *()/g, &#039;$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// textify so that no html formatting is submitted&lt;br /&gt;
	wikEd.Textify(obj);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;nbsp;|&amp;amp;#160;|\xa0/g, &#039; &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// convert all &amp;amp;nbsp; char entitities to actual characters (customization option only)&lt;br /&gt;
	if (wikEd.config.nbspToChar === true) {&lt;br /&gt;
		obj.plain = obj.plain.replace(/&amp;amp;nbsp;/g, &#039;\xa0&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// copy to textarea&lt;br /&gt;
	wikEd.textarea.value = obj.plain;&lt;br /&gt;
&lt;br /&gt;
	// remember frame scroll position&lt;br /&gt;
	wikEd.frameScrollTop = wikEd.frameBody.scrollTop;&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.UpdateFrame: copy textarea content or provided html to frame&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.UpdateFrame = function (html) {&lt;br /&gt;
&lt;br /&gt;
	// get textarea content&lt;br /&gt;
	var obj = {};&lt;br /&gt;
	if (html !== undefined) {&lt;br /&gt;
		obj.html = html;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		obj.html = wikEd.textarea.value;&lt;br /&gt;
		obj.html = wikEd.EscapeHtml(obj.html);&lt;br /&gt;
&lt;br /&gt;
		// convert \xa (nbsp) to character entities so they do not get converted to blanks&lt;br /&gt;
		obj.html = obj.html.replace(/\xa0/g, &#039;&amp;amp;amp;nbsp;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// highlight the syntax&lt;br /&gt;
	if (wikEd.highlightSyntax === true) {&lt;br /&gt;
		obj.whole = true;&lt;br /&gt;
		wikEd.HighlightSyntax(obj);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// at least display tabs&lt;br /&gt;
	else {&lt;br /&gt;
		obj.html = obj.html.replace(/(\t)/g, &#039;&amp;lt;span class=&amp;quot;wikEdTabPlain&amp;quot;&amp;gt;$1&amp;lt;/span&amp;gt;&amp;lt;!--wikEdTabPlain--&amp;gt;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// multiple blanks to blank-&amp;amp;nbsp;&lt;br /&gt;
	obj.html = obj.html.replace(/(^|\n) /g, &#039;$1&amp;amp;nbsp;&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/ (\n|$)/g, &#039;&amp;amp;nbsp;$1&#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/ {2}/g, &#039;&amp;amp;nbsp; &#039;);&lt;br /&gt;
	obj.html = obj.html.replace(/ {2}/g, &#039;&amp;amp;nbsp; &#039;);&lt;br /&gt;
&lt;br /&gt;
	// newlines to &amp;lt;br&amp;gt;&lt;br /&gt;
	obj.html = obj.html.replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// insert content into empty frame&lt;br /&gt;
	if ( (wikEd.readOnly === true) || (wikEd.frameBody.firstChild === null) || (/^&amp;lt;br[^&amp;gt;]*&amp;gt;\s*$/.test(wikEd.frameBody.innerHTML) === true) ) {&lt;br /&gt;
		wikEd.frameBody.innerHTML = obj.html;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// insert content into frame, preserve history&lt;br /&gt;
	else {&lt;br /&gt;
		obj.sel = wikEd.GetSelection();&lt;br /&gt;
		obj.sel.removeAllRanges();&lt;br /&gt;
		var range = wikEd.frameDocument.createRange();&lt;br /&gt;
		range.setStartBefore(wikEd.frameBody.firstChild);&lt;br /&gt;
		range.setEndAfter(wikEd.frameBody.lastChild);&lt;br /&gt;
		obj.sel.addRange(range);&lt;br /&gt;
&lt;br /&gt;
		// replace the frame content with the new text, do not scroll&lt;br /&gt;
		var scrollOffset = window.pageYOffset || document.body.scrollTop;&lt;br /&gt;
		if (obj.html !== &#039;&#039;) {&lt;br /&gt;
			wikEd.frameDocument.execCommand(&#039;inserthtml&#039;, false, obj.html);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.frameDocument.execCommand(&#039;delete&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		window.scroll(0, scrollOffset);&lt;br /&gt;
		obj.sel.removeAllRanges();&lt;br /&gt;
&lt;br /&gt;
		// scroll to previous position&lt;br /&gt;
		if (wikEd.frameScrollTop !== null) {&lt;br /&gt;
			wikEd.frameBody.scrollTop = wikEd.frameScrollTop;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.frameScrollTop = null;&lt;br /&gt;
&lt;br /&gt;
	// add event handlers and labels&lt;br /&gt;
	if (wikEd.highlightSyntax === true) {&lt;br /&gt;
&lt;br /&gt;
		// name ref and template buttons&lt;br /&gt;
		wikEd.HighlightNamedHideButtons();&lt;br /&gt;
&lt;br /&gt;
		// add event handlers to unhide refs and templates&lt;br /&gt;
		wikEd.HideAddHandlers();&lt;br /&gt;
&lt;br /&gt;
		// add event handlers to make highlighted frame links ctrl-clickable&lt;br /&gt;
		wikEd.LinkifyLinks();&lt;br /&gt;
&lt;br /&gt;
		// get link infos from server (redirects, redlinks)&lt;br /&gt;
		wikEd.LinkInfoCall();&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.HtmlToPlain: convert html to plain text, called from wikEd.GetText&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.HtmlToPlain = function (obj) {&lt;br /&gt;
&lt;br /&gt;
	obj.plain = obj.html.replace(/[\n ]{2,}/g, &#039; &#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/&amp;lt;br\b[^&amp;gt;]*&amp;gt;/g, &#039;\n&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.KeyHandler: event handler for keydown events in main document and frame&lt;br /&gt;
//   detects emulated accesskey and traps enter in find/replace input elements&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.KeyHandler = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// trap enter in find/replace input elements&lt;br /&gt;
	if ( (event.type == &#039;keydown&#039;) &amp;amp;&amp;amp; (event.keyCode == 13) ) {&lt;br /&gt;
		if (event.target.id == &#039;wikEdFindText&#039;) {&lt;br /&gt;
			event.preventDefault();&lt;br /&gt;
			event.stopPropagation();&lt;br /&gt;
			if (event.shiftKey === true) {&lt;br /&gt;
				wikEd.EditButton(null, &#039;wikEdFindPrev&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else if (event.ctrlKey === true) {&lt;br /&gt;
				wikEd.EditButton(null, &#039;wikEdFindAll&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.EditButton(null, &#039;wikEdFindNext&#039;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if (event.target.id == &#039;wikEdReplaceText&#039;) {&lt;br /&gt;
			event.preventDefault();&lt;br /&gt;
			event.stopPropagation();&lt;br /&gt;
			if (event.shiftKey === true) {&lt;br /&gt;
				wikEd.EditButton(null, &#039;wikEdReplacePrev&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else if (event.ctrlKey === true) {&lt;br /&gt;
				wikEd.EditButton(null, &#039;wikEdReplaceAll&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				wikEd.EditButton(null, &#039;wikEdReplaceNext&#039;);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// detect emulated accesskeys&lt;br /&gt;
	else if ( (event.shiftKey === true) &amp;amp;&amp;amp; (event.ctrlKey === false) &amp;amp;&amp;amp; (event.altKey === true) &amp;amp;&amp;amp; (event.metaKey === false) ) {&lt;br /&gt;
&lt;br /&gt;
		// get wikEd button id from keycode&lt;br /&gt;
		var buttonId = wikEd.buttonKeyCode[event.keyCode];&lt;br /&gt;
		if (buttonId !== undefined) {&lt;br /&gt;
			event.preventDefault();&lt;br /&gt;
			event.stopPropagation();&lt;br /&gt;
&lt;br /&gt;
			// execute the button click handler code, obj required for eval&lt;br /&gt;
			var obj = document.getElementById(buttonId);&lt;br /&gt;
			eval(wikEd.editButtonHandler[buttonId]);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FindAhead: find-as-you-type, event handler for find field, supports insensitive and regexp settings&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FindAhead = function () {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.findAhead.getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// get the find text&lt;br /&gt;
		var findText = wikEd.findText.value;&lt;br /&gt;
		if (findText === &#039;&#039;) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// remember input field selection&lt;br /&gt;
		var findTextSelectionStart = wikEd.findText.selectionStart;&lt;br /&gt;
		var findTextSelectionEnd = wikEd.findText.selectionEnd;&lt;br /&gt;
&lt;br /&gt;
		// remember frame selection&lt;br /&gt;
		var sel = wikEd.GetSelection();&lt;br /&gt;
		var range = sel.getRangeAt(0).cloneRange();&lt;br /&gt;
		var rangeClone = range.cloneRange();&lt;br /&gt;
		var scrollTop = wikEd.frameBody.scrollTop;&lt;br /&gt;
&lt;br /&gt;
		// collapse selection to the left&lt;br /&gt;
		sel.removeAllRanges();&lt;br /&gt;
		range.collapse(true);&lt;br /&gt;
		range = sel.addRange(range);&lt;br /&gt;
&lt;br /&gt;
		// create obj for regexp search&lt;br /&gt;
		var obj = {};&lt;br /&gt;
&lt;br /&gt;
		// get insensitive and regexp button states&lt;br /&gt;
		var regExpChecked = wikEd.regExp.getAttribute(&#039;checked&#039;);&lt;br /&gt;
		var caseSensitiveChecked = wikEd.caseSensitive.getAttribute(&#039;checked&#039;);&lt;br /&gt;
&lt;br /&gt;
		// get case sensitive setting&lt;br /&gt;
		var caseSensitive = false;&lt;br /&gt;
		if (caseSensitiveChecked == &#039;true&#039;) {&lt;br /&gt;
			caseSensitive = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get regexp setting&lt;br /&gt;
		var useRegExp = false;&lt;br /&gt;
		if (regExpChecked == &#039;true&#039;) {&lt;br /&gt;
			useRegExp = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// parameters: obj, findText, caseSensitive, backwards, wrap, useRegExp&lt;br /&gt;
		var found = wikEd.Find(obj, findText, caseSensitive, false, true, useRegExp);&lt;br /&gt;
&lt;br /&gt;
		// restore original frame selection&lt;br /&gt;
		if (found === false) {&lt;br /&gt;
			wikEd.frameBody.scrollTop = scrollTop;&lt;br /&gt;
			sel.removeAllRanges();&lt;br /&gt;
			sel.addRange(rangeClone);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			obj.sel.removeAllRanges();&lt;br /&gt;
			obj.sel.addRange(obj.changed.range);&lt;br /&gt;
&lt;br /&gt;
			// scroll to selection&lt;br /&gt;
			wikEd.ScrollToSelection();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// restore input field selection (needed for FF 3.6)&lt;br /&gt;
		wikEd.findText.select();&lt;br /&gt;
		wikEd.findText.setSelectionRange(findTextSelectionStart, findTextSelectionEnd);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DebugInfo: click handler for ctrl-click of logo buttons, pastes debug info into edit field or popup; shift-ctrl-click: extended info with resource loader modules&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DebugInfo = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// ctrl-click&lt;br /&gt;
	if (event.ctrlKey !== true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get debug infos&lt;br /&gt;
	var debug = wikEd.GetDebugInfo(event.shiftKey);&lt;br /&gt;
	debug = debug.replace(/(^|\n(?=.))/g, &#039;$1* &#039;);&lt;br /&gt;
	debug = &#039;=== wikEd bug report: ____ (Please add short title) === \n\n&#039; + debug;&lt;br /&gt;
	debug += &#039;* Error console: ____ (Firefox: Tools → Web Developer → Browser console; push clear and reload the page. Chrome: Control button → Tools → JavaScript console. Copy and paste error messages related to wikEd.js)\n&#039;;&lt;br /&gt;
	debug += &#039;* Problem description: ____ (Please be as specific as possible about what is wrong, including when it happens, what happens, what is broken, and what still works)\n&#039;;&lt;br /&gt;
	debug += &#039;* Steps to reproduce: ____ (Please include what happens at each step. Your problems cannot be fixed without reproducing them first!)\n&#039;;&lt;br /&gt;
&lt;br /&gt;
	// print to iframe, textarea, debug area, or alert&lt;br /&gt;
	if (event.target == wikEd.logo) {&lt;br /&gt;
		window.alert(debug);&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.useWikEd === true) {&lt;br /&gt;
		debug = wikEd.EscapeHtml(&#039;\n&#039; + debug).replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
		wikEd.frameDocument.execCommand(&#039;inserthtml&#039;, false, debug);&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.textarea !== null) {&lt;br /&gt;
		wikEd.textarea.value += &#039;\n&#039; + debug;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.Debug(debug, undefined, true);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetDebugInfo: compiles debug info into string&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetDebugInfo = function (extended) {&lt;br /&gt;
&lt;br /&gt;
	var loader = &#039;&#039;;&lt;br /&gt;
	var mediawiki = &#039;&#039;;&lt;br /&gt;
	var gadgets = &#039;&#039;;&lt;br /&gt;
	var scripts = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// cycle through script urls&lt;br /&gt;
	var pageScripts = document.getElementsByTagName(&#039;script&#039;);&lt;br /&gt;
	for (var i = 0; i &amp;lt; pageScripts.length; i ++) {&lt;br /&gt;
		var src = pageScripts[i].src;&lt;br /&gt;
		if (src !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// resource loader modules&lt;br /&gt;
			var regExpMatch = /load.php\?(|.*?&amp;amp;)modules=(.*?)(&amp;amp;|$)/.exec(src);&lt;br /&gt;
			if (regExpMatch !== null) {&lt;br /&gt;
				loader += decodeURIComponent(regExpMatch[2]).replace(/\|/g, &#039;; &#039;) + &#039;; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// mediawiki: scripts&lt;br /&gt;
			else {&lt;br /&gt;
				var regExpMatch = /index.php\?(|.*?&amp;amp;)title=(.*?)(&amp;amp;|$)/.exec(src);&lt;br /&gt;
				if (regExpMatch !== null) {&lt;br /&gt;
					var script = regExpMatch[2];&lt;br /&gt;
					if (/^MediaWiki:Gadget/.test(script) === true) {&lt;br /&gt;
						gadgets += script.replace(/^MediaWiki:/, &#039;&#039;) + &#039;, &#039;;&lt;br /&gt;
					}&lt;br /&gt;
					else if (/^MediaWiki:/.test(script) === true) {&lt;br /&gt;
						mediawiki += script.replace(/^MediaWiki:/, &#039;&#039;) + &#039;, &#039;;&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						scripts += script + &#039;, &#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
			// other scripts&lt;br /&gt;
				else {&lt;br /&gt;
					var regExpScript = new RegExp(wikEd.wikiGlobals.wgServer + &#039;(&#039; + wikEd.wikiGlobals.wgScriptPath + &#039;)?&#039;);&lt;br /&gt;
					scripts += src.replace(regExpScript, &#039;&#039;).replace(/\?.*/, &#039;&#039;) + &#039;, &#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get date&lt;br /&gt;
	var date = new Date();&lt;br /&gt;
	var time = (date.getUTCFullYear() + &#039;-&#039; + (date.getUTCMonth() + 1) + &#039;-&#039; + date.getUTCDate() + &#039; &#039; + date.getUTCHours() + &#039;:&#039; + date.getUTCMinutes() + &#039;:&#039; + date.getUTCSeconds() + &#039; UTC&#039;).replace(/\b(\d)\b/g, &#039;0$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	// get user subpages&lt;br /&gt;
	var protocol = document.location.href.replace(/\/\/.*/, &#039;&#039;);&lt;br /&gt;
	var subPages = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, &#039;Special:PrefixIndex/&#039; + wikEd.wikiGlobals.wgFormattedNamespaces[2] + &#039;:&#039; + wikEd.EncodeTitle(wikEd.wikiGlobals.wgUserName) + &#039;/&#039;);&lt;br /&gt;
	if (/^\/\//.test(subPages) === true) {&lt;br /&gt;
		subPages = protocol + subPages;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// get user js pages&lt;br /&gt;
	var userPage = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, wikEd.wikiGlobals.wgFormattedNamespaces[2] + &#039;:&#039; + wikEd.EncodeTitle(wikEd.wikiGlobals.wgUserName));&lt;br /&gt;
	if (/^\/\//.test(userPage) === true) {&lt;br /&gt;
		userPage = protocol + userPage;&lt;br /&gt;
	}&lt;br /&gt;
	var skinJs = userPage + &#039;/&#039; + wikEd.wikiGlobals.skin + &#039;.js&#039;;&lt;br /&gt;
	var commonJs = userPage + &#039;/common.js&#039;;&lt;br /&gt;
&lt;br /&gt;
	// remove trailing separators&lt;br /&gt;
	loader = loader.replace(/; $/, &#039;&#039;);&lt;br /&gt;
	mediawiki = mediawiki.replace(/, $/, &#039;&#039;);&lt;br /&gt;
	gadgets = gadgets.replace(/, $/, &#039;&#039;);&lt;br /&gt;
	scripts = scripts.replace(/, $/, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	var debug = &#039;&#039;;&lt;br /&gt;
	debug += &#039;Date: &#039; + time + &#039;\n&#039;;&lt;br /&gt;
	debug += &#039;wikEd version: &#039; + wikEd.programVersion + wikEd.installationType + &#039; (&#039; + wikEd.programDate  + &#039;)\n&#039;;&lt;br /&gt;
	debug += &#039;Browser: &#039; + window.navigator.userAgent + &#039; (&#039; + window.navigator.platform + &#039;)\n&#039;;&lt;br /&gt;
	debug += &#039;Skin: &#039; + wikEd.wikiGlobals.skin + &#039; (detected: &#039; + wikEd.skin + &#039;)\n&#039;;&lt;br /&gt;
	debug += &#039;MediaWiki: &#039; + wikEd.wikiGlobals.wgVersion + &#039;\n&#039;;&lt;br /&gt;
	debug += &#039;Gadgets: &#039; + gadgets + &#039;\n&#039;;&lt;br /&gt;
	debug += &#039;MediaWiki scripts: &#039; + mediawiki + &#039;\n&#039;;&lt;br /&gt;
	debug += &#039;Scripts: &#039; + scripts + &#039;\n&#039;;&lt;br /&gt;
	if (extended === true) {&lt;br /&gt;
		debug += &#039;Loader: &#039; + loader + &#039;\n&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	debug += &#039;URL: &#039; + window.location.href + &#039;\n&#039;;&lt;br /&gt;
	debug += &#039;User subpages: &#039; + subPages + &#039;\n&#039;;&lt;br /&gt;
	debug += &#039;User/skin.js: &#039; + skinJs + &#039;\n&#039;;&lt;br /&gt;
	debug += &#039;User/common.js: &#039; + commonJs + &#039;\n&#039;;&lt;br /&gt;
&lt;br /&gt;
	return debug;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.MainSwitch: click handler for program logo&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.MainSwitch = function (event) {&lt;br /&gt;
&lt;br /&gt;
	// ctrl-click for debug info&lt;br /&gt;
	if (event.ctrlKey === true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// disable function if browser is incompatible&lt;br /&gt;
	if (wikEd.browserNotSupported === true) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// enable wikEd&lt;br /&gt;
	if (wikEd.disabled === true) {&lt;br /&gt;
&lt;br /&gt;
		// check for active code editor&lt;br /&gt;
		wikEd.CodeEditorCheck();&lt;br /&gt;
&lt;br /&gt;
		// do not turn on when code editor is active&lt;br /&gt;
		if (wikEd.useCodeEditor === true) {&lt;br /&gt;
			wikEd.disabled = true;&lt;br /&gt;
			wikEd.SetLogo(&#039;incompatible&#039;, &#039;Code Editor&#039;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		wikEd.disabled = false;&lt;br /&gt;
		wikEd.SetPersistent(&#039;wikEdDisabled&#039;, &#039;0&#039;, 0, &#039;/&#039;);&lt;br /&gt;
&lt;br /&gt;
		// turn rich text frame on&lt;br /&gt;
		if (wikEd.turnedOn === false) {&lt;br /&gt;
&lt;br /&gt;
			// setup wikEd&lt;br /&gt;
			wikEd.TurnOn(false);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.SetLogo();&lt;br /&gt;
			var useWikEd = false;&lt;br /&gt;
			if (document.getElementById(&#039;wikEdUseWikEd&#039;).getAttribute(&#039;checked&#039;) == &#039;true&#039;) {&lt;br /&gt;
				useWikEd = true;&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.SetEditArea(useWikEd);&lt;br /&gt;
			wikEd.useWikEd = useWikEd;&lt;br /&gt;
			window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
			if (wikEd.useWikEd === true) {&lt;br /&gt;
				wikEd.UpdateFrame();&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.buttonBarWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
			wikEd.buttonBarPreview.style.display = &#039;block&#039;;&lt;br /&gt;
			if (wikEd.buttonBarJump !== null) {&lt;br /&gt;
				wikEd.buttonBarJump.style.display = &#039;block&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// run scheduled custom functions&lt;br /&gt;
			wikEd.ExecuteHook(wikEd.config.onHook);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// disable wikEd&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.SetPersistent(&#039;wikEdDisabled&#039;, &#039;1&#039;, 0, &#039;/&#039;);&lt;br /&gt;
		if (wikEd.turnedOn === false) {&lt;br /&gt;
			wikEd.useWikEd = false;&lt;br /&gt;
			window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
			wikEd.disabled = true;&lt;br /&gt;
			wikEd.SetLogo();&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
&lt;br /&gt;
			// interrupt fullscreen mode&lt;br /&gt;
			if (wikEd.fullscreen === true) {&lt;br /&gt;
				wikEd.FullScreen(false);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// turn classic textarea on&lt;br /&gt;
			if (wikEd.useWikEd === true) {&lt;br /&gt;
				wikEd.UpdateTextarea();&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.SetEditArea(false);&lt;br /&gt;
&lt;br /&gt;
			// reset textarea dimensions&lt;br /&gt;
			wikEd.textarea.style.height = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + &#039;px&#039;;&lt;br /&gt;
			wikEd.textarea.style.width = &#039;100%&#039;;&lt;br /&gt;
&lt;br /&gt;
			wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + &#039;px&#039;;&lt;br /&gt;
			wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + &#039;px&#039;;&lt;br /&gt;
			wikEd.frame.style.height = wikEd.frameHeight;&lt;br /&gt;
			wikEd.frame.style.width = wikEd.frameWidth;&lt;br /&gt;
&lt;br /&gt;
			wikEd.buttonBarWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
			wikEd.buttonBarPreview.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
			wikEd.previewArticle.style.display = &#039;none&#039;;&lt;br /&gt;
			wikEd.previewDiff.style.display = &#039;none&#039;;&lt;br /&gt;
			wikEd.localPrevWrapper.style.display = &#039;none&#039;;&lt;br /&gt;
			wikEd.localPrevWrapper.style.height = &#039;auto&#039;;&lt;br /&gt;
&lt;br /&gt;
			if (wikEd.buttonBarJump !== null) {&lt;br /&gt;
				wikEd.buttonBarJump.style.display = &#039;none&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			wikEd.useWikEd = false;&lt;br /&gt;
			window.wikEdUseWikEd = wikEd.useWikEd;&lt;br /&gt;
			wikEd.disabled = true;&lt;br /&gt;
			wikEd.SetLogo();&lt;br /&gt;
&lt;br /&gt;
			// run scheduled custom functions&lt;br /&gt;
			wikEd.ExecuteHook(wikEd.config.offHook);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.FullScreen: change to fullscreen edit area or back to normal view&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.FullScreen = function (fullscreen, updateButton) {&lt;br /&gt;
&lt;br /&gt;
	// resize only&lt;br /&gt;
	if (fullscreen === undefined) {&lt;br /&gt;
		fullscreen = wikEd.fullscreen;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// no fullscreen for special edit pages&lt;br /&gt;
	if (wikEd.editArticle === false) {&lt;br /&gt;
		fullscreen = false;&lt;br /&gt;
		updateButton = false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// no fullscreen for textarea view&lt;br /&gt;
	if (wikEd.useWikEd === false) {&lt;br /&gt;
		fullscreen = false;&lt;br /&gt;
		updateButton = false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// skip for repeat calls&lt;br /&gt;
	if (fullscreen != wikEd.fullscreen) {&lt;br /&gt;
&lt;br /&gt;
		// disable frame resizing&lt;br /&gt;
		if ( (wikEd.fullscreen === false) &amp;amp;&amp;amp; (wikEd.frameDocument !== null) ) {&lt;br /&gt;
			wikEd.ResizeStopHandler();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// setup fullscreen&lt;br /&gt;
		if (fullscreen === true) {&lt;br /&gt;
			document.body.classList.add(&#039;wikEdFullscreen&#039;);&lt;br /&gt;
&lt;br /&gt;
			// inactivate scroll-to buttons&lt;br /&gt;
			document.getElementById(&#039;wikEdScrollToPreview&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
			document.getElementById(&#039;wikEdScrollToEdit&#039;).className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// back to normal&lt;br /&gt;
		else {&lt;br /&gt;
			document.body.classList.remove(&#039;wikEdFullscreen&#039;);&lt;br /&gt;
&lt;br /&gt;
			// activate scroll-to buttons&lt;br /&gt;
			document.getElementById(&#039;wikEdScrollToPreview&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
			document.getElementById(&#039;wikEdScrollToEdit&#039;).className = &#039;wikEdButton&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	var switched = (fullscreen != wikEd.fullscreen);&lt;br /&gt;
	if (switched === true) {&lt;br /&gt;
		wikEd.fullscreen = fullscreen;&lt;br /&gt;
&lt;br /&gt;
		// set the fullscreen button state&lt;br /&gt;
		if (updateButton === true) {&lt;br /&gt;
			wikEd.Button(document.getElementById(&#039;wikEdFullScreen&#039;), &#039;wikEdFullScreen&#039;, null, fullscreen);&lt;br /&gt;
			wikEd.fullScreenMode = fullscreen;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// resize and scroll to edit-frame&lt;br /&gt;
	wikEd.ResizeWindowHandler();&lt;br /&gt;
	if ( (switched === true) &amp;amp;&amp;amp; (fullscreen === false) ) {&lt;br /&gt;
		window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper) - 2);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// grey out fullscreen button&lt;br /&gt;
	var button = document.getElementById(&#039;wikEdFullScreen&#039;);&lt;br /&gt;
	if ( (wikEd.editArticle === false) || (wikEd.useWikEd === false) ) {&lt;br /&gt;
		button.className = &#039;wikEdButtonInactive&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.fullScreenMode === true) {&lt;br /&gt;
		button.className = &#039;wikEdButtonChecked&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		button.className = &#039;wikEdButtonUnchecked&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeSummary: recalculate the summary width after resizing the window&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeSummary = function () {&lt;br /&gt;
&lt;br /&gt;
	// check if combo field exists&lt;br /&gt;
	if (wikEd.summarySelect === null) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	wikEd.summaryText.style.width = &#039;&#039;;&lt;br /&gt;
	wikEd.summarySelect.style.width = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	wikEd.summaryTextWidth = wikEd.summaryWrapper.clientWidth - ( wikEd.GetOffsetLeft(wikEd.summaryText) - wikEd.GetOffsetLeft(wikEd.summaryWrapper) );&lt;br /&gt;
	if (wikEd.summaryTextWidth &amp;lt; 150) {&lt;br /&gt;
		wikEd.summaryTextWidth = 150;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.summaryText.style.width = wikEd.summaryTextWidth + &#039;px&#039;;&lt;br /&gt;
	wikEd.ResizeComboInput(&#039;summary&#039;);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ResizeComboInput: set the size of input and select fields so that only the select button is visible behind the input field&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ResizeComboInput = function (field) {&lt;br /&gt;
&lt;br /&gt;
	// check if combo field exists&lt;br /&gt;
	if (wikEd.selectElement[field] === undefined) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// short names&lt;br /&gt;
	var input = wikEd.inputElement[field];&lt;br /&gt;
	var select = wikEd.selectElement[field];&lt;br /&gt;
&lt;br /&gt;
	// save select options and empty select&lt;br /&gt;
	var selectInnerHTML = select.innerHTML;&lt;br /&gt;
	select.innerHTML = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// set measuring styles&lt;br /&gt;
	select.style.fontFamily = &#039;sans-serif&#039;;&lt;br /&gt;
	input.style.margin = &#039;0&#039;;&lt;br /&gt;
	select.style.margin = &#039;0&#039;;&lt;br /&gt;
	select.style.width = &#039;auto&#039;;&lt;br /&gt;
&lt;br /&gt;
	// get button width from small empty select box&lt;br /&gt;
	var inputWidth = input.offsetWidth;&lt;br /&gt;
	var selectWidth = select.offsetWidth;&lt;br /&gt;
	var selectBorder = parseInt(wikEd.GetStyle(select, &#039;borderTopWidth&#039;), 10);&lt;br /&gt;
	var buttonWidth = selectWidth - selectBorder - 8;&lt;br /&gt;
&lt;br /&gt;
	// delete measuring styles&lt;br /&gt;
	select.style.margin = null;&lt;br /&gt;
	input.style.fontFamily = null;&lt;br /&gt;
	select.style.fontFamily = null;&lt;br /&gt;
&lt;br /&gt;
	// for long fields shorten input width&lt;br /&gt;
	if (inputWidth + buttonWidth &amp;gt; 150) {&lt;br /&gt;
		input.style.width = (inputWidth - buttonWidth) + &#039;px&#039;;&lt;br /&gt;
		select.style.width = inputWidth + &#039;px&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// otherwise increase select width&lt;br /&gt;
	else {&lt;br /&gt;
		select.style.width = (inputWidth + buttonWidth) + &#039;px&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// restore select options&lt;br /&gt;
	select.innerHTML = selectInnerHTML;&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ChangeComboInput: sets the input value to selected option; onchange event handler for select boxes&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ChangeComboInput = function (field) {&lt;br /&gt;
&lt;br /&gt;
	// get selection index (-1 for unselected)&lt;br /&gt;
	var selected = wikEd.selectElement[field].selectedIndex;&lt;br /&gt;
	if (selected &amp;gt;= 0) {&lt;br /&gt;
		wikEd.selectElement[field].selectedIndex = -1;&lt;br /&gt;
&lt;br /&gt;
		// get selected option&lt;br /&gt;
		var option = wikEd.selectElement[field].options[selected];&lt;br /&gt;
		if (option.text !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// jump to heading&lt;br /&gt;
			if ( (field == &#039;find&#039;) &amp;amp;&amp;amp; (/^=.*?=$/.test(option.value) === true) ) {&lt;br /&gt;
				var obj = {};&lt;br /&gt;
				var findText = option.value.replace(/([\\^$*+?.()\[\]{}:=!|,\-])/g, &#039;\\$1&#039;);&lt;br /&gt;
				findText = &#039;^&#039; + findText + &#039;$&#039;;&lt;br /&gt;
&lt;br /&gt;
				// find and select heading text&lt;br /&gt;
				wikEd.Find(obj, findText, true, false, true, true);&lt;br /&gt;
				obj.sel.removeAllRanges();&lt;br /&gt;
				obj.sel.addRange(obj.changed.range);&lt;br /&gt;
&lt;br /&gt;
				// and scroll it into the viewport&lt;br /&gt;
				wikEd.ScrollToSelection();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// update input field&lt;br /&gt;
			else {&lt;br /&gt;
&lt;br /&gt;
				// add a tag to the summary box&lt;br /&gt;
				if (field == &#039;summary&#039;) {&lt;br /&gt;
					wikEd.inputElement[field].value = wikEd.AppendToSummary(wikEd.inputElement[field].value, option.text);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// add case and regexp checkboxes to find / replace fields&lt;br /&gt;
				else if (option.value == &#039;setcheck&#039;) {&lt;br /&gt;
					wikEd.Button(document.getElementById(&#039;wikEdCaseSensitive&#039;), &#039;wikEdCaseSensitive&#039;, null, (option.text.charAt(0) == wikEd.checkMarker[true]) );&lt;br /&gt;
					wikEd.Button(document.getElementById(&#039;wikEdRegExp&#039;), &#039;wikEdRegExp&#039;, null, (option.text.charAt(1) == wikEd.checkMarker[true]) );&lt;br /&gt;
					wikEd.inputElement[field].value = option.text.substr(3);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// add option text&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.inputElement[field].value = option.text;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// find the new text&lt;br /&gt;
				if ( (field == &#039;find&#039;) &amp;amp;&amp;amp; (wikEd.findAhead.getAttribute(&#039;checked&#039;) == &#039;true&#039;) ) {&lt;br /&gt;
					wikEd.FindAhead();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.inputElement[field].focus();&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AppendToSummary: append a phrase to the summary text&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AppendToSummary = function (summary, append) {&lt;br /&gt;
&lt;br /&gt;
	summary = summary.replace(/^[, ]+/, &#039;&#039;);&lt;br /&gt;
	summary = summary.replace(/[, ]+$/, &#039;&#039;);&lt;br /&gt;
	if (summary !== &#039;&#039;) {&lt;br /&gt;
		if (/ \*\/$/.test(summary) === true) {&lt;br /&gt;
			summary += &#039; &#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else if (/[.;:]$/.test(summary) === true) {&lt;br /&gt;
			summary += &#039; &#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			var regExp = new RegExp(&#039;^[&#039; + wikEd.letters + &#039;_0-9()&amp;quot;\&#039;+\\-]&#039;, &#039;&#039;);&lt;br /&gt;
			if (regExp.test(summary) === false) {&lt;br /&gt;
				summary += &#039; &#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				summary += &#039;, &#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	summary += append;&lt;br /&gt;
&lt;br /&gt;
	return summary;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AddToHistory: add an input value to the saved history&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AddToHistory = function (field) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.inputElement[field].value !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// load history from saved settings&lt;br /&gt;
		wikEd.LoadHistoryFromSettings(field);&lt;br /&gt;
&lt;br /&gt;
		// add current value to history&lt;br /&gt;
		wikEd.fieldHist[field].unshift(wikEd.inputElement[field].value);&lt;br /&gt;
&lt;br /&gt;
		// add case and regexp checkboxes to find / replace value&lt;br /&gt;
		if ( (field == &#039;find&#039;) || (field == &#039;replace&#039;) ) {&lt;br /&gt;
			wikEd.fieldHist[field][0] =&lt;br /&gt;
				wikEd.checkMarker[ (wikEd.caseSensitive.getAttribute(&#039;checked&#039;) == &#039;true&#039;) ] +&lt;br /&gt;
				wikEd.checkMarker[ (wikEd.regExp.getAttribute(&#039;checked&#039;) == &#039;true&#039;) ] +&lt;br /&gt;
				&#039; &#039; + wikEd.fieldHist[field][0];&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// remove paragraph names from summary&lt;br /&gt;
		if (field == &#039;summary&#039;) {&lt;br /&gt;
			wikEd.fieldHist[field][0] = wikEd.fieldHist[field][0].replace(/^\/\* .*? \*\/ *()/, &#039;&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// remove multiple old copies from history&lt;br /&gt;
		var i = 1;&lt;br /&gt;
		while (i &amp;lt; wikEd.fieldHist[field].length) {&lt;br /&gt;
			if (wikEd.fieldHist[field][i] == wikEd.fieldHist[field][0]) {&lt;br /&gt;
				wikEd.fieldHist[field].splice(i, 1);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				i ++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// remove new value if it is a preset value&lt;br /&gt;
		if (wikEd.config.comboPresetOptions[field] !== undefined) {&lt;br /&gt;
			var i = 0;&lt;br /&gt;
			while (i &amp;lt; wikEd.config.comboPresetOptions[field].length) {&lt;br /&gt;
				if (wikEd.config.comboPresetOptions[field][i] == wikEd.fieldHist[field][0]) {&lt;br /&gt;
					wikEd.fieldHist[field].shift();&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					i ++;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// cut history number to maximal history length&lt;br /&gt;
		wikEd.fieldHist[field] = wikEd.fieldHist[field].slice(0, wikEd.config.historyLength[field]);&lt;br /&gt;
&lt;br /&gt;
		// save history to settings&lt;br /&gt;
		if (wikEd.fieldHist[field][0] !== &#039;&#039;) {&lt;br /&gt;
			wikEd.SaveHistoryToSetting(field);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetComboOptions: generate the select options from saved history; onfocus handler for select box&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetComboOptions = function (field) {&lt;br /&gt;
&lt;br /&gt;
	// load history from saved settings&lt;br /&gt;
	wikEd.LoadHistoryFromSettings(field);&lt;br /&gt;
&lt;br /&gt;
	var option = {};&lt;br /&gt;
	var selectedOption = null;&lt;br /&gt;
&lt;br /&gt;
	// delete options&lt;br /&gt;
	var options = wikEd.selectElement[field].options;&lt;br /&gt;
	for (var i = 0; i &amp;lt; options.length; i ++) {&lt;br /&gt;
		wikEd.selectElement[field].remove(i);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// delete optgroup&lt;br /&gt;
	option = document.getElementById(field + &#039;Optgroup&#039;);&lt;br /&gt;
	if (option !== null) {&lt;br /&gt;
		wikEd.selectElement[field].removeChild(option);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// workaround for onchange not firing when selecting first option from unselected dropdown&lt;br /&gt;
	option = document.createElement(&#039;option&#039;);&lt;br /&gt;
	option.style.display = &#039;none&#039;;&lt;br /&gt;
	var j = 0;&lt;br /&gt;
	wikEd.selectElement[field].options[j++] = option;&lt;br /&gt;
&lt;br /&gt;
	// add history entries&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.fieldHist[field].length; i ++) {&lt;br /&gt;
		if (wikEd.fieldHist[field][i] !== undefined) {&lt;br /&gt;
			if (wikEd.fieldHist[field][i] == wikEd.inputElement[field].value) {&lt;br /&gt;
				selectedOption = j;&lt;br /&gt;
			}&lt;br /&gt;
			option = document.createElement(&#039;option&#039;);&lt;br /&gt;
&lt;br /&gt;
			// replace spaces with nbsp to allow for multiple, leading, and trailing spaces&lt;br /&gt;
			option.text = wikEd.fieldHist[field][i].replace(/ /g, &#039;\xa0&#039;);&lt;br /&gt;
			if ( (field == &#039;find&#039;) || (field == &#039;replace&#039;) ) {&lt;br /&gt;
				option.value = &#039;setcheck&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.selectElement[field].options[j++] = option;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add preset entries&lt;br /&gt;
	var startPreset = 0;&lt;br /&gt;
	if (wikEd.config.comboPresetOptions[field] !== undefined) {&lt;br /&gt;
		startPreset = j;&lt;br /&gt;
		for (var i = 0; i &amp;lt; wikEd.config.comboPresetOptions[field].length; i ++) {&lt;br /&gt;
			if (wikEd.config.comboPresetOptions[field][i] !== undefined) {&lt;br /&gt;
&lt;br /&gt;
				// replace spaces with nbsp to allow for multiple, leading, and trailing spaces&lt;br /&gt;
				wikEd.config.comboPresetOptions[field][i] = wikEd.config.comboPresetOptions[field][i].replace(/ /g, &#039;\xa0&#039;);&lt;br /&gt;
&lt;br /&gt;
				// select a dropdown value&lt;br /&gt;
				if (wikEd.config.comboPresetOptions[field][i] == wikEd.inputElement[field].value) {&lt;br /&gt;
					selectedOption = j;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				option = document.createElement(&#039;option&#039;);&lt;br /&gt;
				option.text = wikEd.config.comboPresetOptions[field][i].replace(/ /g, &#039;\xa0&#039;);&lt;br /&gt;
				if (field == &#039;summary&#039;) {&lt;br /&gt;
					option.text = option.text.replace(/\{wikEdUsing\}/g, wikEd.config.summaryUsing);&lt;br /&gt;
				}&lt;br /&gt;
				wikEd.selectElement[field].options[j++] = option;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// set the selection&lt;br /&gt;
	wikEd.selectElement[field].selectedIndex = selectedOption;&lt;br /&gt;
&lt;br /&gt;
	// add a blank preset separator&lt;br /&gt;
	if ( (startPreset &amp;gt; 1) &amp;amp;&amp;amp; (startPreset &amp;lt; j) ) {&lt;br /&gt;
		option = document.createElement(&#039;optgroup&#039;);&lt;br /&gt;
		option.label = &#039;\xa0&#039;;&lt;br /&gt;
		option.id = field + &#039;Optgroup&#039;;&lt;br /&gt;
		wikEd.selectElement[field].insertBefore(option, wikEd.selectElement[field].options[startPreset]);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add the TOC jumper to the find field&lt;br /&gt;
	var startTOC = 0;&lt;br /&gt;
	if (field == &#039;find&#039;) {&lt;br /&gt;
		startTOC = j;&lt;br /&gt;
&lt;br /&gt;
		// get the whole plain text&lt;br /&gt;
		var plain = wikEd.frameBody.innerHTML;&lt;br /&gt;
		plain = plain.replace(/&amp;lt;br\b[^&amp;gt;]*&amp;gt;/g, &#039;\n&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;lt;[^&amp;gt;]*&amp;gt;/g, &#039;&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;nbsp;/g, &#039;\xa0&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;gt;/g, &#039;&amp;gt;&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;lt;/g, &#039;&amp;lt;&#039;);&lt;br /&gt;
		plain = plain.replace(/&amp;amp;amp;/g, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
		// cycle through the headings&lt;br /&gt;
		var regExpMatchHeading = plain.match(/(^|\n)=+.+?=+[^\n=]*[ =\t]*(?=(\n|$))/g);&lt;br /&gt;
		if (regExpMatchHeading !== null) {&lt;br /&gt;
			for (var i = 0; i &amp;lt; regExpMatchHeading.length; i ++) {&lt;br /&gt;
				var headingMatch = regExpMatchHeading[i].match(/\n?((=+) *(.+?)( *\2))/);&lt;br /&gt;
				var headingIndent = headingMatch[2];&lt;br /&gt;
				headingIndent = headingIndent.replace(/^=/g, &#039;&#039;);&lt;br /&gt;
				headingIndent = headingIndent.replace(/\=/g, &#039;\xa0&#039;);&lt;br /&gt;
&lt;br /&gt;
				// add headings to the select element&lt;br /&gt;
				option = document.createElement(&#039;option&#039;);&lt;br /&gt;
				option.text = &#039;\u21d2&#039; + headingIndent + headingMatch[3];&lt;br /&gt;
				option.value = headingMatch[1];&lt;br /&gt;
				wikEd.selectElement[field].options[j++] = option;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add a blank TOC separator&lt;br /&gt;
	if ( (startTOC &amp;gt; 1) &amp;amp;&amp;amp; (startTOC &amp;lt; j) ) {&lt;br /&gt;
		option = document.createElement(&#039;optgroup&#039;);&lt;br /&gt;
		option.label = &#039;\xa0&#039;;&lt;br /&gt;
		option.id = field + &#039;Optgroup&#039;;&lt;br /&gt;
		wikEd.selectElement[field].insertBefore(option, wikEd.selectElement[field].options[startTOC]);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ClearHistory: clear the history of combo input fields&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ClearHistory = function (field) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.SetPersistent(wikEd.savedName[field], &#039;&#039;, 0, &#039;/&#039;);&lt;br /&gt;
	wikEd.SetComboOptions(field);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.LoadHistoryFromSettings: get the input box history from the respective saved settings&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.LoadHistoryFromSettings = function (field) {&lt;br /&gt;
&lt;br /&gt;
	var setting = wikEd.GetPersistent(wikEd.savedName[field]);&lt;br /&gt;
	if ( (setting !== null) &amp;amp;&amp;amp; (setting !== &#039;&#039;) ) {&lt;br /&gt;
		setting = decodeURIComponent(setting);&lt;br /&gt;
		wikEd.fieldHist[field] = setting.split(&#039;\n&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		wikEd.fieldHist[field] = [];&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SaveHistoryToSetting: save the input box history to the respective saved settings&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SaveHistoryToSetting = function (field) {&lt;br /&gt;
&lt;br /&gt;
	var setting = &#039;&#039;;&lt;br /&gt;
	setting = wikEd.fieldHist[field].join(&#039;\n&#039;);&lt;br /&gt;
	setting = setting.replace(/\n$/, &#039;&#039;);&lt;br /&gt;
	setting = encodeURIComponent(setting);&lt;br /&gt;
	wikEd.SetPersistent(wikEd.savedName[field], setting, 0, &#039;/&#039;);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetSelection: get the current iframe selection&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetSelection = function () {&lt;br /&gt;
&lt;br /&gt;
	var sel = wikEd.frameWindow.getSelection();&lt;br /&gt;
&lt;br /&gt;
	// make sure there is at least an empty range&lt;br /&gt;
	if ( (sel !== null) &amp;amp;&amp;amp; (sel.rangeCount === 0) ) {&lt;br /&gt;
		sel.collapse(wikEd.frameBody, 0);&lt;br /&gt;
	}&lt;br /&gt;
	return sel;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetRange: set a range, control for non-text nodes&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetRange = function (range, startNode, startOffset, endNode, endOffset) {&lt;br /&gt;
&lt;br /&gt;
	wikEd.SetRangeStart(range, startNode, startOffset);&lt;br /&gt;
	wikEd.SetRangeEnd(range, endNode, endOffset);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetRangeStart: set range start&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetRangeStart = function (range, startNode, startOffset) {&lt;br /&gt;
&lt;br /&gt;
	if ( (startNode.childNodes.length &amp;gt; 0) &amp;amp;&amp;amp; (startOffset &amp;lt; startNode.childNodes.length) ) {&lt;br /&gt;
		startNode = startNode.childNodes.item(startOffset);&lt;br /&gt;
		startOffset = 0;&lt;br /&gt;
	}&lt;br /&gt;
	if (startNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
		range.setStart(startNode, startOffset);&lt;br /&gt;
	}&lt;br /&gt;
	else if (startNode.childNodes.length === 0) {&lt;br /&gt;
		range.setStart(startNode, 0);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		range.setStartAfter(startNode);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetRangeEnd: set range end&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetRangeEnd = function (range, endNode, endOffset) {&lt;br /&gt;
&lt;br /&gt;
	if ( (endNode.childNodes.length &amp;gt; 0) &amp;amp;&amp;amp; (endOffset &amp;lt; endNode.childNodes.length) ) {&lt;br /&gt;
		endNode = endNode.childNodes.item(endOffset);&lt;br /&gt;
		endOffset = 0;&lt;br /&gt;
	}&lt;br /&gt;
	if (endNode.nodeName == &#039;#text&#039;) {&lt;br /&gt;
		range.setEnd(endNode, endOffset);&lt;br /&gt;
	}&lt;br /&gt;
	else if (endNode.childNodes.length === 0) {&lt;br /&gt;
		range.setEndBefore(endNode);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		range.setEndBefore(endNode);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetSavedSetting: get a wikEd setting, returns boolean&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetSavedSetting = function (settingName, preset) {&lt;br /&gt;
&lt;br /&gt;
	var setting = wikEd.GetPersistent(settingName);&lt;br /&gt;
	if (setting == &#039;1&#039;) {&lt;br /&gt;
		setting = true;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		if ( (setting === null) || (setting === &#039;&#039;) ) {&lt;br /&gt;
			setting = preset;&lt;br /&gt;
		}&lt;br /&gt;
		if (typeof setting !== &#039;boolean&#039;) {&lt;br /&gt;
			setting = false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return setting;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetPersistent: get a cookie or a Greasemonkey persistent value (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetPersistent = function ( name ) {&lt;br /&gt;
&lt;br /&gt;
	var getStr;&lt;br /&gt;
&lt;br /&gt;
	// check for web storage&lt;br /&gt;
	wikEd.DetectWebStorage();&lt;br /&gt;
&lt;br /&gt;
	// get a value from web storage&lt;br /&gt;
	if ( wikEd.webStorage === true ) {&lt;br /&gt;
		try {&lt;br /&gt;
			getStr = window.localStorage.getItem( name );&lt;br /&gt;
		}&lt;br /&gt;
		catch ( exception ) {&lt;br /&gt;
			wikEd.webStorage = false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if ( wikEd.webStorage === false ) {&lt;br /&gt;
&lt;br /&gt;
		// else get a Greasemonkey persistent value&lt;br /&gt;
		if ( wikEd.greasemonkey === true ) {&lt;br /&gt;
			getStr = GM_getValue( name, &#039;&#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// else get a cookie value&lt;br /&gt;
		else {&lt;br /&gt;
			getStr = wikEd.GetCookie( name );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// return string&lt;br /&gt;
	if ( typeof getStr != &#039;string&#039; ) {&lt;br /&gt;
		getStr = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	return getStr;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetPersistent: set a cookie or a Greasemonkey persistent value, deletes the value for expire = -1&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetPersistent = function ( name, value, expires, path, domain, secure ) {&lt;br /&gt;
&lt;br /&gt;
	// check for web storage&lt;br /&gt;
	wikEd.DetectWebStorage();&lt;br /&gt;
&lt;br /&gt;
	// set a value in web storage&lt;br /&gt;
	if ( wikEd.webStorage === true ) {&lt;br /&gt;
		if ( expires == -1 ) {&lt;br /&gt;
			value = &#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		try {&lt;br /&gt;
			window.localStorage.setItem( name, value );&lt;br /&gt;
		}&lt;br /&gt;
		catch ( exception ) {&lt;br /&gt;
			wikEd.webStorage = false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if ( wikEd.webStorage === false ) {&lt;br /&gt;
&lt;br /&gt;
		// else set a Greasemonkey persistent value&lt;br /&gt;
		if ( wikEd.greasemonkey === true ) {&lt;br /&gt;
			if ( expires == -1 ) {&lt;br /&gt;
				value = &#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// see http://wiki.greasespot.net/Greasemonkey_access_violation&lt;br /&gt;
			window.setTimeout( function() {&lt;br /&gt;
				GM_setValue( name, value );&lt;br /&gt;
			}, 0 );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// else set a cookie value&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.SetCookie( name, value, expires, path, domain, secure );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DetectWebStorage: detect if local storage is available (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.DetectWebStorage = function () {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.webStorage === null) {&lt;br /&gt;
		wikEd.webStorage = false;&lt;br /&gt;
&lt;br /&gt;
		// https://bugzilla.mozilla.org/show_bug.cgi?id=748620&lt;br /&gt;
		try {&lt;br /&gt;
			if (typeof window.localStorage == &#039;object&#039;) {&lt;br /&gt;
&lt;br /&gt;
				// web storage does not persist between local html page loads in firefox&lt;br /&gt;
				if (/^file:\/\//.test(wikEd.pageOrigin) === false) {&lt;br /&gt;
					wikEd.webStorage = true;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		catch (exception) {&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetCookie: get a cookie (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetCookie = function (cookieName) {&lt;br /&gt;
&lt;br /&gt;
	var cookie = &#039; &#039; + document.cookie;&lt;br /&gt;
	var search = &#039; &#039; + cookieName + &#039;=&#039;;&lt;br /&gt;
	var cookieValue = &#039;&#039;;&lt;br /&gt;
	var offset = 0;&lt;br /&gt;
	var end = 0;&lt;br /&gt;
	offset = cookie.indexOf(search);&lt;br /&gt;
	if (offset != -1) {&lt;br /&gt;
		offset += search.length;&lt;br /&gt;
		end = cookie.indexOf(&#039;;&#039;, offset);&lt;br /&gt;
		if (end == -1) {&lt;br /&gt;
			end = cookie.length;&lt;br /&gt;
		}&lt;br /&gt;
		cookieValue = cookie.substring(offset, end);&lt;br /&gt;
		cookieValue = cookieValue.replace(/\\+/g, &#039; &#039;);&lt;br /&gt;
		cookieValue = decodeURIComponent(cookieValue);&lt;br /&gt;
	}&lt;br /&gt;
	return cookieValue;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.SetCookie: set a cookie, deletes a cookie for expire = -1 (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.SetCookie = function (name, value, expires, path, domain, secure) {&lt;br /&gt;
&lt;br /&gt;
	var cookie = name + &#039;=&#039; + encodeURIComponent(value);&lt;br /&gt;
&lt;br /&gt;
	if ( (expires !== undefined) &amp;amp;&amp;amp; (expires !== null) ) {&lt;br /&gt;
&lt;br /&gt;
		// generate a date 1 hour ago to delete the cookie&lt;br /&gt;
		if (expires == -1) {&lt;br /&gt;
			var cookieExpire = new Date();&lt;br /&gt;
			expires = cookieExpire.setTime(cookieExpire.getTime() - 60 * 60 * 1000);&lt;br /&gt;
			expires = cookieExpire.toUTCString();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get date from expiration preset&lt;br /&gt;
		else if (expires === 0) {&lt;br /&gt;
			var cookieExpire = new Date();&lt;br /&gt;
			expires = cookieExpire.setTime(cookieExpire.getTime() + wikEd.config.cookieExpireSec * 1000);&lt;br /&gt;
			expires = cookieExpire.toUTCString();&lt;br /&gt;
		}&lt;br /&gt;
		cookie += &#039;; expires=&#039; + expires;&lt;br /&gt;
	}&lt;br /&gt;
	if (typeof path == &#039;string&#039;) {&lt;br /&gt;
		cookie += &#039;; path=&#039; + path;&lt;br /&gt;
	}&lt;br /&gt;
	if (typeof domain == &#039;string&#039;)  {&lt;br /&gt;
		cookie += &#039;; domain=&#039; + domain;&lt;br /&gt;
	}&lt;br /&gt;
	if (secure === true) {&lt;br /&gt;
		cookie += &#039;; secure&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	document.cookie = cookie;&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetOffsetTop: get element offset relative to window top (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetOffsetTop = function (element) {&lt;br /&gt;
&lt;br /&gt;
	var offset = 0;&lt;br /&gt;
	do {&lt;br /&gt;
		offset += element.offsetTop;&lt;br /&gt;
	} while ( (element = element.offsetParent) !== null );&lt;br /&gt;
	return offset;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetOffsetLeft: get element offset relative to left window border&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetOffsetLeft = function (element) {&lt;br /&gt;
&lt;br /&gt;
	var offset = 0;&lt;br /&gt;
	do {&lt;br /&gt;
		offset += element.offsetLeft;&lt;br /&gt;
	} while ( (element = element.offsetParent) !== null );&lt;br /&gt;
	return offset;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AppendScript: append script to head&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AppendScript = function (scriptUrl, onLoadFunction) {&lt;br /&gt;
&lt;br /&gt;
	var script = document.createElement(&#039;script&#039;);&lt;br /&gt;
	script.setAttribute(&#039;type&#039;, &#039;text/javascript&#039;);&lt;br /&gt;
	script.setAttribute(&#039;src&#039;, scriptUrl);&lt;br /&gt;
	wikEd.head.appendChild(script);&lt;br /&gt;
	if (onLoadFunction !== undefined) {&lt;br /&gt;
		script.addEventListener(&#039;load&#039;, onLoadFunction, false);&lt;br /&gt;
	}&lt;br /&gt;
	return script;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.CleanNodes: remove DOM elements dynamically inserted by other scripts&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.CleanNodes = function (node) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.cleanNodes === false) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// remove Web of Trust (WOT) tags&lt;br /&gt;
	var divs = node.getElementsByTagName(&#039;div&#039;);&lt;br /&gt;
	for (var i = 0; i &amp;lt; divs.length; i ++) {&lt;br /&gt;
		var div = divs[i];&lt;br /&gt;
&lt;br /&gt;
		// test for WOT class names&lt;br /&gt;
		var divClass = div.className;&lt;br /&gt;
		if (/^wot-/.test(divClass) === true) {&lt;br /&gt;
			var divParent = div.parentNode;&lt;br /&gt;
			if (divParent !== null) {&lt;br /&gt;
				divParent.removeChild(div);&lt;br /&gt;
			}&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// test for WOT attributes&lt;br /&gt;
		var divAttrs = div.attributes;&lt;br /&gt;
		for (var j = 0; j &amp;lt; divAttrs.length; ++ j) {&lt;br /&gt;
			var attr = divAttrs.item(j);&lt;br /&gt;
			if ( (attr.nodeName == &#039;wottarget&#039;) || (/^link[0-9a-f]{30,}/.test(attr.nodeName) === true) ) {&lt;br /&gt;
				var divParent = div.parentNode;&lt;br /&gt;
				if (divParent !== null) {&lt;br /&gt;
					divParent.removeChild(div);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ParseDOM: parses a DOM subtree into a linear array of plain text fragments&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ParseDOM = function (obj, topNode) {&lt;br /&gt;
&lt;br /&gt;
	obj.plainLength = 0;&lt;br /&gt;
	obj.plainArray = [];&lt;br /&gt;
	obj.plainNode = [];&lt;br /&gt;
	obj.plainStart = [];&lt;br /&gt;
	obj.plainPos = [];&lt;br /&gt;
&lt;br /&gt;
	var anchorNode = obj.sel.anchorNode;&lt;br /&gt;
	var focusNode = obj.sel.focusNode;&lt;br /&gt;
	var anchorOffset = obj.sel.anchorOffset;&lt;br /&gt;
	var focusOffset = obj.sel.focusOffset;&lt;br /&gt;
&lt;br /&gt;
	wikEd.ParseDOMRecursive(obj, topNode, anchorNode, anchorOffset, focusNode, focusOffset);&lt;br /&gt;
	obj.plain = obj.plainArray.join(&#039;&#039;);&lt;br /&gt;
	obj.plain = obj.plain.replace(/\xa0/g, &#039; &#039;);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ParseDOMRecursive: parses a DOM subtree into a linear array of plain text fragments&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ParseDOMRecursive = function (obj, currentNode, anchorNode, anchorOffset, focusNode, focusOffset) {&lt;br /&gt;
&lt;br /&gt;
	// cycle through the child nodes of currentNode&lt;br /&gt;
	var childNodes = currentNode.childNodes;&lt;br /&gt;
	for (var i = 0; i &amp;lt; childNodes.length; i ++) {&lt;br /&gt;
		var childNode = childNodes.item(i);&lt;br /&gt;
&lt;br /&gt;
		// check for selection, non-text nodes&lt;br /&gt;
		if ( (currentNode == anchorNode) &amp;amp;&amp;amp; (i == anchorOffset) ) {&lt;br /&gt;
			obj.plainAnchor = obj.plainLength;&lt;br /&gt;
		}&lt;br /&gt;
		if ( (currentNode == focusNode) &amp;amp;&amp;amp; (i == focusOffset) ) {&lt;br /&gt;
			obj.plainFocus = obj.plainLength;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// check for selection, text nodes&lt;br /&gt;
		if (childNode == obj.sel.anchorNode) {&lt;br /&gt;
			obj.plainAnchor = obj.plainLength + obj.sel.anchorOffset;&lt;br /&gt;
		}&lt;br /&gt;
		if (childNode == obj.sel.focusNode) {&lt;br /&gt;
			obj.plainFocus = obj.plainLength + obj.sel.focusOffset;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get text of child node&lt;br /&gt;
		var value = null;&lt;br /&gt;
		switch (childNode.nodeType) {&lt;br /&gt;
			case childNode.ELEMENT_NODE:&lt;br /&gt;
&lt;br /&gt;
				// skip hidden elements&lt;br /&gt;
				if (wikEd.GetStyle(childNode, &#039;display&#039;) == &#039;none&#039;) {&lt;br /&gt;
					continue;&lt;br /&gt;
				}&lt;br /&gt;
				if ( (childNode.childNodes.length === 0) &amp;amp;&amp;amp; (wikEd.leafElements[childNode.nodeName] === true) ) {&lt;br /&gt;
					if (childNode.nodeName == &#039;BR&#039;) {&lt;br /&gt;
						value = &#039;\n&#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					wikEd.ParseDOMRecursive(obj, childNode, anchorNode, anchorOffset, focusNode, focusOffset);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			case childNode.TEXT_NODE:&lt;br /&gt;
				value = childNode.nodeValue;&lt;br /&gt;
				value = value.replace(/\n/g, &#039; &#039;);&lt;br /&gt;
				break;&lt;br /&gt;
			case childNode.ENTITY_REFERENCE_NODE:&lt;br /&gt;
				value = &#039;&amp;amp;&#039; + childNode.nodeName + &#039;;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// add text to text object&lt;br /&gt;
		if (value !== null) {&lt;br /&gt;
&lt;br /&gt;
			// array of text fragments&lt;br /&gt;
			obj.plainArray.push(value);&lt;br /&gt;
&lt;br /&gt;
			// array of text fragment node references&lt;br /&gt;
			obj.plainNode.push(childNode);&lt;br /&gt;
&lt;br /&gt;
			// array of text fragment text positions&lt;br /&gt;
			obj.plainStart.push(obj.plainLength);&lt;br /&gt;
&lt;br /&gt;
			// node references containing text positions&lt;br /&gt;
			obj.plainPos[childNode] = obj.plainLength;&lt;br /&gt;
&lt;br /&gt;
			// current text length&lt;br /&gt;
			obj.plainLength += value.length;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetInnerHTML: get the innerHTML of a document fragment&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetInnerHTML = function (obj, currentNode) {&lt;br /&gt;
&lt;br /&gt;
	// initialize string&lt;br /&gt;
	if (obj.html === undefined) {&lt;br /&gt;
		obj.html = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	if (obj.plain === undefined) {&lt;br /&gt;
		obj.plain = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	if (obj.plainArray === undefined) {&lt;br /&gt;
		obj.plainArray = [];&lt;br /&gt;
		obj.plainNode = [];&lt;br /&gt;
		obj.plainStart = [];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var childNodes = currentNode.childNodes;&lt;br /&gt;
	for (var i = 0; i &amp;lt; childNodes.length; i ++) {&lt;br /&gt;
		var childNode = childNodes.item(i);&lt;br /&gt;
		switch (childNode.nodeType) {&lt;br /&gt;
			case childNode.ELEMENT_NODE:&lt;br /&gt;
				obj.html += &#039;&amp;lt;&#039; + childNode.nodeName.toLowerCase();&lt;br /&gt;
				for (var j = 0; j &amp;lt; childNode.attributes.length; j ++) {&lt;br /&gt;
					if (childNode.attributes.item(j).value !== null) {&lt;br /&gt;
						obj.html += &#039; &#039; + childNode.attributes.item(j).nodeName + &#039;=&amp;quot;&#039; + childNode.attributes.item(j).value.replace(/&amp;lt;/g, &#039;&amp;amp;lt;&#039;).replace(/&amp;gt;/g, &#039;&amp;amp;gt;&#039;) + &#039;&amp;quot;&#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if ( (childNode.childNodes.length === 0) &amp;amp;&amp;amp; (wikEd.leafElements[childNode.nodeName] === true) ) {&lt;br /&gt;
					obj.html += &#039;&amp;gt;&#039;;&lt;br /&gt;
					if (childNode.nodeName == &#039;BR&#039;) {&lt;br /&gt;
						obj.plainArray.push(&#039;\n&#039;);&lt;br /&gt;
						obj.plainNode.push(childNode);&lt;br /&gt;
						obj.plainStart.push(obj.plain.length);&lt;br /&gt;
						obj.plain += &#039;\n&#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.html += &#039;&amp;gt;&#039;;&lt;br /&gt;
					wikEd.GetInnerHTML(obj, childNode);&lt;br /&gt;
					obj.html += &#039;&amp;lt;/&#039; + childNode.nodeName.toLowerCase() + &#039;&amp;gt;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			case childNode.TEXT_NODE:&lt;br /&gt;
				var value = childNode.nodeValue;&lt;br /&gt;
&lt;br /&gt;
				// newline handling important for pasted page content&lt;br /&gt;
				if (currentNode.nodeName != &#039;PRE&#039;) {&lt;br /&gt;
					value = value.replace(/[ \r]*\n[ \r\n]*/g, &#039; &#039;);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// plain array contains &amp;amp; &amp;lt; &amp;gt; instead of &amp;amp;amp; &amp;amp;lt; &amp;amp;gt;&lt;br /&gt;
				obj.plainArray.push(value);&lt;br /&gt;
				obj.plainNode.push(childNode);&lt;br /&gt;
				obj.plainStart.push(obj.plain.length);&lt;br /&gt;
				value = wikEd.EscapeHtml(value);&lt;br /&gt;
&lt;br /&gt;
				if (currentNode.nodeName == &#039;PRE&#039;) {&lt;br /&gt;
					obj.html += value.replace(/\n/g, &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					obj.html += value;&lt;br /&gt;
				}&lt;br /&gt;
				obj.plain += value;&lt;br /&gt;
				break;&lt;br /&gt;
			case childNode.CDATA_SECTION_NODE:&lt;br /&gt;
				obj.html += &#039;&amp;lt;![CDATA[&#039; + childNode.nodeValue + &#039;]]&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
			case childNode.ENTITY_REFERENCE_NODE:&lt;br /&gt;
				var value = &#039;&amp;amp;&#039; + childNode.nodeName + &#039;;&#039;;&lt;br /&gt;
				obj.plainArray.push(value);&lt;br /&gt;
				obj.plainNode.push(childNode);&lt;br /&gt;
				obj.plainStart.push(obj.plain.length);&lt;br /&gt;
				value = value.replace(/&amp;amp;/g, &#039;&amp;amp;amp;&#039;);&lt;br /&gt;
				obj.html += value;&lt;br /&gt;
				obj.plain += value;&lt;br /&gt;
				break;&lt;br /&gt;
			case childNode.COMMENT_NODE:&lt;br /&gt;
				obj.html += &#039;&amp;lt;!--&#039; + childNode.nodeValue + &#039;--&amp;gt;&#039;;&lt;br /&gt;
				break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetNextNode: recurse through DOM to next text-like node for anti-highlight bleeding&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetNextTextNode = function (obj, currentNode, currentLevel) {&lt;br /&gt;
&lt;br /&gt;
	// ascend until there is a sibling&lt;br /&gt;
	while (currentNode != wikEd.frameBody) {&lt;br /&gt;
&lt;br /&gt;
	// check for sibling&lt;br /&gt;
		var nextNode = null;&lt;br /&gt;
		if ( (obj.backwards === true) &amp;amp;&amp;amp; (currentNode.previousSibling !== null) ) {&lt;br /&gt;
			nextNode = currentNode.previousSibling;&lt;br /&gt;
		}&lt;br /&gt;
		else if ( (obj.backwards !== true) &amp;amp;&amp;amp; (currentNode.nextSibling !== null) ) {&lt;br /&gt;
			nextNode = currentNode.nextSibling;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// found sibling&lt;br /&gt;
		if (nextNode !== null) {&lt;br /&gt;
			currentNode = nextNode;&lt;br /&gt;
&lt;br /&gt;
			// skip hidden nodes&lt;br /&gt;
			if (&lt;br /&gt;
				( (wikEd.refHide === true) &amp;amp;&amp;amp; (/^((wikEd(Ref|Templ|CharEntity|Table))|(wikEdTableBR))$/.test(currentNode.className) === true) ) ||&lt;br /&gt;
				(/^(wikEdScroll(Before|After))$/.test(currentNode.className) === true)&lt;br /&gt;
			) {&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// found text-like node&lt;br /&gt;
			if (&lt;br /&gt;
				(currentNode.nodeName == &#039;#text&#039;) ||&lt;br /&gt;
				(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||&lt;br /&gt;
				(wikEd.leafElements[currentNode.nodeName] === true)&lt;br /&gt;
			) {&lt;br /&gt;
				obj.foundNode = currentNode;&lt;br /&gt;
				obj.foundLevel = currentLevel;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// recurse into child nodes&lt;br /&gt;
			if (currentNode.nodeType == currentNode.ELEMENT_NODE) {&lt;br /&gt;
				wikEd.GetNextTextNodeChilds(obj, currentNode, currentLevel - 1);&lt;br /&gt;
				if (obj.foundNode !== undefined) {&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// no sibling, ascend to parent&lt;br /&gt;
		else {&lt;br /&gt;
			currentNode = currentNode.parentNode;&lt;br /&gt;
			currentLevel ++;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetNextTextNodeChilds: recurse through child nodes to next text-like node for anti-highlight bleeding&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetNextTextNodeChilds = function (obj, currentNode, currentLevel) {&lt;br /&gt;
&lt;br /&gt;
	// set direction&lt;br /&gt;
	var childNodes = currentNode.childNodes;&lt;br /&gt;
	if (childNodes.length === 0) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var start = 0;&lt;br /&gt;
	var add = 1;&lt;br /&gt;
	if (obj.backwards === true) {&lt;br /&gt;
		start = childNodes.length - 1;&lt;br /&gt;
		add = -1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// cycle through child nodes (left or right)&lt;br /&gt;
	for (var i = start; ( (obj.backwards === true) &amp;amp;&amp;amp; (i &amp;gt;= 0) ) || ( (obj.backwards !== true) &amp;amp;&amp;amp; (i &amp;lt; childNodes.length) ); i = i + add) {&lt;br /&gt;
		var currentNode = childNodes.item(i);&lt;br /&gt;
&lt;br /&gt;
		// skip hidden nodes&lt;br /&gt;
		if (&lt;br /&gt;
			( (wikEd.refHide === true) &amp;amp;&amp;amp; (/^((wikEd(Ref|Templ|CharEntity|Table))|(wikEdTableBR))$/.test(currentNode.className) === true) ) ||&lt;br /&gt;
			(/^(wikEdScroll(Before|After))$/.test(currentNode.className) === true)&lt;br /&gt;
		) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// found text-like node&lt;br /&gt;
		if (&lt;br /&gt;
			(currentNode.nodeName == &#039;#text&#039;) ||&lt;br /&gt;
			(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||&lt;br /&gt;
			(wikEd.leafElements[currentNode.nodeName] === true)&lt;br /&gt;
		) {&lt;br /&gt;
			obj.foundNode = currentNode;&lt;br /&gt;
			obj.foundLevel = currentLevel;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// recurse into child nodes&lt;br /&gt;
		if (currentNode.nodeType == currentNode.ELEMENT_NODE) {&lt;br /&gt;
			wikEd.GetNextTextNodeChilds(obj, currentNode, currentLevel - 1);&lt;br /&gt;
			if (obj.foundNode !== undefined) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ApplyCSS: Attach css rules to document&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ApplyCSS = function (cssDocument, cssRules) {&lt;br /&gt;
&lt;br /&gt;
	var stylesheet = new wikEd.StyleSheet(cssDocument);&lt;br /&gt;
	var rules = &#039;&#039;;&lt;br /&gt;
	for (var ruleName in cssRules) {&lt;br /&gt;
		if (Object.prototype.hasOwnProperty.call(cssRules, ruleName) === true) {&lt;br /&gt;
			var ruleStyle = cssRules[ruleName];&lt;br /&gt;
&lt;br /&gt;
			// replace {wikedImage:image} in css rules with image path&lt;br /&gt;
			ruleStyle = ruleStyle.replace(/\{wikEdImage:(\w+)\}/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					return wikEd.config.image[p1];&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			// replace {wikedText:text} in css rules with translation&lt;br /&gt;
			ruleStyle = ruleStyle.replace(/\{wikEdText:(\w+)\}/g,&lt;br /&gt;
				function(p, p1) {&lt;br /&gt;
					return wikEd.config.text[p1];&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			rules += ruleName + &#039; {&#039; + ruleStyle + &#039;}\n&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	stylesheet.AddCSSRules(rules);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.StyleSheet: create a new style sheet object&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.StyleSheet = function (contextObj) {&lt;br /&gt;
&lt;br /&gt;
	if (contextObj === undefined) {&lt;br /&gt;
		contextObj = document;&lt;br /&gt;
	}&lt;br /&gt;
	this.styleElement = null;&lt;br /&gt;
&lt;br /&gt;
	this.styleElement = contextObj.createElement(&#039;style&#039;);&lt;br /&gt;
	this.styleElement.from = &#039;text/css&#039;;&lt;br /&gt;
	var insert = contextObj.getElementsByTagName(&#039;head&#039;)[0];&lt;br /&gt;
	if (insert !== undefined) {&lt;br /&gt;
		insert.appendChild(this.styleElement);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.StyleSheet.AddCSSRules: add or replace all rules at once&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
	this.AddCSSRules = function (rules) {&lt;br /&gt;
&lt;br /&gt;
		this.styleElement.appendChild(contextObj.createTextNode(rules));&lt;br /&gt;
		return;&lt;br /&gt;
	};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetStyle: get computed style properties for non-inline css definitions&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetStyle = function (element, styleProperty) {&lt;br /&gt;
&lt;br /&gt;
	var styleDocument = element.ownerDocument;&lt;br /&gt;
&lt;br /&gt;
	var style;&lt;br /&gt;
	if (element !== null) {&lt;br /&gt;
		style = styleDocument.defaultView.getComputedStyle(element)[styleProperty];&lt;br /&gt;
	}&lt;br /&gt;
	return style;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AjaxPreview: get rendered page text using an Ajax non-API POST call&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AjaxPreview = function (textValue, ResponseHandler, livePreview) {&lt;br /&gt;
&lt;br /&gt;
	// API request&lt;br /&gt;
	if ( (	wikEd.wikiGlobals.wgEnableAPI === true || wikEd.wikiGlobals.wgEnableAPI === &#039;true&#039; ) &amp;amp;&amp;amp; livePreview === true ) {&lt;br /&gt;
		var postFields = {&lt;br /&gt;
			&#039;format&#039;: &#039;xml&#039;,&lt;br /&gt;
			&#039;action&#039;: &#039;parse&#039;,&lt;br /&gt;
			&#039;title&#039;: wikEd.pageName,&lt;br /&gt;
			&#039;text&#039;: textValue&lt;br /&gt;
		};&lt;br /&gt;
		var requestUrl = wikEd.scriptURL + &#039;api.php&#039;;&lt;br /&gt;
&lt;br /&gt;
		// AJAX API request&lt;br /&gt;
		wikEd.AjaxRequest( &#039;POST&#039;, requestUrl, postFields, &#039;text/plain&#039;, ResponseHandler );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// legacy support: non-API request, use Live preview if possible&lt;br /&gt;
	else {&lt;br /&gt;
&lt;br /&gt;
		// prepare the url&lt;br /&gt;
		var requestUrl;&lt;br /&gt;
		if ( wikEd.editForm !== null &amp;amp;&amp;amp; wikEd.editUpload !== true &amp;amp;&amp;amp; wikEd.editWatchlist !== true &amp;amp;&amp;amp; wikEd.viewDeleted !== true ) {&lt;br /&gt;
			requestUrl = wikEd.editForm.action.replace( /\?.*()/, &#039;&#039; );&lt;br /&gt;
			if ( /:\/\/()/.test(requestUrl) === false ) {&lt;br /&gt;
				requestUrl = window.location.protocol + &#039;//&#039; + window.location.host + requestUrl;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else if ( wikEd.wikiGlobals.wgScriptPath !== undefined ) {&lt;br /&gt;
			requestUrl = wikEd.wikiGlobals.wgScriptPath + &#039;/index.php&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			requestUrl = window.location.href;&lt;br /&gt;
			requestUrl = requestUrl.replace( /\?.*()/, &#039;&#039; );&lt;br /&gt;
			requestUrl = requestUrl.replace( /\/[\w\.]*$/, &#039;/index.php&#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// prepare the form fields&lt;br /&gt;
		var postFields = {};&lt;br /&gt;
		if ( wikEd.pageName !== null &amp;amp;&amp;amp; wikEd.wikiGlobals.wgCanonicalNamespace != &#039;Special&#039; ) {&lt;br /&gt;
			postFields[&#039;title&#039;] = wikEd.pageName;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			postFields[&#039;title&#039;] = &#039;wikEd_preview&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		postFields[&#039;action&#039;] = &#039;submit&#039;;&lt;br /&gt;
		postFields[&#039;wpTextbox1&#039;] = textValue;&lt;br /&gt;
		if ( wikEd.starttime !== null ) {&lt;br /&gt;
			postFields[&#039;wpStarttime&#039;] = wikEd.starttime;&lt;br /&gt;
		}&lt;br /&gt;
		if ( wikEd.edittime !== null ) {&lt;br /&gt;
			postFields[&#039;wpEdittime&#039;] = wikEd.edittime;&lt;br /&gt;
		}&lt;br /&gt;
		if ( wikEd.editToken !== null ) {&lt;br /&gt;
			postFields[&#039;wpEditToken&#039;] = wikEd.editToken;&lt;br /&gt;
		}&lt;br /&gt;
		if ( wikEd.autoSummary !== null ) {&lt;br /&gt;
			postFields[&#039;wpAutoSummary&#039;] = wikEd.autoSummary;&lt;br /&gt;
		}&lt;br /&gt;
		postFields[&#039;wpPreview&#039;] = &#039;true&#039;;&lt;br /&gt;
		if (livePreview !== false) {&lt;br /&gt;
			postFields[&#039;live&#039;] = &#039;true&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// AJAX non-API request&lt;br /&gt;
		wikEd.AjaxRequest( &#039;POST&#039;, requestUrl, postFields, &#039;text/plain&#039;, ResponseHandler );&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.AjaxRequest: wrapper for Ajax requests&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.AjaxRequest = function (requestMethod, requestUrl, postFields, overrideMimeType, ResponseHandler, origin) {&lt;br /&gt;
&lt;br /&gt;
	var request;&lt;br /&gt;
	var headers = {};&lt;br /&gt;
	var formData;&lt;br /&gt;
&lt;br /&gt;
	// prepare POST request&lt;br /&gt;
	if (requestMethod == &#039;POST&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// assemble string body&lt;br /&gt;
		if (typeof FormData != &#039;function&#039;) {&lt;br /&gt;
&lt;br /&gt;
			// create boundary&lt;br /&gt;
			var boundary = wikEd.CreateRandomString(12);&lt;br /&gt;
&lt;br /&gt;
			// POST header, charset: WebKit workaround http://aautar.digital-radiation.com/blog/?p=1645&lt;br /&gt;
			headers[&#039;Content-Type&#039;] = &#039;multipart/form-data; charset=UTF-8; boundary=&#039; + boundary;&lt;br /&gt;
&lt;br /&gt;
			// assemble body data&lt;br /&gt;
			formData = &#039;&#039;;&lt;br /&gt;
			for (var fieldName in postFields) {&lt;br /&gt;
				if (Object.prototype.hasOwnProperty.call(postFields, fieldName) === true) {&lt;br /&gt;
					formData += &#039;--&#039; + boundary + &#039;\r\n&#039;;&lt;br /&gt;
					formData += &#039;Content-Disposition: form-data; name=&amp;quot;&#039; + fieldName + &#039;&amp;quot;\r\n\r\n&#039; + postFields[fieldName] + &#039;\r\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			formData += &#039;--&#039; + boundary + &#039;--\r\n&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// use FormData object&lt;br /&gt;
		else {&lt;br /&gt;
			formData = new window.FormData();&lt;br /&gt;
			for (var fieldName in postFields) {&lt;br /&gt;
				if (Object.prototype.hasOwnProperty.call(postFields, fieldName) === true) {&lt;br /&gt;
					formData.append(fieldName, postFields[fieldName]);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// send the request using Greasemonkey GM_xmlhttpRequest&lt;br /&gt;
	if (wikEd.greasemonkey === true) {&lt;br /&gt;
		headers[&#039;User-Agent&#039;] = window.navigator.userAgent;&lt;br /&gt;
		if (origin === true) {&lt;br /&gt;
			headers[&#039;Origin&#039;] = window.location.origin;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// workaround for Error: Greasemonkey access violation: unsafeWindow cannot call GM_xmlhttpRequest.&lt;br /&gt;
		// see http://wiki.greasespot.net/Greasemonkey_access_violation&lt;br /&gt;
		window.setTimeout(function() {&lt;br /&gt;
			new GM_xmlhttpRequest({&lt;br /&gt;
				&#039;method&#039;:  requestMethod,&lt;br /&gt;
				&#039;url&#039;:     requestUrl,&lt;br /&gt;
				&#039;overrideMimeType&#039;: overrideMimeType,&lt;br /&gt;
				&#039;headers&#039;: headers,&lt;br /&gt;
				&#039;data&#039;:    formData,&lt;br /&gt;
				&#039;onreadystatechange&#039;:&lt;br /&gt;
					function(ajax) {&lt;br /&gt;
						if (ajax.readyState != 4) {&lt;br /&gt;
							return;&lt;br /&gt;
						}&lt;br /&gt;
						ResponseHandler(ajax);&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
			});&lt;br /&gt;
		}, 0);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// use standard XMLHttpRequest&lt;br /&gt;
	else {&lt;br /&gt;
&lt;br /&gt;
		// create new XMLHttpRequest object&lt;br /&gt;
		request = new window.XMLHttpRequest();&lt;br /&gt;
&lt;br /&gt;
		// open the request&lt;br /&gt;
		request.open(requestMethod, requestUrl, true);&lt;br /&gt;
&lt;br /&gt;
		// set the headers&lt;br /&gt;
		for (var headerName in headers) {&lt;br /&gt;
			if (Object.prototype.hasOwnProperty.call(headers, headerName) === true) {&lt;br /&gt;
				request.setRequestHeader(headerName, headers[headerName]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// set the mime type&lt;br /&gt;
		if ( (request.overrideMimeType !== undefined) &amp;amp;&amp;amp; (typeof overrideMimeType == &#039;string&#039;) ) {&lt;br /&gt;
			request.overrideMimeType(overrideMimeType);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// send the request, catch security violations Opera 0.9.51&lt;br /&gt;
		try {&lt;br /&gt;
			request.send(formData);&lt;br /&gt;
		}&lt;br /&gt;
		catch (exception) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// wait for the data&lt;br /&gt;
		request.onreadystatechange = function () {&lt;br /&gt;
			if (request.readyState != 4) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			ResponseHandler(request);&lt;br /&gt;
			return;&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetGlobals: parse global context variables (code copied to wikEdDiff.js)&lt;br /&gt;
//   uses postMessage, head script, and JSON encoding for Greasemonkey global to GM context access&lt;br /&gt;
&lt;br /&gt;
wikEd.GetGlobals = function (names, gotGlobalsHook) {&lt;br /&gt;
&lt;br /&gt;
	if (gotGlobalsHook !== undefined) {&lt;br /&gt;
		wikEd.gotGlobalsHook.push(gotGlobalsHook);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// code already running in global context&lt;br /&gt;
	if (wikEd.greasemonkey !== true) {&lt;br /&gt;
		var globalScopeCode = &#039;&#039;;&lt;br /&gt;
		for (var i = 0; i &amp;lt; names.length; i ++) {&lt;br /&gt;
			globalScopeCode += &#039;&#039; +&lt;br /&gt;
				&#039;if (typeof &#039; + names[i] + &#039; != \&#039;undefined\&#039;) {&#039; +&lt;br /&gt;
				&#039;  wikEd.wikiGlobals.&#039; + names[i] + &#039; = &#039; + names[i] + &#039;;&#039; +&lt;br /&gt;
				&#039;}&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		if (gotGlobalsHook !== undefined) {&lt;br /&gt;
			globalScopeCode += &#039;wikEd.ExecuteHook(wikEd.gotGlobalsHook[&#039; + (wikEd.gotGlobalsHook.length - 1) + &#039;], true);&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		eval(globalScopeCode);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// prepare code to be executed in global context for Greasemonkey&lt;br /&gt;
	if ( (window.postMessage === undefined) || (typeof JSON != &#039;object&#039;) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var globalScopeCode = &#039;var globalObj = {};&#039;;&lt;br /&gt;
	if (gotGlobalsHook !== undefined) {&lt;br /&gt;
		wikEd.gotGlobalsHook.push(gotGlobalsHook);&lt;br /&gt;
		globalScopeCode += &#039;globalObj.hookNumber = &#039; + (wikEd.gotGlobalsHook.length - 1) + &#039;;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	globalScopeCode += &#039;globalObj.scriptId = \&#039;wikEdGetGlobalScript&#039; + wikEd.getGlobalsCounter + &#039;\&#039;;&#039;;&lt;br /&gt;
	globalScopeCode += &#039;globalObj.wikEdGetGlobals = {};&#039;;&lt;br /&gt;
&lt;br /&gt;
	// add global scope variables&lt;br /&gt;
	for (var i = 0; i &amp;lt; names.length; i ++) {&lt;br /&gt;
		globalScopeCode += &#039;&#039; +&lt;br /&gt;
			&#039;if (typeof &#039; + names[i] + &#039; != \&#039;undefined\&#039;) {&#039; +&lt;br /&gt;
			&#039;  globalObj.wikEdGetGlobals[\&#039;&#039; + names[i] + &#039;\&#039;] = &#039; + names[i] + &#039;;&#039; +&lt;br /&gt;
			&#039;}&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	globalScopeCode += &#039;var globalObjStr = \&#039;wikEd:\&#039; + JSON.stringify(globalObj);&#039;;&lt;br /&gt;
	var origin = wikEd.pageOrigin;&lt;br /&gt;
	if (origin == &#039;file://&#039;) {&lt;br /&gt;
		origin = &#039;*&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	globalScopeCode += &#039;window.postMessage(globalObjStr, \&#039;&#039; + origin + &#039;\&#039;);&#039;;&lt;br /&gt;
&lt;br /&gt;
	// create head script to execute the code&lt;br /&gt;
	var script = document.createElement(&#039;script&#039;);&lt;br /&gt;
	script.id = &#039;wikEdGetGlobalScript&#039; + wikEd.getGlobalsCounter;&lt;br /&gt;
	wikEd.getGlobalsCounter ++;&lt;br /&gt;
	if (script.innerText !== undefined) {&lt;br /&gt;
		script.innerText = globalScopeCode;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		script.textContent = globalScopeCode;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.head.appendChild(script);&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetGlobalsReceiver: event handler for wikEd.GetGlobals postMessage (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetGlobalsReceiver = function (event) {&lt;br /&gt;
&lt;br /&gt;
	if (event.source != window) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if ( (event.origin != &#039;null&#039;) &amp;amp;&amp;amp; (event.origin != wikEd.pageOrigin) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (event.data !== &#039;&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// test if sent by wikEd&lt;br /&gt;
		if (/^wikEd:/.test(event.data) === false) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		event.stopPropagation();&lt;br /&gt;
		var data = event.data.replace(/wikEd:/, &#039;&#039;);&lt;br /&gt;
		var globalObj = JSON.parse(data);&lt;br /&gt;
		var globals = globalObj.wikEdGetGlobals;&lt;br /&gt;
		if (globals !== null) {&lt;br /&gt;
			for (var key in globals) {&lt;br /&gt;
				if (Object.prototype.hasOwnProperty.call(globals, key) === true) {&lt;br /&gt;
					wikEd.wikiGlobals[key] = globals[key];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// get MediaWiki file paths from wikiGlobals&lt;br /&gt;
			wikEd.GetPaths();&lt;br /&gt;
&lt;br /&gt;
			// run scheduled functions only once&lt;br /&gt;
			if ( (globalObj.hookNumber !== undefined) &amp;amp;&amp;amp; (wikEd.gotGlobalsHook[globalObj.hookNumber] !== undefined) ) {&lt;br /&gt;
				wikEd.ExecuteHook(wikEd.gotGlobalsHook[globalObj.hookNumber], true);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// clean up head script&lt;br /&gt;
			var script = document.getElementById(globalObj.scriptId);&lt;br /&gt;
			if (script !== null) {&lt;br /&gt;
				wikEd.head.removeChild(script);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetPreviousSiblingNode: getPreviousSibling, ignore non-element nodes such as comments&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetPreviousSiblingNode = function (node) {&lt;br /&gt;
&lt;br /&gt;
	while (node !== null) {&lt;br /&gt;
		node = node.previousSibling;&lt;br /&gt;
		if ( (node === null) || (node.nodeType == node.ELEMENT_NODE) ) {&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return node;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetNextSiblingNode: getNextSibling, ignore non-element nodes such as comments&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetNextSiblingNode = function (node) {&lt;br /&gt;
&lt;br /&gt;
	while (node !== null) {&lt;br /&gt;
		node = node.nextSibling;&lt;br /&gt;
		if ( (node === null) || (node.nodeType == node.ELEMENT_NODE) ) {&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return node;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetFirstChildNode: getFirstChild, ignore non-element nodes such as comments&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetFirstChildNode = function (node) {&lt;br /&gt;
&lt;br /&gt;
	if (node !== null) {&lt;br /&gt;
		node = node.firstChild;&lt;br /&gt;
		if ( (node !== null) &amp;amp;&amp;amp; (node.nodeType != node.ELEMENT_NODE) ) {&lt;br /&gt;
			node = wikEd.GetNextSiblingNode(node);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return node;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.GetLastChildNode: getLastChild, ignore non-element nodes such as comments&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.GetLastChildNode = function (node) {&lt;br /&gt;
&lt;br /&gt;
	if (node !== null) {&lt;br /&gt;
		node = node.lastChild;&lt;br /&gt;
		if ( (node !== null) &amp;amp;&amp;amp; (node.nodeType != node.ELEMENT_NODE) ) {&lt;br /&gt;
			node = wikEd.GetPreviousSiblingNode(node);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return node;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.CreateRandomString: create random string of specified length and character set (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.CreateRandomString = function (strLength, charSet) {&lt;br /&gt;
&lt;br /&gt;
	if (charSet === undefined) {&lt;br /&gt;
		charSet = &#039;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	var str = &#039;&#039;;&lt;br /&gt;
	for (var i = 0; i &amp;lt; strLength; i ++) {&lt;br /&gt;
		str += charSet.charAt(Math.floor(Math.random() * charSet.length));&lt;br /&gt;
	}&lt;br /&gt;
	return str;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.TabifyHTML: indent html for debugging&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.TabifyHTML = function (html) {&lt;br /&gt;
&lt;br /&gt;
	var indent = &#039;&#039;;&lt;br /&gt;
	var html = html.replace(/((&amp;lt;(\/)?(\w+)[^&amp;gt;]*&amp;gt;)(&amp;lt;!--(.|\n)*?--&amp;gt;)?)([^&amp;lt;]*)/g,&lt;br /&gt;
		function(p, p1, p2, p3, p4, p5, p6, p7) {&lt;br /&gt;
			var html = &#039;&#039;;&lt;br /&gt;
			var code = p1;&lt;br /&gt;
			var slash = p3;&lt;br /&gt;
			var tag = p4;&lt;br /&gt;
			var text = p7;&lt;br /&gt;
			if ( (slash == &#039;/&#039;) &amp;amp;&amp;amp; (indent === &#039;&#039;) ) {&lt;br /&gt;
				html += &#039;\n### Missing opening tag ###&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			if ( (slash == &#039;/&#039;) &amp;amp;&amp;amp; (indent.length &amp;gt; 0) ) {&lt;br /&gt;
				indent = indent.substr(0, indent.length - 1);&lt;br /&gt;
			}&lt;br /&gt;
			if ( (slash === &#039;&#039;) &amp;amp;&amp;amp; (tag.toLowerCase() == &#039;tr&#039;) ) {&lt;br /&gt;
				html += &#039;\n&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			html += &#039;\n&#039; + indent + code;&lt;br /&gt;
			if ( (slash === &#039;&#039;) &amp;amp;&amp;amp; (tag.toLowerCase() != &#039;br&#039;) ) {&lt;br /&gt;
				indent += &#039;\t&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			if (text !== &#039;&#039;) {&lt;br /&gt;
				text = text.replace(/\n(?!($))/g, &#039;\n&#039; + indent);&lt;br /&gt;
				html += &#039;\n&#039; + indent + text;&lt;br /&gt;
			}&lt;br /&gt;
			return html;&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	return html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.Debug: print the value of variables&lt;br /&gt;
//   use either a single value or a description followed by a value&lt;br /&gt;
//   popup = true: use alert popup if debug textarea is not yet setup&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.Debug = function (objectName, object, usePopup) {&lt;br /&gt;
&lt;br /&gt;
	// string&lt;br /&gt;
	var value = &#039;&#039;;&lt;br /&gt;
	if (typeof object == &#039;string&#039;) {&lt;br /&gt;
		value = &#039;: &#039; + &#039;&amp;quot;&#039; + object + &#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// objects&lt;br /&gt;
	else if (typeof object == &#039;object&#039;) {&lt;br /&gt;
&lt;br /&gt;
		// null&lt;br /&gt;
		if (object === null) {&lt;br /&gt;
			value = &#039;: [null]&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// whole highlighting parse tree array&lt;br /&gt;
		// { &#039;tag&#039;: , &#039;parent&#039;: , &#039;firstChild&#039;: , &#039;nextSibling&#039;: , &#039;start&#039;: , &#039;tagLength&#039;: , &#039;type&#039;: , &#039;paired&#039;: , &#039;pairedPos&#039;: , &#039;left&#039;: , &#039;right&#039;: , &#039;index&#039;: , &#039;attrib&#039;: , &#039;newline&#039;: }&lt;br /&gt;
		else if ( (typeof object[0] == &#039;object&#039;) &amp;amp;&amp;amp; (typeof object[0].type == &#039;string&#039;) ) {&lt;br /&gt;
			value = &#039;: Parse tree full:\n&#039;;&lt;br /&gt;
			for (var i = 0; i &amp;lt; object.length; i ++) {&lt;br /&gt;
				value += i + &#039;: &#039;;&lt;br /&gt;
				var node = object[i];&lt;br /&gt;
				if (node === null) {&lt;br /&gt;
					value += &#039;(null)\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					if (node.type == &#039;root&#039;) {&lt;br /&gt;
						value += &#039;[type: &amp;quot;&#039; + node.type + &#039;&amp;quot;]\n&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
						value += &#039;[type: &amp;quot;&#039; + node.type + &#039;&amp;quot;, tag: &amp;quot;&#039; + node.tag + &#039;&amp;quot;, start: &#039; + node.start + &#039;, tagLength: &#039; + node.tagLength + &#039;, parent: &#039; + node.parent;&lt;br /&gt;
						if (typeof node.left == &#039;string&#039;) {&lt;br /&gt;
							value += &#039;, left: &amp;quot;&#039; + node.left + &#039;&amp;quot;, right: &amp;quot;&#039; + node.right + &#039;&amp;quot;&#039;;&lt;br /&gt;
						}&lt;br /&gt;
						value += &#039;],\n&#039;;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// whole highlighting parse tree up&lt;br /&gt;
		else if ( (typeof object.tree == &#039;object&#039;) &amp;amp;&amp;amp; (typeof object.lastOpenNode == &#039;number&#039;) ) {&lt;br /&gt;
			value = &#039;: Parse tree upwards:\n&#039;;&lt;br /&gt;
			var parseTreeIndex = object.lastOpenNode;&lt;br /&gt;
			var node = object.tree[parseTreeIndex];&lt;br /&gt;
			while (node !== undefined) {&lt;br /&gt;
				if (node.type == &#039;root&#039;) {&lt;br /&gt;
					value += parseTreeIndex + &#039;: [type: &amp;quot;&#039; + node.type + &#039;&amp;quot;]\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
					value += parseTreeIndex + &#039;: [type: &amp;quot;&#039; + node.type + &#039;&amp;quot;, tag: &amp;quot;&#039; + node.tag + &#039;&amp;quot;, start: &#039; + node.start + &#039;, tagLength: &#039; + node.tagLength + &#039;, parent: &#039; + node.parent;&lt;br /&gt;
					if (typeof node.left == &#039;string&#039;) {&lt;br /&gt;
						value += &#039;, left: &amp;quot;&#039; + node.left + &#039;&amp;quot;, right: &amp;quot;&#039; + node.right + &#039;&amp;quot;&#039;;&lt;br /&gt;
					}&lt;br /&gt;
					value += &#039;],\n&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				if (node.parent == parseTreeIndex) {&lt;br /&gt;
					value += &#039;(circular reference, break)&#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
				parseTreeIndex = node.parent;&lt;br /&gt;
				node = object.tree[node.parent];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// highlighting parse tree node&lt;br /&gt;
		// { &#039;tag&#039;: , &#039;parent&#039;: , &#039;firstChild&#039;: , &#039;nextSibling&#039;: , &#039;start&#039;: , &#039;tagLength&#039;: , &#039;type&#039;: , &#039;paired&#039;: , &#039;pairedPos&#039;: , &#039;left&#039;: , &#039;right&#039;: , &#039;index&#039;: }&lt;br /&gt;
		else if (typeof object.tag == &#039;string&#039;) {&lt;br /&gt;
			var node = object;&lt;br /&gt;
			if (node.type == &#039;root&#039;) {&lt;br /&gt;
				value = &#039;: [type: &amp;quot;&#039; + node.type + &#039;&amp;quot;]&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				value = &#039;: [tag: &amp;quot;&#039; + node.tag + &#039;&amp;quot;, type: &amp;quot;&#039; + node.type + &#039;&amp;quot;, start: &#039; + node.start + &#039;, tagLength: &#039; + node.tagLength + &#039;, parent: &#039; + node.parent + &#039;]&#039;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// DOM nodes&lt;br /&gt;
		else if (typeof object.nodeName == &#039;string&#039;) {&lt;br /&gt;
			value = &#039;: [node; nodeName: &#039; + object.nodeName;&lt;br /&gt;
			if (typeof object.id == &#039;string&#039;) {&lt;br /&gt;
				if (object.id !== &#039;&#039;) {&lt;br /&gt;
					value += &#039;, id: &amp;quot;&#039; + object.id + &#039;&amp;quot;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (typeof object.className == &#039;string&#039;) {&lt;br /&gt;
				if (object.className !== &#039;&#039;) {&lt;br /&gt;
					value += &#039;, class: &amp;quot;&#039; + object.className + &#039;&amp;quot;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (typeof object.nodeValue == &#039;string&#039;) {&lt;br /&gt;
				value += &#039;, nodeValue: &amp;quot;&#039; + object.nodeValue + &#039;&amp;quot;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			if ( (typeof object.innerHTML == &#039;string&#039;) &amp;amp;&amp;amp; (object.innerHTML !== &#039;&#039;) ) {&lt;br /&gt;
				var html = object.innerHTML;&lt;br /&gt;
				if (html.length &amp;gt; wikEd.config.debugInnerHtmlLength) {&lt;br /&gt;
					html = html.substr(0, wikEd.config.debugInnerHtmlLength - 3) + &#039;...&#039;;&lt;br /&gt;
				}&lt;br /&gt;
				value += &#039;, innerHTML: &amp;quot;&#039; + html + &#039;&amp;quot;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			value += &#039;]&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// default&lt;br /&gt;
		else {&lt;br /&gt;
			value = &#039;: [&#039; + object + &#039;]&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// undefined&lt;br /&gt;
	else if (object === undefined) {&lt;br /&gt;
		value = &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// default&lt;br /&gt;
	else {&lt;br /&gt;
		value = &#039;: &#039; + object;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// use debug textarea&lt;br /&gt;
	var useDebug = false;&lt;br /&gt;
	if (wikEd.debug !== null) {&lt;br /&gt;
		useDebug = true;&lt;br /&gt;
	}&lt;br /&gt;
	if (useDebug === true) {&lt;br /&gt;
		if (wikEd.debugOpen === false) {&lt;br /&gt;
			wikEd.debugWrapper.style.display = &#039;block&#039;;&lt;br /&gt;
&lt;br /&gt;
			// resize fullscreen frame&lt;br /&gt;
			if (wikEd.fullscreen === true) {&lt;br /&gt;
				wikEd.ResizeWindowHandler();&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				window.scroll(0, wikEd.GetOffsetTop(wikEd.debug));&lt;br /&gt;
			}&lt;br /&gt;
			wikEd.debugOpen = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// cut text if having reached maximum length&lt;br /&gt;
		value = objectName + value + &#039;\n&#039;;&lt;br /&gt;
		if (wikEd.debug.value.length &amp;gt; wikEd.config.debugMaxLength) {&lt;br /&gt;
			wikEd.debug.value = value + wikEd.debug.value.substr(0, wikEd.config.debugMaxLength * 2 / 3);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			wikEd.debug.value = value + wikEd.debug.value;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// use popup alert&lt;br /&gt;
	else if (usePopup === true) {&lt;br /&gt;
		if (object === null) {&lt;br /&gt;
			window.alert(objectName);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			window.alert(objectName + &#039;: &#039; + value);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// use error console&lt;br /&gt;
	else {&lt;br /&gt;
		var msg;&lt;br /&gt;
		if (object === null) {&lt;br /&gt;
			msg = objectName;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			msg = objectName + &#039; &#039; + value;&lt;br /&gt;
		}&lt;br /&gt;
		wikEd.ConsoleLog(msg);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ConsoleLog: log message to console&lt;br /&gt;
//  mw.log no longer works&lt;br /&gt;
&lt;br /&gt;
wikEd.ConsoleLog = function (msg) {&lt;br /&gt;
&lt;br /&gt;
	if ( (typeof console == &#039;object&#039;) &amp;amp;&amp;amp; (typeof console.error == &#039;function&#039;) ) {&lt;br /&gt;
		console.error(&#039;[wikEd debug]&#039;, msg);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		msg = msg.replace(/\n/g, &#039;\\n&#039;);&lt;br /&gt;
		msg = msg.replace(/([\&#039;\&amp;quot;\\])/g, &#039;\\$1&#039;);&lt;br /&gt;
		window.setTimeout(&#039;throw new Error(\&#039;[wikEd debug] &#039; + msg + &#039;\&#039;)&#039;, 0);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.DebugTimer: show all measured timepoints&lt;br /&gt;
//   add a new time measurement: wikEd.debugTimer.push([1234, new Date]);&lt;br /&gt;
&lt;br /&gt;
wikEd.DebugTimer = function () {&lt;br /&gt;
&lt;br /&gt;
	var times = &#039;&#039;;&lt;br /&gt;
	var start = wikEd.debugTimer[0][1].getTime();&lt;br /&gt;
	var prev = 0;&lt;br /&gt;
	for (var i = 0; i &amp;lt; wikEd.debugTimer.length; i ++) {&lt;br /&gt;
		var curr = wikEd.debugTimer[i][1].getTime() - start;&lt;br /&gt;
		var diff = curr - prev;&lt;br /&gt;
		prev = curr;&lt;br /&gt;
		times += wikEd.debugTimer[i][0] + &#039;: &#039; + curr + &#039; ms (+ &#039; + diff + &#039; ms)\n&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	wikEd.Debug(times);&lt;br /&gt;
	wikEd.debugTimer = [];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InsertTags: overrides the insertTags function in wikibits.js used by the standard button toolbar and the editpage special chars&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InsertTags = function (openTag, closeTag, sampleText) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		wikEd.EditButton(document.getElementById(&#039;wikEdInsertTags&#039;), &#039;wikEdInsertTags&#039;, [openTag, closeTag, sampleText]);&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.InsertTagsOriginal !== null) {&lt;br /&gt;
		wikEd.InsertTagsOriginal(openTag, closeTag, sampleText);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InsertAtCursor: overrides the insertAtCursor function in wikia.com MediaWiki:Functions.js&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.InsertAtCursor = function (myField, myValue) {&lt;br /&gt;
&lt;br /&gt;
	if (wikEd.useWikEd === true) {&lt;br /&gt;
		if (myField == wikEd.textarea) {&lt;br /&gt;
			wikEd.EditButton(document.getElementById(&#039;wikEdInsertTags&#039;), &#039;wikEdInsertTags&#039;, [ myValue ]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else if (wikEd.InsertAtCursorOriginal !== null) {&lt;br /&gt;
		wikEd.InsertAtCursorOriginal(myField, myValue);&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.ExecuteHook: executes scheduled custom functions from functionsHook array (code copied to wikEdDiff.js)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
wikEd.ExecuteHook = function (functionsHook, onlyOnce) {&lt;br /&gt;
&lt;br /&gt;
	if (functionsHook === null) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	for (var i = 0; i &amp;lt; functionsHook.length; i ++) {&lt;br /&gt;
		if (typeof functionsHook[i] == &#039;function&#039;) {&lt;br /&gt;
			functionsHook[i]();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (onlyOnce === true) {&lt;br /&gt;
		functionsHook = [];&lt;br /&gt;
	}&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// wikEd.InitUnicode: define character tables used in wikEd.FixUnicode()&lt;br /&gt;
//   see http://kmi.open.ac.uk/projects/ceryle/doc/docs/NOTE-charents.html&lt;br /&gt;
&lt;br /&gt;
wikEd.InitUnicode = function () {&lt;br /&gt;
&lt;br /&gt;
	// define only once&lt;br /&gt;
	if (wikEd.supportedChars !== null) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// supported chars in Mozilla and IE&lt;br /&gt;
	wikEd.supportedChars = [&lt;br /&gt;
		[  &#039;a1&#039;, &#039;iexcl&#039;],  // ¡&lt;br /&gt;
		[  &#039;a2&#039;, &#039;cent&#039;],   // ¢&lt;br /&gt;
		[  &#039;a3&#039;, &#039;pound&#039;],  // £&lt;br /&gt;
		[  &#039;a4&#039;, &#039;curren&#039;], // ¤&lt;br /&gt;
		[  &#039;a5&#039;, &#039;yen&#039;],    // ¥&lt;br /&gt;
		[  &#039;a6&#039;, &#039;brvbar&#039;], // ¦&lt;br /&gt;
		[  &#039;a7&#039;, &#039;sect&#039;],   // §&lt;br /&gt;
		[  &#039;a8&#039;, &#039;uml&#039;],    // ¨&lt;br /&gt;
		[  &#039;a9&#039;, &#039;copy&#039;],   // ©&lt;br /&gt;
		[  &#039;aa&#039;, &#039;ordf&#039;],   // ª&lt;br /&gt;
		[  &#039;ab&#039;, &#039;laquo&#039;],  // «&lt;br /&gt;
		[  &#039;ac&#039;, &#039;not&#039;],    // ¬&lt;br /&gt;
		[  &#039;ae&#039;, &#039;reg&#039;],    // ®&lt;br /&gt;
		[  &#039;af&#039;, &#039;macr&#039;],   // ¯&lt;br /&gt;
		[  &#039;b0&#039;, &#039;deg&#039;],    // °&lt;br /&gt;
		[  &#039;b1&#039;, &#039;plusmn&#039;], // ±&lt;br /&gt;
		[  &#039;b2&#039;, &#039;sup2&#039;],   // ²&lt;br /&gt;
		[  &#039;b3&#039;, &#039;sup3&#039;],   // ³&lt;br /&gt;
		[  &#039;b4&#039;, &#039;acute&#039;],  // ´&lt;br /&gt;
		[  &#039;b5&#039;, &#039;micro&#039;],  // µ&lt;br /&gt;
		[  &#039;b6&#039;, &#039;para&#039;],   // ¶&lt;br /&gt;
		[  &#039;b7&#039;, &#039;middot&#039;], // ·&lt;br /&gt;
		[  &#039;b8&#039;, &#039;cedil&#039;],  // ¸&lt;br /&gt;
		[  &#039;b9&#039;, &#039;sup1&#039;],   // ¹&lt;br /&gt;
		[  &#039;ba&#039;, &#039;ordm&#039;],   // º&lt;br /&gt;
		[  &#039;bb&#039;, &#039;raquo&#039;],  // »&lt;br /&gt;
		[  &#039;bc&#039;, &#039;frac14&#039;], // ¼&lt;br /&gt;
		[  &#039;bd&#039;, &#039;frac12&#039;], // ½&lt;br /&gt;
		[  &#039;be&#039;, &#039;frac34&#039;], // ¾&lt;br /&gt;
		[  &#039;bf&#039;, &#039;iquest&#039;], // ¿&lt;br /&gt;
		[  &#039;c0&#039;, &#039;Agrave&#039;], // À&lt;br /&gt;
		[  &#039;c1&#039;, &#039;Aacute&#039;], // Á&lt;br /&gt;
		[  &#039;c2&#039;, &#039;Acirc&#039;],  // Â&lt;br /&gt;
		[  &#039;c3&#039;, &#039;Atilde&#039;], // Ã&lt;br /&gt;
		[  &#039;c4&#039;, &#039;Auml&#039;],   // Ä&lt;br /&gt;
		[  &#039;c5&#039;, &#039;Aring&#039;],  // Å&lt;br /&gt;
		[  &#039;c6&#039;, &#039;AElig&#039;],  // Æ&lt;br /&gt;
		[  &#039;c7&#039;, &#039;Ccedil&#039;], // Ç&lt;br /&gt;
		[  &#039;c8&#039;, &#039;Egrave&#039;], // È&lt;br /&gt;
		[  &#039;c9&#039;, &#039;Eacute&#039;], // É&lt;br /&gt;
		[  &#039;ca&#039;, &#039;Ecirc&#039;],  // Ê&lt;br /&gt;
		[  &#039;cb&#039;, &#039;Euml&#039;],   // Ë&lt;br /&gt;
		[  &#039;cc&#039;, &#039;Igrave&#039;], // Ì&lt;br /&gt;
		[  &#039;cd&#039;, &#039;Iacute&#039;], // Í&lt;br /&gt;
		[  &#039;ce&#039;, &#039;Icirc&#039;],  // Î&lt;br /&gt;
		[  &#039;cf&#039;, &#039;Iuml&#039;],   // Ï&lt;br /&gt;
		[  &#039;d0&#039;, &#039;ETH&#039;],    // Ð&lt;br /&gt;
		[  &#039;d1&#039;, &#039;Ntilde&#039;], // Ñ&lt;br /&gt;
		[  &#039;d2&#039;, &#039;Ograve&#039;], // Ò&lt;br /&gt;
		[  &#039;d3&#039;, &#039;Oacute&#039;], // Ó&lt;br /&gt;
		[  &#039;d4&#039;, &#039;Ocirc&#039;],  // Ô&lt;br /&gt;
		[  &#039;d5&#039;, &#039;Otilde&#039;], // Õ&lt;br /&gt;
		[  &#039;d6&#039;, &#039;Ouml&#039;],   // Ö&lt;br /&gt;
		[  &#039;d7&#039;, &#039;times&#039;],  // ×&lt;br /&gt;
		[  &#039;d8&#039;, &#039;Oslash&#039;], // Ø&lt;br /&gt;
		[  &#039;d9&#039;, &#039;Ugrave&#039;], // Ù&lt;br /&gt;
		[  &#039;da&#039;, &#039;Uacute&#039;], // Ú&lt;br /&gt;
		[  &#039;db&#039;, &#039;Ucirc&#039;],  // Û&lt;br /&gt;
		[  &#039;dc&#039;, &#039;Uuml&#039;],   // Ü&lt;br /&gt;
		[  &#039;dd&#039;, &#039;Yacute&#039;], // Ý&lt;br /&gt;
		[  &#039;de&#039;, &#039;THORN&#039;],  // Þ&lt;br /&gt;
		[  &#039;df&#039;, &#039;szlig&#039;],  // ß&lt;br /&gt;
		[  &#039;e0&#039;, &#039;agrave&#039;], // à&lt;br /&gt;
		[  &#039;e1&#039;, &#039;aacute&#039;], // á&lt;br /&gt;
		[  &#039;e2&#039;, &#039;acirc&#039;],  // â&lt;br /&gt;
		[  &#039;e3&#039;, &#039;atilde&#039;], // ã&lt;br /&gt;
		[  &#039;e4&#039;, &#039;auml&#039;],   // ä&lt;br /&gt;
		[  &#039;e5&#039;, &#039;aring&#039;],  // å&lt;br /&gt;
		[  &#039;e6&#039;, &#039;aelig&#039;],  // æ&lt;br /&gt;
		[  &#039;e7&#039;, &#039;ccedil&#039;], // ç&lt;br /&gt;
		[  &#039;e8&#039;, &#039;egrave&#039;], // è&lt;br /&gt;
		[  &#039;e9&#039;, &#039;eacute&#039;], // é&lt;br /&gt;
		[  &#039;ea&#039;, &#039;ecirc&#039;],  // ê&lt;br /&gt;
		[  &#039;eb&#039;, &#039;euml&#039;],   // ë&lt;br /&gt;
		[  &#039;ec&#039;, &#039;igrave&#039;], // ì&lt;br /&gt;
		[  &#039;ed&#039;, &#039;iacute&#039;], // í&lt;br /&gt;
		[  &#039;ee&#039;, &#039;icirc&#039;],  // î&lt;br /&gt;
		[  &#039;ef&#039;, &#039;iuml&#039;],   // ï&lt;br /&gt;
		[  &#039;f0&#039;, &#039;eth&#039;],    // ð&lt;br /&gt;
		[  &#039;f1&#039;, &#039;ntilde&#039;], // ñ&lt;br /&gt;
		[  &#039;f2&#039;, &#039;ograve&#039;], // ò&lt;br /&gt;
		[  &#039;f3&#039;, &#039;oacute&#039;], // ó&lt;br /&gt;
		[  &#039;f4&#039;, &#039;ocirc&#039;],  // ô&lt;br /&gt;
		[  &#039;f5&#039;, &#039;otilde&#039;], // õ&lt;br /&gt;
		[  &#039;f6&#039;, &#039;ouml&#039;],   // ö&lt;br /&gt;
		[  &#039;f7&#039;, &#039;divide&#039;], // ÷&lt;br /&gt;
		[  &#039;f8&#039;, &#039;oslash&#039;], // ø&lt;br /&gt;
		[  &#039;f9&#039;, &#039;ugrave&#039;], // ù&lt;br /&gt;
		[  &#039;fa&#039;, &#039;uacute&#039;], // ú&lt;br /&gt;
		[  &#039;fb&#039;, &#039;ucirc&#039;],  // û&lt;br /&gt;
		[  &#039;fc&#039;, &#039;uuml&#039;],   // ü&lt;br /&gt;
		[  &#039;fd&#039;, &#039;yacute&#039;], // ý&lt;br /&gt;
		[  &#039;fe&#039;, &#039;thorn&#039;],  // þ&lt;br /&gt;
		[  &#039;ff&#039;, &#039;yuml&#039;],   // ÿ&lt;br /&gt;
		[  &#039;27&#039;, &#039;apos&#039;],   // &#039;&lt;br /&gt;
		[  &#039;22&#039;, &#039;quot&#039;],   // &amp;quot;&lt;br /&gt;
		[ &#039;152&#039;, &#039;OElig&#039;],  // Œ&lt;br /&gt;
		[ &#039;153&#039;, &#039;oelig&#039;],  // œ&lt;br /&gt;
		[ &#039;160&#039;, &#039;Scaron&#039;], // Š&lt;br /&gt;
		[ &#039;161&#039;, &#039;scaron&#039;], // š&lt;br /&gt;
		[ &#039;178&#039;, &#039;Yuml&#039;],   // Ÿ&lt;br /&gt;
		[ &#039;2c6&#039;, &#039;circ&#039;],   // ˆ&lt;br /&gt;
		[ &#039;2dc&#039;, &#039;tilde&#039;],  // ˜&lt;br /&gt;
		[&#039;2013&#039;, &#039;ndash&#039;],  // –&lt;br /&gt;
		[&#039;2014&#039;, &#039;mdash&#039;],  // —&lt;br /&gt;
		[&#039;2018&#039;, &#039;lsquo&#039;],  // ‘&lt;br /&gt;
		[&#039;2019&#039;, &#039;rsquo&#039;],  // ’&lt;br /&gt;
		[&#039;201a&#039;, &#039;sbquo&#039;],  // ‚&lt;br /&gt;
		[&#039;201c&#039;, &#039;ldquo&#039;],  // “&lt;br /&gt;
		[&#039;201d&#039;, &#039;rdquo&#039;],  // ”&lt;br /&gt;
		[&#039;201e&#039;, &#039;bdquo&#039;],  // „&lt;br /&gt;
		[&#039;2020&#039;, &#039;dagger&#039;], // †&lt;br /&gt;
		[&#039;2021&#039;, &#039;Dagger&#039;], // ‡&lt;br /&gt;
		[&#039;2030&#039;, &#039;permil&#039;], // ‰&lt;br /&gt;
		[&#039;2039&#039;, &#039;lsaquo&#039;], // ‹&lt;br /&gt;
		[&#039;203a&#039;, &#039;rsaquo&#039;], // ›&lt;br /&gt;
		[&#039;20ac&#039;, &#039;euro&#039;],   // €&lt;br /&gt;
		[ &#039;192&#039;, &#039;fnof&#039;],   // ƒ&lt;br /&gt;
		[ &#039;391&#039;, &#039;Alpha&#039;],  // Α&lt;br /&gt;
		[ &#039;392&#039;, &#039;Beta&#039;],   // Β&lt;br /&gt;
		[ &#039;393&#039;, &#039;Gamma&#039;],  // Γ&lt;br /&gt;
		[ &#039;394&#039;, &#039;Delta&#039;],  // Δ&lt;br /&gt;
		[ &#039;395&#039;, &#039;Epsilon&#039;],// Ε&lt;br /&gt;
		[ &#039;396&#039;, &#039;Zeta&#039;],   // Ζ&lt;br /&gt;
		[ &#039;397&#039;, &#039;Eta&#039;],    // Η&lt;br /&gt;
		[ &#039;398&#039;, &#039;Theta&#039;],  // Θ&lt;br /&gt;
		[ &#039;399&#039;, &#039;Iota&#039;],   // Ι&lt;br /&gt;
		[ &#039;39a&#039;, &#039;Kappa&#039;],  // Κ&lt;br /&gt;
		[ &#039;39b&#039;, &#039;Lambda&#039;], // Λ&lt;br /&gt;
		[ &#039;39c&#039;, &#039;Mu&#039;],     // Μ&lt;br /&gt;
		[ &#039;39d&#039;, &#039;Nu&#039;],     // Ν&lt;br /&gt;
		[ &#039;39e&#039;, &#039;Xi&#039;],     // Ξ&lt;br /&gt;
		[ &#039;39f&#039;, &#039;Omicron&#039;],// Ο&lt;br /&gt;
		[ &#039;3a0&#039;, &#039;Pi&#039;],     // Π&lt;br /&gt;
		[ &#039;3a1&#039;, &#039;Rho&#039;],    // Ρ&lt;br /&gt;
		[ &#039;3a3&#039;, &#039;Sigma&#039;],  // Σ&lt;br /&gt;
		[ &#039;3a4&#039;, &#039;Tau&#039;],    // Τ&lt;br /&gt;
		[ &#039;3a5&#039;, &#039;Upsilon&#039;],// Υ&lt;br /&gt;
		[ &#039;3a6&#039;, &#039;Phi&#039;],    // Φ&lt;br /&gt;
		[ &#039;3a7&#039;, &#039;Chi&#039;],    // Χ&lt;br /&gt;
		[ &#039;3a8&#039;, &#039;Psi&#039;],    // Ψ&lt;br /&gt;
		[ &#039;3a9&#039;, &#039;Omega&#039;],  // Ω&lt;br /&gt;
		[ &#039;3b1&#039;, &#039;alpha&#039;],  // α&lt;br /&gt;
		[ &#039;3b2&#039;, &#039;beta&#039;],   // β&lt;br /&gt;
		[ &#039;3b3&#039;, &#039;gamma&#039;],  // γ&lt;br /&gt;
		[ &#039;3b4&#039;, &#039;delta&#039;],  // δ&lt;br /&gt;
		[ &#039;3b5&#039;, &#039;epsilon&#039;],// ε&lt;br /&gt;
		[ &#039;3b6&#039;, &#039;zeta&#039;],   // ζ&lt;br /&gt;
		[ &#039;3b7&#039;, &#039;eta&#039;],    // η&lt;br /&gt;
		[ &#039;3b8&#039;, &#039;theta&#039;],  // θ&lt;br /&gt;
		[ &#039;3b9&#039;, &#039;iota&#039;],   // ι&lt;br /&gt;
		[ &#039;3ba&#039;, &#039;kappa&#039;],  // κ&lt;br /&gt;
		[ &#039;3bb&#039;, &#039;lambda&#039;], // λ&lt;br /&gt;
		[ &#039;3bc&#039;, &#039;mu&#039;],     // μ&lt;br /&gt;
		[ &#039;3bd&#039;, &#039;nu&#039;],     // ν&lt;br /&gt;
		[ &#039;3be&#039;, &#039;xi&#039;],     // ξ&lt;br /&gt;
		[ &#039;3bf&#039;, &#039;omicron&#039;],// ο&lt;br /&gt;
		[ &#039;3c0&#039;, &#039;pi&#039;],     // π&lt;br /&gt;
		[ &#039;3c1&#039;, &#039;rho&#039;],    // ρ&lt;br /&gt;
		[ &#039;3c2&#039;, &#039;sigmaf&#039;], // ς&lt;br /&gt;
		[ &#039;3c3&#039;, &#039;sigma&#039;],  // σ&lt;br /&gt;
		[ &#039;3c4&#039;, &#039;tau&#039;],    // τ&lt;br /&gt;
		[ &#039;3c5&#039;, &#039;upsilon&#039;],// υ&lt;br /&gt;
		[ &#039;3c6&#039;, &#039;phi&#039;],    // φ&lt;br /&gt;
		[ &#039;3c7&#039;, &#039;chi&#039;],    // χ&lt;br /&gt;
		[ &#039;3c8&#039;, &#039;psi&#039;],    // ψ&lt;br /&gt;
		[ &#039;3c9&#039;, &#039;omega&#039;],  // ω&lt;br /&gt;
		[&#039;2022&#039;, &#039;bull&#039;],   // •&lt;br /&gt;
		[&#039;2026&#039;, &#039;hellip&#039;], // …&lt;br /&gt;
		[&#039;2032&#039;, &#039;prime&#039;],  // ′&lt;br /&gt;
		[&#039;2033&#039;, &#039;Prime&#039;],  // ″&lt;br /&gt;
		[&#039;203e&#039;, &#039;oline&#039;],  // ‾&lt;br /&gt;
		[&#039;2044&#039;, &#039;frasl&#039;],  // ⁄&lt;br /&gt;
		[&#039;2122&#039;, &#039;trade&#039;],  // ™&lt;br /&gt;
		[&#039;2190&#039;, &#039;larr&#039;],   // ←&lt;br /&gt;
		[&#039;2191&#039;, &#039;uarr&#039;],   // ↑&lt;br /&gt;
		[&#039;2192&#039;, &#039;rarr&#039;],   // →&lt;br /&gt;
		[&#039;2193&#039;, &#039;darr&#039;],   // ↓&lt;br /&gt;
		[&#039;2194&#039;, &#039;harr&#039;],   // ↔&lt;br /&gt;
		[&#039;21d2&#039;, &#039;rArr&#039;],   // ⇒&lt;br /&gt;
		[&#039;21d4&#039;, &#039;hArr&#039;],   // ⇔&lt;br /&gt;
		[&#039;2200&#039;, &#039;forall&#039;], // ∀&lt;br /&gt;
		[&#039;2202&#039;, &#039;part&#039;],   // ∂&lt;br /&gt;
		[&#039;2203&#039;, &#039;exist&#039;],  // ∃&lt;br /&gt;
		[&#039;2207&#039;, &#039;nabla&#039;],  // ∇&lt;br /&gt;
		[&#039;2208&#039;, &#039;isin&#039;],   // ∈&lt;br /&gt;
		[&#039;220b&#039;, &#039;ni&#039;],     // ∋&lt;br /&gt;
		[&#039;220f&#039;, &#039;prod&#039;],   // ∏&lt;br /&gt;
		[&#039;2211&#039;, &#039;sum&#039;],    // ∑&lt;br /&gt;
		[&#039;2212&#039;, &#039;minus&#039;],  // −&lt;br /&gt;
		[&#039;221a&#039;, &#039;radic&#039;],  // √&lt;br /&gt;
		[&#039;221d&#039;, &#039;prop&#039;],   // ∝&lt;br /&gt;
		[&#039;221e&#039;, &#039;infin&#039;],  // ∞&lt;br /&gt;
		[&#039;2220&#039;, &#039;ang&#039;],    // ∠&lt;br /&gt;
		[&#039;2227&#039;, &#039;and&#039;],    // ∧&lt;br /&gt;
		[&#039;2228&#039;, &#039;or&#039;],     // ∨&lt;br /&gt;
		[&#039;2229&#039;, &#039;cap&#039;],    // ∩&lt;br /&gt;
		[&#039;222a&#039;, &#039;cup&#039;],    // ∪&lt;br /&gt;
		[&#039;222b&#039;, &#039;int&#039;],    // ∫&lt;br /&gt;
		[&#039;2234&#039;, &#039;there4&#039;], // ∴&lt;br /&gt;
		[&#039;223c&#039;, &#039;sim&#039;],    // ∼&lt;br /&gt;
		[&#039;2248&#039;, &#039;asymp&#039;],  // ≈&lt;br /&gt;
		[&#039;2260&#039;, &#039;ne&#039;],     // ≠&lt;br /&gt;
		[&#039;2261&#039;, &#039;equiv&#039;],  // ≡&lt;br /&gt;
		[&#039;2264&#039;, &#039;le&#039;],     // ≤&lt;br /&gt;
		[&#039;2265&#039;, &#039;ge&#039;],     // ≥&lt;br /&gt;
		[&#039;2282&#039;, &#039;sub&#039;],    // ⊂&lt;br /&gt;
		[&#039;2283&#039;, &#039;sup&#039;],    // ⊃&lt;br /&gt;
		[&#039;2286&#039;, &#039;sube&#039;],   // ⊆&lt;br /&gt;
		[&#039;2287&#039;, &#039;supe&#039;],   // ⊇&lt;br /&gt;
		[&#039;2295&#039;, &#039;oplus&#039;],  // ⊕&lt;br /&gt;
		[&#039;25ca&#039;, &#039;loz&#039;],    // ◊&lt;br /&gt;
		[&#039;2660&#039;, &#039;spades&#039;], // ♠&lt;br /&gt;
		[&#039;2663&#039;, &#039;clubs&#039;],  // ♣&lt;br /&gt;
		[&#039;2665&#039;, &#039;hearts&#039;], // ♥&lt;br /&gt;
		[&#039;2666&#039;, &#039;diams&#039;]   // ♦&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	// reserved for internal wikEd use&lt;br /&gt;
	wikEd.reservedChars = [&lt;br /&gt;
		[  &#039;26&#039;, &#039;amp&#039;],    // &amp;amp;&lt;br /&gt;
		[  &#039;3c&#039;, &#039;lt&#039;],     // &amp;lt;&lt;br /&gt;
		[  &#039;3e&#039;, &#039;gt&#039;],     // &amp;gt;&lt;br /&gt;
		[  &#039;a0&#039;, &#039;nbsp&#039;]    //&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	// special chars (spaces and invisible characters)&lt;br /&gt;
	wikEd.specialChars = [&lt;br /&gt;
		[&#039;2002&#039;, &#039;ensp&#039;],   //   en space&lt;br /&gt;
		[  &#039;ad&#039;, &#039;shy&#039;],    // ­ soft hyphen&lt;br /&gt;
		[&#039;2003&#039;, &#039;emsp&#039;],   //   em space&lt;br /&gt;
		[&#039;2009&#039;, &#039;thinsp&#039;], //   thin space&lt;br /&gt;
		[&#039;200c&#039;, &#039;zwnj&#039;],   // ‌ zero width non-joiner&lt;br /&gt;
		[&#039;200d&#039;, &#039;zwj&#039;],    // ‍ zero width joiner&lt;br /&gt;
		[&#039;200e&#039;, &#039;lrm&#039;],    // ‎ left-to-right mark&lt;br /&gt;
		[&#039;200f&#039;, &#039;rlm&#039;]     // ‏ right-to-left mark&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	// unsupported chars in IE6&lt;br /&gt;
	wikEd.problemChars = [&lt;br /&gt;
		[ &#039;3d1&#039;, &#039;thetasym&#039;], // ϑ&lt;br /&gt;
		[ &#039;3d2&#039;, &#039;upsih&#039;],    // ϒ&lt;br /&gt;
		[ &#039;3d6&#039;, &#039;piv&#039;],      // ϖ&lt;br /&gt;
		[&#039;2118&#039;, &#039;weierp&#039;],   // ℘&lt;br /&gt;
		[&#039;2111&#039;, &#039;image&#039;],    // ℑ&lt;br /&gt;
		[&#039;211c&#039;, &#039;real&#039;],     // ℜ&lt;br /&gt;
		[&#039;2135&#039;, &#039;alefsym&#039;],  // ℵ&lt;br /&gt;
		[&#039;21b5&#039;, &#039;crarr&#039;],    // ↵&lt;br /&gt;
		[&#039;21d0&#039;, &#039;lArr&#039;],     // ⇐&lt;br /&gt;
		[&#039;21d1&#039;, &#039;uArr&#039;],     // ⇑&lt;br /&gt;
		[&#039;21d3&#039;, &#039;dArr&#039;],     // ⇓&lt;br /&gt;
		[&#039;2205&#039;, &#039;empty&#039;],    // ∅&lt;br /&gt;
		[&#039;2209&#039;, &#039;notin&#039;],    // ∉&lt;br /&gt;
		[&#039;2217&#039;, &#039;lowast&#039;],   // ∗&lt;br /&gt;
		[&#039;2245&#039;, &#039;cong&#039;],     // ≅&lt;br /&gt;
		[&#039;2284&#039;, &#039;nsub&#039;],     // ⊄&lt;br /&gt;
		[&#039;22a5&#039;, &#039;perp&#039;],     // ⊥&lt;br /&gt;
		[&#039;2297&#039;, &#039;otimes&#039;],   // ⊗&lt;br /&gt;
		[&#039;22c5&#039;, &#039;sdot&#039;],     // ⋅&lt;br /&gt;
		[&#039;2308&#039;, &#039;lceil&#039;],    // ⌈&lt;br /&gt;
		[&#039;2309&#039;, &#039;rceil&#039;],    // ⌉&lt;br /&gt;
		[&#039;230a&#039;, &#039;lfloor&#039;],   // ⌊&lt;br /&gt;
		[&#039;230b&#039;, &#039;rfloor&#039;],   // ⌋&lt;br /&gt;
		[&#039;2329&#039;, &#039;lang&#039;],     // 〈&lt;br /&gt;
		[&#039;232a&#039;, &#039;rang&#039;]      // 〉&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// index to all existing 253 HTML/XHTML character entities&lt;br /&gt;
	var allCharEntities = wikEd.supportedChars.concat(wikEd.reservedChars, wikEd.specialChars, wikEd.problemChars);&lt;br /&gt;
	for (var i = 0; i &amp;lt; allCharEntities.length; i ++) {&lt;br /&gt;
		wikEd.charEntitiesByName[ allCharEntities[i][1] ] = String.fromCharCode(parseInt(allCharEntities[i][0], 16));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// syntax highlighting of ASCII control characters and invisibles (decimal value, title)&lt;br /&gt;
	wikEd.controlCharHighlighting = {&lt;br /&gt;
		&#039;0&#039;: &#039;null&#039;,&lt;br /&gt;
		&#039;1&#039;: &#039;start of heading&#039;,&lt;br /&gt;
		&#039;2&#039;: &#039;start of text&#039;,&lt;br /&gt;
		&#039;3&#039;: &#039;end of text&#039;,&lt;br /&gt;
		&#039;4&#039;: &#039;end of transmission&#039;,&lt;br /&gt;
		&#039;5&#039;: &#039;enquiry&#039;,&lt;br /&gt;
		&#039;6&#039;: &#039;acknowledge&#039;,&lt;br /&gt;
		&#039;7&#039;: &#039;bell&#039;,&lt;br /&gt;
		&#039;8&#039;: &#039;backspace&#039;,&lt;br /&gt;
		&#039;11&#039;: &#039;vertical tab&#039;,&lt;br /&gt;
		&#039;12&#039;: &#039;form feed, new page&#039;,&lt;br /&gt;
		&#039;14&#039;: &#039;shift out&#039;,&lt;br /&gt;
		&#039;15&#039;: &#039;shift in&#039;,&lt;br /&gt;
		&#039;16&#039;: &#039;data link escape&#039;,&lt;br /&gt;
		&#039;17&#039;: &#039;device control 1&#039;,&lt;br /&gt;
		&#039;18&#039;: &#039;device control 2&#039;,&lt;br /&gt;
		&#039;19&#039;: &#039;device control 3&#039;,&lt;br /&gt;
		&#039;20&#039;: &#039;device control 4&#039;,&lt;br /&gt;
		&#039;21&#039;: &#039;negative acknowledge&#039;,&lt;br /&gt;
		&#039;22&#039;: &#039;synchronous idle&#039;,&lt;br /&gt;
		&#039;23&#039;: &#039;end of trans. block&#039;,&lt;br /&gt;
		&#039;24&#039;: &#039;cancel&#039;,&lt;br /&gt;
		&#039;25&#039;: &#039;end of medium&#039;,&lt;br /&gt;
		&#039;26&#039;: &#039;substitute&#039;,&lt;br /&gt;
		&#039;27&#039;: &#039;escape&#039;,&lt;br /&gt;
		&#039;28&#039;: &#039;file separator&#039;,&lt;br /&gt;
		&#039;29&#039;: &#039;group separator&#039;,&lt;br /&gt;
		&#039;30&#039;: &#039;record separator&#039;,&lt;br /&gt;
		&#039;31&#039;: &#039;unit separator&#039;,&lt;br /&gt;
		&#039;8204&#039;: &#039;zero width non-joiner&#039;, // \u200c&lt;br /&gt;
		&#039;8205&#039;: &#039;zero width joiner&#039;,     // \u200d&lt;br /&gt;
		&#039;8206&#039;: &#039;left-to-right mark&#039;,    // \u200e&lt;br /&gt;
		&#039;8207&#039;: &#039;right-to-left mark&#039;,    // \u200f&lt;br /&gt;
		&#039;8232&#039;: &#039;line separator&#039;,        // \u2028&lt;br /&gt;
		&#039;8233&#039;: &#039;paragraph separator&#039;    // \u2028&lt;br /&gt;
	};&lt;br /&gt;
	for (var decimalValue in wikEd.controlCharHighlighting) {&lt;br /&gt;
		if (Object.prototype.hasOwnProperty.call(wikEd.controlCharHighlighting, decimalValue) === true) {&lt;br /&gt;
			wikEd.controlCharHighlightingStr += &#039;\\&#039; + String.fromCharCode(decimalValue);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// character syntax highlighting: strange spaces, hyphens, and dashes (decimal value, class = title)&lt;br /&gt;
	wikEd.charHighlighting = {&lt;br /&gt;
		&#039;9&#039;:     &#039;tab&#039;,        // \u0009 &#039;	&#039;&lt;br /&gt;
		&#039;8194&#039;:  &#039;enSpace&#039;,    // \u2002 &#039; &#039;&lt;br /&gt;
		&#039;8195&#039;:  &#039;emSpace&#039;,    // \u2003 &#039; &#039;&lt;br /&gt;
		&#039;8201&#039;:  &#039;thinSpace&#039;,  // \u2009 &#039; &#039;&lt;br /&gt;
		&#039;12288&#039;: &#039;ideographicSpace&#039;, // \u3000 &#039;　&#039;&lt;br /&gt;
		&#039;45&#039;:    &#039;hyphenDash&#039;, // \u00a0 &#039;-&#039;&lt;br /&gt;
		&#039;173&#039;:   &#039;softHyphen&#039;, // \u00ad &#039;­&#039;&lt;br /&gt;
		&#039;8210&#039;:  &#039;figureDash&#039;, // \u2012 &#039;‒&#039;&lt;br /&gt;
		&#039;8211&#039;:  &#039;enDash&#039;,     // \u2013 &#039;–&#039;&lt;br /&gt;
		&#039;8212&#039;:  &#039;emDash&#039;,     // \u2014 &#039;—&#039;&lt;br /&gt;
		&#039;8213&#039;:  &#039;barDash&#039;,    // \u2015 &#039;―&#039;&lt;br /&gt;
		&#039;8722&#039;:  &#039;minusDash&#039;   // \u2212 &#039;−&#039;&lt;br /&gt;
	};&lt;br /&gt;
	for (var decimalValue in wikEd.charHighlighting) {&lt;br /&gt;
		if (Object.prototype.hasOwnProperty.call(wikEd.charHighlighting, decimalValue) === true) {&lt;br /&gt;
			wikEd.charHighlightingStr += &#039;\\&#039; + String.fromCharCode(decimalValue);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// UniCode support for regexps, without _0-9, from http://xregexp.com/addons/unicode/unicode-base.js v1.0.0&lt;br /&gt;
	wikEd.letters = &#039;0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05270531-055605590561-058705D0-05EA05F0-05F20620-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280840-085808A008A2-08AC0904-0939093D09500958-09610971-09770979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10CF10CF20D05-0D0C0D0E-0D100D12-0D3A0D3D0D4E0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC-0EDF0F000F40-0F470F49-0F6C0F88-0F8C1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510C710CD10D0-10FA10FC-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1BBA-1BE51C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11CF51CF61D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209C21022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2CF22CF32D00-2D252D272D2D2D30-2D672D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78B-A78EA790-A793A7A0-A7AAA7F8-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDAAE0-AAEAAAF2-AAF4AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC&#039;.replace(/(\w{4})/g, &#039;\\u$1&#039;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// call startup&lt;br /&gt;
wikEd.Startup();&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8251</id>
		<title>Help:沙盒</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Help:%E6%B2%99%E7%9B%92&amp;diff=8251"/>
		<updated>2016-11-26T14:03:12Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sandbox|id=&amp;lt;!--请在这行下方进行测试，请不要删除本行文字，谢谢。--&amp;gt;}}&lt;br /&gt;
测试编辑测试编辑测试编辑测试编辑测试编辑&lt;br /&gt;
测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑&lt;br /&gt;
测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑&lt;br /&gt;
测试编辑&lt;br /&gt;
测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑测试编辑&lt;br /&gt;
测试编辑&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8197</id>
		<title>Template:CASIO函数计算器</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8197"/>
		<updated>2016-08-26T12:36:01Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​重定向以方便编辑者// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[T:CASIO-FuncCalcs]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO-Calcs&amp;diff=8196</id>
		<title>Template:CASIO-Calcs</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO-Calcs&amp;diff=8196"/>
		<updated>2016-08-26T12:34:03Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​兼容性// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox | {{{1}}}&lt;br /&gt;
| name =CASIO-Calcs&lt;br /&gt;
| title = [[卡西欧|卡西欧计算器]]&lt;br /&gt;
| state = {{{state|autocollapse}}}&lt;br /&gt;
| listclass = hlist&lt;br /&gt;
| list1 = {{CASIO-FuncCalcs|child}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO-Calcs&amp;diff=8195</id>
		<title>Template:CASIO-Calcs</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO-Calcs&amp;diff=8195"/>
		<updated>2016-08-26T12:27:59Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​分离模板&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
| name =CASIO-Calcs&lt;br /&gt;
| title = [[卡西欧|卡西欧计算器]]&lt;br /&gt;
| state = {{{state|autocollapse}}}&lt;br /&gt;
| listclass = hlist&lt;br /&gt;
| list1 = {{CASIO-FuncCalcs|child}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO-FuncCalcs&amp;diff=8194</id>
		<title>Template:CASIO-FuncCalcs</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO-FuncCalcs&amp;diff=8194"/>
		<updated>2016-08-26T12:27:30Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox | {{{1}}}&lt;br /&gt;
| name =CASIO-FuncCalcs&lt;br /&gt;
| title = [[卡西欧|卡西欧]][[计算器#.E5.87.BD.E6.95.B0.E8.AE.A1.E7.AE.97.E5.99.A8|函数计算器]]&lt;br /&gt;
| state = {{{state|autocollapse}}}&lt;br /&gt;
| listclass = hlist&lt;br /&gt;
| group1 = 基本系列| list1 = [[Fx-82]]{{·}}[[Fx-290]]{{·}}[[Fx-991]]&lt;br /&gt;
| group2 = MS系列| list2 = [[Fx-82MS]]{{·}}[[Fx-95MS]]{{·}}[[Fx-991MS]]&lt;br /&gt;
| group3 = ES系列| list3 = [[Fx-82ES]]{{·}}[[Fx-95ES]]{{·}}[[Fx-991ES]]&lt;br /&gt;
| group4 = ES Plus系列| list4 = [[Fx-82ES Plus]]{{·}}[[Fx-82ES Plus A]]{{·}}[[Fx-95ES Plus]]{{·}}[[Fx-991ES Plus]]&lt;br /&gt;
| group5 = [[卡西欧Classwiz系列|ClassWiz系列]]| list5 = [[Fx-82 CNX]]{{·}}[[Fx-95 CNX]]{{·}}[[Fx-991CN X]]{{·}}[[Fx-991EX]]{{·}}[[Fx-JP900]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO-FuncCalcs&amp;diff=8193</id>
		<title>Template:CASIO-FuncCalcs</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO-FuncCalcs&amp;diff=8193"/>
		<updated>2016-08-26T12:26:08Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox | child&lt;br /&gt;
| name =CASIO-FuncCalcs&lt;br /&gt;
| title = [[卡西欧|卡西欧]][[计算器#.E5.87.BD.E6.95.B0.E8.AE.A1.E7.AE.97.E5.99.A8|函数计算器]]&lt;br /&gt;
| state = {{{state|autocollapse}}}&lt;br /&gt;
| listclass = hlist&lt;br /&gt;
| group1 = 基本系列| list1 = [[Fx-82]]{{·}}[[Fx-290]]{{·}}[[Fx-991]]&lt;br /&gt;
| group2 = MS系列| list2 = [[Fx-82MS]]{{·}}[[Fx-95MS]]{{·}}[[Fx-991MS]]&lt;br /&gt;
| group3 = ES系列| list3 = [[Fx-82ES]]{{·}}[[Fx-95ES]]{{·}}[[Fx-991ES]]&lt;br /&gt;
| group4 = ES Plus系列| list4 = [[Fx-82ES Plus]]{{·}}[[Fx-82ES Plus A]]{{·}}[[Fx-95ES Plus]]{{·}}[[Fx-991ES Plus]]&lt;br /&gt;
| group5 = [[卡西欧Classwiz系列|ClassWiz系列]]| list5 = [[Fx-82 CNX]]{{·}}[[Fx-95 CNX]]{{·}}[[Fx-991CN X]]{{·}}[[Fx-991EX]]{{·}}[[Fx-JP900]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO-FuncCalcs&amp;diff=8192</id>
		<title>Template:CASIO-FuncCalcs</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO-FuncCalcs&amp;diff=8192"/>
		<updated>2016-08-26T12:22:42Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​尝试分离模板&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
| name =CASIO-FuncCalcs&lt;br /&gt;
| title = [[卡西欧|卡西欧]][[计算器#.E5.87.BD.E6.95.B0.E8.AE.A1.E7.AE.97.E5.99.A8|函数计算器]]&lt;br /&gt;
| state = {{{state|autocollapse}}}&lt;br /&gt;
| listclass = hlist&lt;br /&gt;
| group1 = 基本系列| list1 = [[Fx-82]]{{·}}[[Fx-290]]{{·}}[[Fx-991]]&lt;br /&gt;
| group2 = MS系列| list2 = [[Fx-82MS]]{{·}}[[Fx-95MS]]{{·}}[[Fx-991MS]]&lt;br /&gt;
| group3 = ES系列| list3 = [[Fx-82ES]]{{·}}[[Fx-95ES]]{{·}}[[Fx-991ES]]&lt;br /&gt;
| group4 = ES Plus系列| list4 = [[Fx-82ES Plus]]{{·}}[[Fx-82ES Plus A]]{{·}}[[Fx-95ES Plus]]{{·}}[[Fx-991ES Plus]]&lt;br /&gt;
| group5 = [[卡西欧Classwiz系列|ClassWiz系列]]| list5 = [[Fx-82 CNX]]{{·}}[[Fx-95 CNX]]{{·}}[[Fx-991CN X]]{{·}}[[Fx-991EX]]{{·}}[[Fx-JP900]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8191</id>
		<title>Template:CASIO计算器</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO%E8%AE%A1%E7%AE%97%E5%99%A8&amp;diff=8191"/>
		<updated>2016-08-26T12:19:57Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​创建重定向模板以方便编辑者&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[模板:CASIO-Calcs]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=Template:CASIO-Calcs&amp;diff=8190</id>
		<title>Template:CASIO-Calcs</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=Template:CASIO-Calcs&amp;diff=8190"/>
		<updated>2016-08-26T12:15:16Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​将换行改成分隔符，减小此模板高度&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
| name =CASIO-Calcs&lt;br /&gt;
| title = [[卡西欧|卡西欧计算器]]&lt;br /&gt;
| state = {{{state|autocollapse}}}&lt;br /&gt;
| listclass = hlist&lt;br /&gt;
|above = [[卡西欧函数机功能对比|函数机]]&lt;br /&gt;
| group1 = 基本系列| list1 = [[Fx-82]]{{·}}[[Fx-290]]{{·}}[[Fx-991]]&lt;br /&gt;
| group2 = MS系列| list2 = [[Fx-82MS]]{{·}}[[Fx-95MS]]{{·}}[[Fx-991MS]]&lt;br /&gt;
| group3 = ES系列| list3 = [[Fx-82ES]]{{·}}[[Fx-95ES]]{{·}}[[Fx-991ES]]&lt;br /&gt;
| group4 = ES Plus系列| list4 = [[Fx-82ES Plus]]{{·}}[[Fx-82ES Plus A]]{{·}}[[Fx-95ES Plus]]{{·}}[[Fx-991ES Plus]]&lt;br /&gt;
| group5 = [[卡西欧Classwiz系列|ClassWiz系列]]| list5 = [[Fx-82 CNX]]{{·}}[[Fx-95 CNX]]{{·}}[[Fx-991CN X]]{{·}}[[Fx-991EX]]{{·}}[[Fx-JP900]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=MediaWiki:Copyright/zh-CN&amp;diff=8170</id>
		<title>MediaWiki:Copyright/zh-CN</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=MediaWiki:Copyright/zh-CN&amp;diff=8170"/>
		<updated>2016-08-16T11:24:34Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​创建页面，内容为“&amp;lt;span class=&amp;quot;copyright&amp;quot;&amp;gt;本站全部内容禁止商业使用&amp;lt;br/&amp;gt; 文本内容除另有声明外,均在$1下提供,附加条款亦可能应用&amp;lt;br/&amp;gt; 其他类型作...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;copyright&amp;quot;&amp;gt;本站全部内容禁止商业使用&amp;lt;br/&amp;gt;&lt;br /&gt;
文本内容除另有声明外,均在$1下提供,附加条款亦可能应用&amp;lt;br/&amp;gt;&lt;br /&gt;
其他类型作品版权归属原作者，如有授权遵照授权协议使用&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://www.miibeian.gov.cn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;赣ICP备16001921号-2&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;var cnzz_protocol = ((&amp;quot;https:&amp;quot; == document.location.protocol) ? &amp;quot; https://&amp;quot; : &amp;quot; http://&amp;quot;);document.write(unescape(&amp;quot;%3Cspan id=&#039;cnzz_stat_icon_1257477062&#039;%3E%3C/span%3E%3Cscript src=&#039;&amp;quot; + cnzz_protocol + &amp;quot;s11.cnzz.com/z_stat.php%3Fid%3D1257477062%26show%3Dpic&#039; type=&#039;text/javascript&#039;%3E%3C/script%3E&amp;quot;));&amp;lt;/script&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=ES%E7%B3%BB%E5%88%97%E5%BC%82%E5%B8%B8%E5%BA%94%E7%94%A8/68%E6%A8%A1%E5%BC%8F&amp;diff=8168</id>
		<title>ES系列异常应用/68模式</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=ES%E7%B3%BB%E5%88%97%E5%BC%82%E5%B8%B8%E5%BA%94%E7%94%A8/68%E6%A8%A1%E5%BC%8F&amp;diff=8168"/>
		<updated>2016-08-15T02:08:11Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{来源于f吧 &lt;br /&gt;
|来源帖链接=&amp;lt;!-- 在这里填写来源贴地址，一般把浏览器地址栏里对应贴吧页面的地址复制过来就可以，如果你不知道来源贴地址，请留空 --&amp;gt;&lt;br /&gt;
|发现者=&amp;lt;!-- 在这里填写最初发现者的百度贴吧ID，一般把百度ID复制过来就可以，如果你不知道最初发现者的信息，请留空 --&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 异常表现 ==&lt;br /&gt;
&amp;lt;!-- 在这里填写计算器异常的表现 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重启后历史记录里保存的运算记录不会清除。&lt;br /&gt;
== 操作方法 ==&lt;br /&gt;
&amp;lt;!-- 在这里填写进入该异常模式的方法 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.刷出[[r]]；&lt;br /&gt;
&lt;br /&gt;
2.在[[r]]前打“111+111+111”，[=]；&lt;br /&gt;
&lt;br /&gt;
3.删掉“111+111+111”，打出“Mgg”（g是[SHIFT]，[Ans]里的第三个）；&lt;br /&gt;
&lt;br /&gt;
4.光标移动到最前面，按6个[分数线]，死机后按[ON]，此时68模式已经进入。&lt;br /&gt;
== 注意 ==&lt;br /&gt;
&amp;lt;!-- 如果您需要添加其他标题请修改此标题为您需要添加的标题 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 如果您不需要添加其他标题，你应该删除此标题 --&amp;gt;&lt;br /&gt;
1.ES系列68模式只能是线性模式。&lt;br /&gt;
&lt;br /&gt;
2.如果切换到其他模式，保留的内容会消失。如果想保留内容到数学模式，请恢复原始设置（[SHIFT]，[9]，[1]，[=]，[AC])。&lt;br /&gt;
&lt;br /&gt;
== 参考 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[分类:计算器异常]]&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=MediaWiki:Gadget-popups.css&amp;diff=8165</id>
		<title>MediaWiki:Gadget-popups.css</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=MediaWiki:Gadget-popups.css&amp;diff=8165"/>
		<updated>2016-08-14T19:17:26Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​移动到本地服务器上&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 2016-8-15 搬运自 英文维基百科 ，请注意以下代码使用 CC-BY-SA 3.0 协议授权 */&lt;br /&gt;
/* https://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-navpop.css&amp;amp;action=edit */&lt;br /&gt;
&lt;br /&gt;
a.popupMoreLink {&lt;br /&gt;
  display: block;&lt;br /&gt;
  text-align: right;&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ins.popupDiff {&lt;br /&gt;
  background: #afe;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
del.popupDiff {&lt;br /&gt;
  background: #ffe6e6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#selectionPreview {&lt;br /&gt;
  /*&lt;br /&gt;
  overflow: auto;&lt;br /&gt;
  max-height: 16ex;&lt;br /&gt;
  */&lt;br /&gt;
  border: 2px solid #ddd;&lt;br /&gt;
  background-color: #eef;&lt;br /&gt;
  padding: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpopup {&lt;br /&gt;
  border: 1px solid #bbb;&lt;br /&gt;
  background-color: #fff;&lt;br /&gt;
  padding: 10px;&lt;br /&gt;
  padding-bottom: 5px;&lt;br /&gt;
  font-size: 11px;&lt;br /&gt;
  box-shadow: 0 3px 8px rgba( 50, 50, 50, 0.35 );&lt;br /&gt;
  /* opacity: 0.9; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpopup hr {&lt;br /&gt;
  color: #aaa !important;&lt;br /&gt;
  background-color: #aaa !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Configure Drag bar color */&lt;br /&gt;
.popupDrag {&lt;br /&gt;
  background-color: #ffbe20;&lt;br /&gt;
  height: 5px;&lt;br /&gt;
  margin-top: -5px;&lt;br /&gt;
  margin-bottom: 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popupDragHandle {&lt;br /&gt;
  cursor: move;&lt;br /&gt;
  position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* menu magic - many thanks to [[User:Zocky]]! */&lt;br /&gt;
&lt;br /&gt;
/* popups */&lt;br /&gt;
.popup_menu li {&lt;br /&gt;
  margin: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_menu {&lt;br /&gt;
  display: none;&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  margin-top: 1em;&lt;br /&gt;
  line-height: 1.25em;&lt;br /&gt;
  list-style-type: none;&lt;br /&gt;
  top: 0.1em;&lt;br /&gt;
  z-index: 2;&lt;br /&gt;
  width: 10em;&lt;br /&gt;
  background: white;&lt;br /&gt;
  border: 1px solid grey;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  margin-left: -6px;&lt;br /&gt;
  margin-top: 1em;&lt;br /&gt;
  border-width: 1px 1px 1px 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_menu a {&lt;br /&gt;
  display: block;&lt;br /&gt;
  padding: 3px;&lt;br /&gt;
  color: #555;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_menu_row a {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_menu_row {&lt;br /&gt;
  list-style: none;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  color: #aaa;&lt;br /&gt;
  /* border: 1px solid red; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_drop {&lt;br /&gt;
  display: inline;&lt;br /&gt;
  position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_drop a,&lt;br /&gt;
.popup_drop a:visited {&lt;br /&gt;
  padding: 3px;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_drop:hover .popup_menu,&lt;br /&gt;
.popup_drop .popup_menu:hover {&lt;br /&gt;
  display: inline;&lt;br /&gt;
  background: white;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  color: #555;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_drop:hover {&lt;br /&gt;
  background: #ccf;&lt;br /&gt;
  color: #44f;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* other colours, styles and so on */&lt;br /&gt;
.popup_menu a:hover {&lt;br /&gt;
  background: grey;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_mainlink {&lt;br /&gt;
  font-size: 140%;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_mainlink a {&lt;br /&gt;
  color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.popup_change_title_link {&lt;br /&gt;
  color: #152;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_diff_dates {&lt;br /&gt;
  font-style: italic;&lt;br /&gt;
  background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_menu_item {&lt;br /&gt;
  list-style: none;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
  margin: 0;&lt;br /&gt;
  /* border: 1px solid green; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_menu_item a {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_history_row_even {&lt;br /&gt;
  background: #eee;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popup_history_date {&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  font-size: 120%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* disable interwiki styling */&lt;br /&gt;
.popupPreview a.extiw,&lt;br /&gt;
.popupPreview a.extiw:active {&lt;br /&gt;
  color: #36b;&lt;br /&gt;
  background: none;&lt;br /&gt;
  padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.popupPreview a.external {&lt;br /&gt;
  color: #36b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* this can be used in the content area to switch off&lt;br /&gt;
special external link styling */&lt;br /&gt;
.popupPreview .plainlinks a {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8164</id>
		<title>计算器百科:公告板/公告</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E5%85%AC%E5%91%8A%E6%9D%BF/%E5%85%AC%E5%91%8A&amp;diff=8164"/>
		<updated>2016-08-14T19:03:12Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​// Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{公告板|4|歡迎使用{{tl|第一次计算器异常搬运新帖模板}}搬運更多異常研究成果。}}&lt;br /&gt;
{{公告板|1| [http://calcwiki.org Calcwiki.org 域名]现已经可用。}}&lt;br /&gt;
{{公告板|1| [[计算器百科:首页|计算器百科]]现已搬运到国内服务器。}}&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E7%9B%97%E7%89%88%E8%AE%A1%E7%AE%97%E5%99%A8%E9%89%B4%E5%88%AB%E6%96%B9%E6%B3%95&amp;diff=8096</id>
		<title>盗版计算器鉴别方法</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E7%9B%97%E7%89%88%E8%AE%A1%E7%AE%97%E5%99%A8%E9%89%B4%E5%88%AB%E6%96%B9%E6%B3%95&amp;diff=8096"/>
		<updated>2016-08-06T15:05:42Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​按键标记/* 精度法 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{不完整|添加一些计算器异常的条目，并加入到{{分类|计算器异常}}中|添加计算器自检相关条目，并加入到{{分类|计算器自检}}中|明确计算器电池信息}}&lt;br /&gt;
因为卡西欧计算器[[ES系列]]和[[MS系列]]的{{PlainLink|[https://calcwiki.org/%E8%AE%A1%E7%AE%97%E5%99%A8#.E7.9B.97.E7.89.88.E8.AE.A1.E7.AE.97.E5.99.A8 盗版]}}较多，购买时需要仔细甄别，以免受到{{PlainLink|[https://calcwiki.org/%E8%AE%A1%E7%AE%97%E5%99%A8#.E5.B1.B1.E5.AF.A8.E8.AE.A1.E7.AE.97.E5.99.A8.E5.92.8C.E7.9B.97.E7.89.88.E8.AE.A1.E7.AE.97.E5.99.A8.E7.9A.84.E5.8D.B1.E5.AE.B3 盗版计算器的危害]}}。针对这个问题，也有以下鉴别方法可供参考。&lt;br /&gt;
== 現狀 ==&lt;br /&gt;
迄今为止，Classwiz系列，ES PLUS A系列，带P和F的编程系列(fx-3650P和fx-4500PA除外，已发现盗版；更早的编程机可能也有盗版)，FC开头的金融系列等暂未发现盗版，一般为正版。&lt;br /&gt;
&lt;br /&gt;
==外观法==&lt;br /&gt;
&lt;br /&gt;
盗版计算器常常质量低劣，不少盗版计算器从外观上就能看出问题。比如:&lt;br /&gt;
&lt;br /&gt;
*键盘上的字符印刷歪斜，不端正，字体不正确（尤其是&amp;quot;fx&amp;quot;很容易字体不正确）；&lt;br /&gt;
*计算器材质不佳，易于损坏，或者摸起来不舒服；&lt;br /&gt;
*显示屏颜色不对或者最上一行的指示灯字体不对，看着不舒服；&lt;br /&gt;
*显示屏安装位置不正或屏幕不稳固；&lt;br /&gt;
*计算器闻起来有股强烈的塑料味，或其他异味等。&lt;br /&gt;
&lt;br /&gt;
这些都是盗版计算器的特征，但盗版计算器不一定都拥有这些特征。因此除非是经常鉴别盗版计算器的专业人士，一般消费者很难第一眼就辨别出真假。&lt;br /&gt;
&lt;br /&gt;
==“四按一松”法==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039;此方法只支持ES及以上系列的计算器（包括[[ES系列]]、[[ES PLUS系列]]和[[ClassWiz]]系列），如果您使用的是低于ES系列的[[MS系列|MS]]/[[TL系列|TL]]等系列计算器，可以尝试异常法。&lt;br /&gt;
&lt;br /&gt;
此方法十分准确。&lt;br /&gt;
&lt;br /&gt;
操作:依次按住计算器底部的 {{Key|1}}{{Key|0}}{{Key|equal}}{{Key|-}} ，然后松开 1 ，如果屏幕上显示&amp;quot;1cos(&amp;quot;，则&#039;&#039;&#039;一定&#039;&#039;&#039;为正版。&lt;br /&gt;
&lt;br /&gt;
==精度法==&lt;br /&gt;
&lt;br /&gt;
盗版计算器和正版计算器精度略有不同，这点可以用来鉴别正版和盗版。&lt;br /&gt;
&lt;br /&gt;
使用三角函数:（角度单位必须设置为“角度制”（Deg），屏幕上显示“DEG”或者“D”。）&lt;br /&gt;
&lt;br /&gt;
键入“sin&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;(cos&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;(tan&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;(tan(cos(sin(9”，即：&lt;br /&gt;
{{Key|shift}}{{Key|sin}}(sin&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;){{Key|shift}}{{Key|cos}}(cos&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;){{Key|shift}}{{Key|tan}}(tan&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;){{Key|tan}}{{Key|cos}}{{Key|sin}}{{Key|9}}{{Key|equal}}。&lt;br /&gt;
&lt;br /&gt;
*ES/ES PLUS/MS PLUS系列以及之后的计算器将显示:&lt;br /&gt;
&lt;br /&gt;
 9.000000007 &lt;br /&gt;
&lt;br /&gt;
*MS/TL/W等老版本将显示:&lt;br /&gt;
&lt;br /&gt;
 8.999998637 &lt;br /&gt;
&lt;br /&gt;
*如果不是以上结果，则一定是盗版。&lt;br /&gt;
&lt;br /&gt;
注意:&lt;br /&gt;
*&#039;&#039;&#039;部分更老版本可能是 9.000015685 或者其他数字。&lt;br /&gt;
*卡西欧图形计算器fx-7400GII/9750GII/9860G/9860GII系列（简称“9系”）的三角函数精度检测数值为8.999999998，但是目前9系图形计算器尚无盗版，可放心使用。&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
如果计算结果是诸如 0.424777... 这类的，则角度单位设置不对，应该是角度制（Deg）而计算器当前状态是弧度制（Rad），请修改角度单位后再试一遍。&lt;br /&gt;
&lt;br /&gt;
以下提供部分盗版精度，仅供参考:&lt;br /&gt;
&lt;br /&gt;
 8.999999998 &lt;br /&gt;
 8.999999999 &lt;br /&gt;
 9.000000001&lt;br /&gt;
&lt;br /&gt;
==电池法==&lt;br /&gt;
&lt;br /&gt;
（以下只谈论在中国大陆发行函数计算器的型号，从TL开始。）&lt;br /&gt;
&lt;br /&gt;
CASIO以下型号计算器均使用AA电池(即5号电池):&lt;br /&gt;
*fx-82TL/fx-100W&lt;br /&gt;
*fx-82MS/fx-95MS/fx-100MS&lt;br /&gt;
*fx-220 PLUS&lt;br /&gt;
&lt;br /&gt;
CASIO以下型号计算器均使用AAA电池(即7号电池):&lt;br /&gt;
*fx-82ES/fx-350ES/fx-500ES&lt;br /&gt;
*fx-82ES PLUS/fx-82ES PLUS A/fx-95ES PLUS/fx-350ES PLUS&lt;br /&gt;
*fx-82CN X/fx-95CN X/fx-350CN X&lt;br /&gt;
&lt;br /&gt;
CASIO以下型号计算器均使用LR44电池(即纽扣电池):&lt;br /&gt;
*fx-350TL/fx-570W/fx-991W&lt;br /&gt;
*fx-83MS/fx-85MS/fx-115MS/fx-270MS/fx-300MS/fx-350MS/fx-570MS/fx-991MS&lt;br /&gt;
*fx-350MS PLUS&lt;br /&gt;
*fx-991ES&lt;br /&gt;
*fx-991ES PLUS&lt;br /&gt;
*fx-991CN X&lt;br /&gt;
&lt;br /&gt;
如果发现上述计算器型号电池与上述不符，一般可以判定为盗版(建议结合其它方法，这个方法目前来说也有不准的时候)。&lt;br /&gt;
&lt;br /&gt;
==拆机法==&lt;br /&gt;
拆机之后基本上可以判定是不是假货:&lt;br /&gt;
#看黑胶是否光滑，卡西欧计算器通常（早期型号也使用过塑封）使用&#039;&#039;&#039;光滑&#039;&#039;&#039;的黑胶来封装芯片，如果看到磨砂黑胶则可判定为盗版；&lt;br /&gt;
#看电路板印刷是否完整，如果电路板上空空荡荡或元件标记很少，特别是最下方没有LY-XXX或GY-XXX之类的内部型号，则一定是盗版；&lt;br /&gt;
#看电源线颜色是否不同，如果两根电源线颜色一样，则一定是盗版；&lt;br /&gt;
#看焊点是否光滑，如果看到电路板质量欠佳，则很可能是盗版；&lt;br /&gt;
#看电路板大小，若拆机之后发现电路板仅占计算器内部空间的很小一部分，则一定是盗版；&lt;br /&gt;
#如果电路板上焊接了一大块纽扣电池电池盒，则一定是盗版。&lt;br /&gt;
&lt;br /&gt;
==自检法==&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039;此方法只支持[[MS系列]],[[ES系列]]和[[ES PLUS]]系列的计算器。&lt;br /&gt;
&lt;br /&gt;
此方法准确度高，操作简单。&lt;br /&gt;
&amp;lt;!-- &#039;&#039;关于计算器自检的更多信息，请参考{{分类|计算器自检}}&#039;&#039; --&amp;gt;&lt;br /&gt;
===针对MS系列的自检法===&lt;br /&gt;
操作：&lt;br /&gt;
&lt;br /&gt;
1.按住2和COS，同时按住ON.若此时计算器黑屏，随后白屏，随后出现一道亮线滚动，则一定是盗版---正版计算器无反应。&lt;br /&gt;
&lt;br /&gt;
2.若第一步中计算器无反应，则按住 SHIFT 和 7 ，同时按一下 ON。若此时计算器仍无反应，则一定是盗版。&lt;br /&gt;
&lt;br /&gt;
3.若上一步操作中计算器黑屏，则一直按shift，直至计算器花屏。再按一下shift，计算器显示的图案发生改变。此时按下AC，若计算器显示的图案再次发生改变，则一定是盗版---正版计算器无现象。&lt;br /&gt;
&lt;br /&gt;
此方法不能鉴别全部的盗版MS系列计算器。&lt;br /&gt;
&lt;br /&gt;
===针对 ES 系列的自检法===&lt;br /&gt;
操作:按住 SHIFT 和 7 ，同时按一下 ON ，出现&amp;quot;蓝屏&amp;quot;，之后不断地按 SHIFT 直到屏幕顶端出现 &amp;lt;code&amp;gt;ROM XXX&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
如果&#039;&#039;&#039;是&#039;&#039;&#039;ROM 018，盗版正版皆有可能，现在的盗版很多已经改成ROM 018。&lt;br /&gt;
&lt;br /&gt;
如果&#039;&#039;&#039;是&#039;&#039;&#039;ROM 013，则很可能是盗版。（但也存在极少 ROM 013 是正版的情况，建议咨询专业人员或使用“四按一松”法进行鉴定）&lt;br /&gt;
&lt;br /&gt;
目前看来，如果&#039;&#039;&#039;是&#039;&#039;&#039;ROM 021，则基本上可以判定为正版。&lt;br /&gt;
&lt;br /&gt;
===针对 ES PLUS 系列的自检法===&lt;br /&gt;
&lt;br /&gt;
操作:按住 SHIFT 和 7 ，同时按一下 ON ，屏幕改变，然后按一下9，出现&amp;quot;蓝屏&amp;quot;，之后不断地按 SHIFT 直到屏幕顶端出现 &amp;lt;code&amp;gt;GY-XXX VerX&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
对于 fx-82ES PLUS/fx-95ES PLUS/fx-350ES PLUS/fx-991ES PLUS ，如果看到的 VerX 为 VerA ，有极大可能是盗版。 fx-ES PLUS 系列在刚开始发行的版本就是 VerA ，但是目前正版的 VerA 极其少见。如果检测结果是 VerB 或者 VerE，则可以放心使用，是正版。&lt;br /&gt;
&lt;br /&gt;
==异常法==&lt;br /&gt;
&lt;br /&gt;
卡西欧计算器有一些的 BUG ，可以通过特殊操作使计算器进入某些特殊模式，这被称为[[计算器异常模式]]，因此，也可以通过检查能否使用异常模式的方法来鉴别盗版计算器。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &#039;&#039;常见的异常请参考{{分类|计算器异常}}&#039;&#039; --&amp;gt;&lt;br /&gt;
&#039;&#039;常见的异常请参考[http://tieba.baidu.com/p/3395822027 fx-es(ms)吧计算器研究成果索引及疑难解答（第三版）]&#039;&#039;和[[:分类:计算器异常]]&lt;br /&gt;
==针对卡西欧fx-MS系列的盗版鉴别方法==&lt;br /&gt;
卡西欧fx-MS系列是市面上盗版最多的一种计算器。除上文所述鉴别方法之外，还有一些特殊的鉴别MS系列机型正盗版的方法。&lt;br /&gt;
*  若打开计算器电源后发现计算器屏幕上有常亮的“TY”字样，则一定是盗版。&lt;br /&gt;
*  若按下shift和←（或→）后光标立即跳转到已输入算式的最左端（或最右端），则为盗版计算器。&lt;br /&gt;
*  若计算器背面的铭牌上，“Tokyo”被印刷为“Tokyc”，则一定是盗版。&lt;br /&gt;
*  先随意输入一个数字，然后输入一个% 。如果计算器没有立即进行计算，则为盗版计算器。&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E7%9B%97%E7%89%88%E8%AE%A1%E7%AE%97%E5%99%A8%E9%89%B4%E5%88%AB%E6%96%B9%E6%B3%95&amp;diff=8095</id>
		<title>盗版计算器鉴别方法</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E7%9B%97%E7%89%88%E8%AE%A1%E7%AE%97%E5%99%A8%E9%89%B4%E5%88%AB%E6%96%B9%E6%B3%95&amp;diff=8095"/>
		<updated>2016-08-06T15:03:22Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* “四按一松”法 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{不完整|添加一些计算器异常的条目，并加入到{{分类|计算器异常}}中|添加计算器自检相关条目，并加入到{{分类|计算器自检}}中|明确计算器电池信息}}&lt;br /&gt;
因为卡西欧计算器[[ES系列]]和[[MS系列]]的{{PlainLink|[https://calcwiki.org/%E8%AE%A1%E7%AE%97%E5%99%A8#.E7.9B.97.E7.89.88.E8.AE.A1.E7.AE.97.E5.99.A8 盗版]}}较多，购买时需要仔细甄别，以免受到{{PlainLink|[https://calcwiki.org/%E8%AE%A1%E7%AE%97%E5%99%A8#.E5.B1.B1.E5.AF.A8.E8.AE.A1.E7.AE.97.E5.99.A8.E5.92.8C.E7.9B.97.E7.89.88.E8.AE.A1.E7.AE.97.E5.99.A8.E7.9A.84.E5.8D.B1.E5.AE.B3 盗版计算器的危害]}}。针对这个问题，也有以下鉴别方法可供参考。&lt;br /&gt;
== 現狀 ==&lt;br /&gt;
迄今为止，Classwiz系列，ES PLUS A系列，带P和F的编程系列(fx-3650P和fx-4500PA除外，已发现盗版；更早的编程机可能也有盗版)，FC开头的金融系列等暂未发现盗版，一般为正版。&lt;br /&gt;
&lt;br /&gt;
==外观法==&lt;br /&gt;
&lt;br /&gt;
盗版计算器常常质量低劣，不少盗版计算器从外观上就能看出问题。比如:&lt;br /&gt;
&lt;br /&gt;
*键盘上的字符印刷歪斜，不端正，字体不正确（尤其是&amp;quot;fx&amp;quot;很容易字体不正确）；&lt;br /&gt;
*计算器材质不佳，易于损坏，或者摸起来不舒服；&lt;br /&gt;
*显示屏颜色不对或者最上一行的指示灯字体不对，看着不舒服；&lt;br /&gt;
*显示屏安装位置不正或屏幕不稳固；&lt;br /&gt;
*计算器闻起来有股强烈的塑料味，或其他异味等。&lt;br /&gt;
&lt;br /&gt;
这些都是盗版计算器的特征，但盗版计算器不一定都拥有这些特征。因此除非是经常鉴别盗版计算器的专业人士，一般消费者很难第一眼就辨别出真假。&lt;br /&gt;
&lt;br /&gt;
==“四按一松”法==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039;此方法只支持ES及以上系列的计算器（包括[[ES系列]]、[[ES PLUS系列]]和[[ClassWiz]]系列），如果您使用的是低于ES系列的[[MS系列|MS]]/[[TL系列|TL]]等系列计算器，可以尝试异常法。&lt;br /&gt;
&lt;br /&gt;
此方法十分准确。&lt;br /&gt;
&lt;br /&gt;
操作:依次按住计算器底部的 {{Key|1}}{{Key|0}}{{Key|equal}}{{Key|-}} ，然后松开 1 ，如果屏幕上显示&amp;quot;1cos(&amp;quot;，则&#039;&#039;&#039;一定&#039;&#039;&#039;为正版。&lt;br /&gt;
&lt;br /&gt;
==精度法==&lt;br /&gt;
&lt;br /&gt;
盗版计算器和正版计算器精度略有不同，这点可以用来鉴别正版和盗版。&lt;br /&gt;
&lt;br /&gt;
使用三角函数:（角度单位必须设置为“角度制”（Deg），屏幕上显示“DEG”或者“D”。）&lt;br /&gt;
&lt;br /&gt;
键入“sin&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;(cos&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;(tan&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;(tan(cos(sin(9”，即：&lt;br /&gt;
{{Calcbutton|Shift}}{{Calcbutton|sin}}(sin&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;){{Calcbutton|Shift}}{{Calcbutton|cos}}(cos&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;){{Calcbutton|Shift}}{{Calcbutton|tan}}(tan&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;){{Calcbutton|tan}}{{Calcbutton|cos}}{{Calcbutton|sin}}{{Calcbutton|9}}{{Calcbutton|＝}}。&lt;br /&gt;
&lt;br /&gt;
*ES/ES PLUS/MS PLUS系列以及之后的计算器将显示:&lt;br /&gt;
&lt;br /&gt;
 9.000000007 &lt;br /&gt;
&lt;br /&gt;
*MS/TL/W等老版本将显示:&lt;br /&gt;
&lt;br /&gt;
 8.999998637 &lt;br /&gt;
&lt;br /&gt;
*如果不是以上结果，则一定是盗版。&lt;br /&gt;
&lt;br /&gt;
注意:&lt;br /&gt;
*&#039;&#039;&#039;部分更老版本可能是 9.000015685 或者其他数字。&lt;br /&gt;
*卡西欧图形计算器fx-7400GII/9750GII/9860G/9860GII系列（简称“9系”）的三角函数精度检测数值为8.999999998，但是目前9系图形计算器尚无盗版，可放心使用。&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
如果计算结果是诸如 0.424777... 这类的，则角度单位设置不对，应该是角度制（Deg）而计算器当前状态是弧度制（Rad），请修改角度单位后再试一遍。&lt;br /&gt;
&lt;br /&gt;
以下提供部分盗版精度，仅供参考:&lt;br /&gt;
&lt;br /&gt;
 8.999999998 &lt;br /&gt;
 8.999999999 &lt;br /&gt;
 9.000000001&lt;br /&gt;
&lt;br /&gt;
==电池法==&lt;br /&gt;
&lt;br /&gt;
（以下只谈论在中国大陆发行函数计算器的型号，从TL开始。）&lt;br /&gt;
&lt;br /&gt;
CASIO以下型号计算器均使用AA电池(即5号电池):&lt;br /&gt;
*fx-82TL/fx-100W&lt;br /&gt;
*fx-82MS/fx-95MS/fx-100MS&lt;br /&gt;
*fx-220 PLUS&lt;br /&gt;
&lt;br /&gt;
CASIO以下型号计算器均使用AAA电池(即7号电池):&lt;br /&gt;
*fx-82ES/fx-350ES/fx-500ES&lt;br /&gt;
*fx-82ES PLUS/fx-82ES PLUS A/fx-95ES PLUS/fx-350ES PLUS&lt;br /&gt;
*fx-82CN X/fx-95CN X/fx-350CN X&lt;br /&gt;
&lt;br /&gt;
CASIO以下型号计算器均使用LR44电池(即纽扣电池):&lt;br /&gt;
*fx-350TL/fx-570W/fx-991W&lt;br /&gt;
*fx-83MS/fx-85MS/fx-115MS/fx-270MS/fx-300MS/fx-350MS/fx-570MS/fx-991MS&lt;br /&gt;
*fx-350MS PLUS&lt;br /&gt;
*fx-991ES&lt;br /&gt;
*fx-991ES PLUS&lt;br /&gt;
*fx-991CN X&lt;br /&gt;
&lt;br /&gt;
如果发现上述计算器型号电池与上述不符，一般可以判定为盗版(建议结合其它方法，这个方法目前来说也有不准的时候)。&lt;br /&gt;
&lt;br /&gt;
==拆机法==&lt;br /&gt;
拆机之后基本上可以判定是不是假货:&lt;br /&gt;
#看黑胶是否光滑，卡西欧计算器通常（早期型号也使用过塑封）使用&#039;&#039;&#039;光滑&#039;&#039;&#039;的黑胶来封装芯片，如果看到磨砂黑胶则可判定为盗版；&lt;br /&gt;
#看电路板印刷是否完整，如果电路板上空空荡荡或元件标记很少，特别是最下方没有LY-XXX或GY-XXX之类的内部型号，则一定是盗版；&lt;br /&gt;
#看电源线颜色是否不同，如果两根电源线颜色一样，则一定是盗版；&lt;br /&gt;
#看焊点是否光滑，如果看到电路板质量欠佳，则很可能是盗版；&lt;br /&gt;
#看电路板大小，若拆机之后发现电路板仅占计算器内部空间的很小一部分，则一定是盗版；&lt;br /&gt;
#如果电路板上焊接了一大块纽扣电池电池盒，则一定是盗版。&lt;br /&gt;
&lt;br /&gt;
==自检法==&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039;此方法只支持[[MS系列]],[[ES系列]]和[[ES PLUS]]系列的计算器。&lt;br /&gt;
&lt;br /&gt;
此方法准确度高，操作简单。&lt;br /&gt;
&amp;lt;!-- &#039;&#039;关于计算器自检的更多信息，请参考{{分类|计算器自检}}&#039;&#039; --&amp;gt;&lt;br /&gt;
===针对MS系列的自检法===&lt;br /&gt;
操作：&lt;br /&gt;
&lt;br /&gt;
1.按住2和COS，同时按住ON.若此时计算器黑屏，随后白屏，随后出现一道亮线滚动，则一定是盗版---正版计算器无反应。&lt;br /&gt;
&lt;br /&gt;
2.若第一步中计算器无反应，则按住 SHIFT 和 7 ，同时按一下 ON。若此时计算器仍无反应，则一定是盗版。&lt;br /&gt;
&lt;br /&gt;
3.若上一步操作中计算器黑屏，则一直按shift，直至计算器花屏。再按一下shift，计算器显示的图案发生改变。此时按下AC，若计算器显示的图案再次发生改变，则一定是盗版---正版计算器无现象。&lt;br /&gt;
&lt;br /&gt;
此方法不能鉴别全部的盗版MS系列计算器。&lt;br /&gt;
&lt;br /&gt;
===针对 ES 系列的自检法===&lt;br /&gt;
操作:按住 SHIFT 和 7 ，同时按一下 ON ，出现&amp;quot;蓝屏&amp;quot;，之后不断地按 SHIFT 直到屏幕顶端出现 &amp;lt;code&amp;gt;ROM XXX&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
如果&#039;&#039;&#039;是&#039;&#039;&#039;ROM 018，盗版正版皆有可能，现在的盗版很多已经改成ROM 018。&lt;br /&gt;
&lt;br /&gt;
如果&#039;&#039;&#039;是&#039;&#039;&#039;ROM 013，则很可能是盗版。（但也存在极少 ROM 013 是正版的情况，建议咨询专业人员或使用“四按一松”法进行鉴定）&lt;br /&gt;
&lt;br /&gt;
目前看来，如果&#039;&#039;&#039;是&#039;&#039;&#039;ROM 021，则基本上可以判定为正版。&lt;br /&gt;
&lt;br /&gt;
===针对 ES PLUS 系列的自检法===&lt;br /&gt;
&lt;br /&gt;
操作:按住 SHIFT 和 7 ，同时按一下 ON ，屏幕改变，然后按一下9，出现&amp;quot;蓝屏&amp;quot;，之后不断地按 SHIFT 直到屏幕顶端出现 &amp;lt;code&amp;gt;GY-XXX VerX&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
对于 fx-82ES PLUS/fx-95ES PLUS/fx-350ES PLUS/fx-991ES PLUS ，如果看到的 VerX 为 VerA ，有极大可能是盗版。 fx-ES PLUS 系列在刚开始发行的版本就是 VerA ，但是目前正版的 VerA 极其少见。如果检测结果是 VerB 或者 VerE，则可以放心使用，是正版。&lt;br /&gt;
&lt;br /&gt;
==异常法==&lt;br /&gt;
&lt;br /&gt;
卡西欧计算器有一些的 BUG ，可以通过特殊操作使计算器进入某些特殊模式，这被称为[[计算器异常模式]]，因此，也可以通过检查能否使用异常模式的方法来鉴别盗版计算器。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &#039;&#039;常见的异常请参考{{分类|计算器异常}}&#039;&#039; --&amp;gt;&lt;br /&gt;
&#039;&#039;常见的异常请参考[http://tieba.baidu.com/p/3395822027 fx-es(ms)吧计算器研究成果索引及疑难解答（第三版）]&#039;&#039;和[[:分类:计算器异常]]&lt;br /&gt;
==针对卡西欧fx-MS系列的盗版鉴别方法==&lt;br /&gt;
卡西欧fx-MS系列是市面上盗版最多的一种计算器。除上文所述鉴别方法之外，还有一些特殊的鉴别MS系列机型正盗版的方法。&lt;br /&gt;
*  若打开计算器电源后发现计算器屏幕上有常亮的“TY”字样，则一定是盗版。&lt;br /&gt;
*  若按下shift和←（或→）后光标立即跳转到已输入算式的最左端（或最右端），则为盗版计算器。&lt;br /&gt;
*  若计算器背面的铭牌上，“Tokyo”被印刷为“Tokyc”，则一定是盗版。&lt;br /&gt;
*  先随意输入一个数字，然后输入一个% 。如果计算器没有立即进行计算，则为盗版计算器。&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
	<entry>
		<id>https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8038</id>
		<title>计算器百科:聊天室</title>
		<link rel="alternate" type="text/html" href="https://calcwiki.org/index.php?title=%E8%AE%A1%E7%AE%97%E5%99%A8%E7%99%BE%E7%A7%91:%E8%81%8A%E5%A4%A9%E5%AE%A4&amp;diff=8038"/>
		<updated>2016-07-25T02:08:40Z</updated>

		<summary type="html">&lt;p&gt;春上冰月：​/* 由计算器爱好者编写而成的创作共用的百科全书 */ // Edit via Wikiplus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{/header}}&lt;br /&gt;
&lt;br /&gt;
== 由計算器愛好者編寫而成的創作共用的百科全書 ==&lt;br /&gt;
&lt;br /&gt;
我認為「由計算器愛好者編寫而成的創作共用的百科全書」這句話在一定程度上誤導了一部分編者，這句話指出了計算器百科是由計算器愛好者編寫的，或許可以被理解為只有計算器愛好者才能編寫計算器百科；而且很明顯計算器百科的條目並非全部由愛好者編寫。所以我建議將這句話改為「計算器百科，非營利的計算器專業知識百科」。想在此徵求各位意見，尤其是創始人{{ping|Slz}}。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年7月16日 (六) 11:32 (CST)&lt;br /&gt;
&lt;br /&gt;
可以，觉得不错！[[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2016年7月16日 (六) 17:00 (CST)&lt;br /&gt;
:{{ping|春上冰月}}，请协助修改网页标题后缀，将现有内容改为“計算器百科，非營利的計算器專業知識百科。”。--&amp;lt;span style=&amp;quot;box-shadow:0 0 30px #FFFF00;background:#6640FF;padding:0 19px;color:#FFFF00;&amp;quot;&amp;gt;&#039;&#039;&#039;Qinyongr&#039;&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:#A6FFCC;padding:0 9px;&amp;quot;&amp;gt;[[User talk:Qinyongr|-{「}-&#039;&#039;&#039;留言&#039;&#039;&#039;-{」}-]]&amp;lt;/span&amp;gt; 2016年7月24日 (日) 14:06 (CST)&lt;br /&gt;
*更改已应用--[[User:春上冰月|春上冰月]]（[[User talk:春上冰月|讨论]]） 2016年7月25日 (一) 10:08 (CST)&lt;br /&gt;
&lt;br /&gt;
== 关于最近事项的通知 ==&lt;br /&gt;
&lt;br /&gt;
我们将计算器百科的主域名暂时切换到了  [https://calc.wiki/ Calc.wiki]&lt;br /&gt;
&lt;br /&gt;
由于最近 [https://calcwiki.org/ calcwiki.org] 域名将开始备案，管局规定备案过程中站点需要保持关闭状态，因此 [https://calcwiki.org/ calcwiki.org] 将可能在将来的一段时间中不能正常访问。&lt;br /&gt;
&lt;br /&gt;
因此我们将计算器百科主域名将暂时切换到 [https://calc.wiki/ Calc.wiki]，请大家暂时先使用 [https://calc.wiki/ Calc.wiki] 访问计算器百科。&lt;br /&gt;
&lt;br /&gt;
备案完成后服务器将会开始迁移到国内，这将为大家提供更加优质、快速的服务。&lt;br /&gt;
&lt;br /&gt;
请留意。&lt;br /&gt;
&lt;br /&gt;
[[User:Slz|Slz]]（[[User talk:Slz|讨论]]） 2016年7月23日 (六) 23:52 (CST)&lt;/div&gt;</summary>
		<author><name>春上冰月</name></author>
	</entry>
</feed>