rhymix/modules/editor/skins/xquared/doc/api/src_05.html
haneul 0c99858e7c editor skin에 xquared 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3039 201d5d3c-b55e-5fd7-737f-ddc643e51545
2007-11-21 15:33:02 +00:00

2216 lines
No EOL
474 KiB
HTML

<html><head><style>
.KEYW {color: #933;}
.COMM {color: #bbb; font-style: italic;}
.NUMB {color: #393;}
.STRN {color: #393;}
.REGX {color: #339;}
.linenumber {border-right: 1px dotted #666; color: #666; font-style: normal;}
</style></head><body><pre><span class='linenumber'> 1</span> <span class="COMM">/**
<span class='linenumber'> 2</span> * @fileOverview xq.Editor manages configurations such as autocompletion and autocorrection, edit mode/normal mode switching, handles editing commands, keyboard shortcuts and other events.
<span class='linenumber'> 3</span> */</span><span class="WHIT">
<span class='linenumber'> 4</span> </span><span class="NAME">xq.Editor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Class.create</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 5</span> </span><span class="COMM">/**
<span class='linenumber'> 6</span> * Initialize editor but it doesn't automatically start designMode. setEditMode should be called after initialization.
<span class='linenumber'> 7</span> *
<span class='linenumber'> 8</span> * @constructor
<span class='linenumber'> 9</span> * @param {Element} contentElement HTML element(TEXTAREA or normal block element such as DIV) to be replaced with editable area
<span class='linenumber'> 10</span> * @param {Element} toolbarContainer HTML element which contains toolbar icons
<span class='linenumber'> 11</span> */</span><span class="WHIT">
<span class='linenumber'> 12</span> </span><span class="NAME">initialize</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">contentElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">toolbarContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'> 13</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">contentElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="STRN">"[contentElement] is null"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 14</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">contentElement.nodeType</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="STRN">"[contentElement] is not an element"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 15</span>
<span class='linenumber'> 16</span> </span><span class="NAME">xq.asEventSource</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Editor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"ElementChanged"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"BeforeEvent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"AfterEvent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"CurrentContentChanged"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"StaticContentChanged"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"CurrentEditModeChanged"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 17</span>
<span class='linenumber'> 18</span> </span><span class="COMM">/**
<span class='linenumber'> 19</span> * Editor's configuration
<span class='linenumber'> 20</span> * @type object
<span class='linenumber'> 21</span> */</span><span class="WHIT">
<span class='linenumber'> 22</span> </span><span class="NAME">this.config</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 23</span> </span><span class="NAME">this.config.enableLinkClick</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 24</span> </span><span class="NAME">this.config.changeCursorOnLink</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 25</span> </span><span class="NAME">this.config.generateDefaultToolbar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 26</span> </span><span class="NAME">this.config.defaultToolbarButtonMap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 27</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 28</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"foregroundColor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Foreground color"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleForegroundColor()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 29</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"backgroundColor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Background color"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleBackgroundColor()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 30</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 31</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 32</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"link"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Link"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleLink()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 33</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"strongEmphasis"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Strong emphasis"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleStrongEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 34</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"emphasis"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Emphasis"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 35</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"underline"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Underline"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleUnderline()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 36</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"strike"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Strike"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleStrike()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 37</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"superscription"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Superscription"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleSuperscription()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 38</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"subscription"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Subscription"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleSubscription()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 39</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 40</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 41</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"removeFormat"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Remove format"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleRemoveFormat()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 42</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 43</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 44</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"justifyLeft"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Justify left"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleJustify('left')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 45</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"justifyCenter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Justify center"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleJustify('center')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 46</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"justifyRight"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Justify right"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleJustify('right')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 47</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"justifyBoth"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Justify both"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleJustify('both')"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 48</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 49</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 50</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"indent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Indent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleIndent()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 51</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"outdent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Outdent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleOutdent()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 52</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 53</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 54</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"unorderedList"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Unordered list"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleList('UL')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 55</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"orderedList"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Ordered list"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleList('OL')"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 56</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 57</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 58</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"paragraph"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Paragraph"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleApplyBlock('P')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 59</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"heading1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Heading 1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleApplyBlock('H1')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 60</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"blockquote"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Blockquote"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleApplyBlock('BLOCKQUOTE')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 61</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"code"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Code"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleList('CODE')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 62</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"division"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Division"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleApplyBlock('DIV')"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 63</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 64</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 65</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"table"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Table"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleTable(3,3,'tl')"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 66</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"separator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Separator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleSeparator()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 67</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 68</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 69</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"html"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Edit source"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.toggleSourceAndWysiwygMode()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 70</span> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 71</span> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'> 72</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"undo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Undo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleUndo()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'> 73</span> </span><span class="PUNC">{</span><span class="NAME">className</span><span class="PUNC">:</span><span class="STRN">"redo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">:</span><span class="STRN">"Redo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"xed.handleRedo()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'> 74</span> </span><span class="PUNC">]</span><span class="WHIT">
<span class='linenumber'> 75</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 76</span>
<span class='linenumber'> 77</span> </span><span class="NAME">this.config.imagePathForDefaultToobar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'img/toolbar/'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 78</span>
<span class='linenumber'> 79</span> </span><span class="COMM">// relative | host_relative | absolute | browser_default</span><span class="WHIT">
<span class='linenumber'> 80</span> </span><span class="NAME">this.config.urlValidationMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'absolute'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 81</span>
<span class='linenumber'> 82</span> </span><span class="NAME">this.config.automaticallyHookSubmitEvent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 83</span>
<span class='linenumber'> 84</span> </span><span class="NAME">this.config.allowedTags</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'a'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'abbr'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'acronym'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'address'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'blockquote'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'br'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'caption'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'cite'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'code'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'dd'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'dfn'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'div'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'dl'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'dt'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'em'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'h1'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'h2'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'h3'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'h4'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'h5'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'h6'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'hr'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'img'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'kbd'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'li'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'ol'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'p'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'pre'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'q'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'samp'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'span'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'sup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'sub'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'strong'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'table'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'thead'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'tbody'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'td'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'th'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'tr'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'ul'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'var'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 85</span> </span><span class="NAME">this.config.allowedAttributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'alt'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'cite'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'class'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'datetime'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'height'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'href'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'id'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'rel'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'rev'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'src'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'style'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'title'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'width'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 86</span>
<span class='linenumber'> 87</span> </span><span class="NAME">this.config.shortcuts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 88</span> </span><span class="NAME">this.config.autocorrections</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 89</span> </span><span class="NAME">this.config.autocompletions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 90</span> </span><span class="NAME">this.config.templateProcessors</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 91</span> </span><span class="NAME">this.config.contextMenuHandlers</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 92</span>
<span class='linenumber'> 93</span> </span><span class="COMM">/**
<span class='linenumber'> 94</span> * Original content element
<span class='linenumber'> 95</span> * @type Element
<span class='linenumber'> 96</span> */</span><span class="WHIT">
<span class='linenumber'> 97</span> </span><span class="NAME">this.contentElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">contentElement</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'> 98</span>
<span class='linenumber'> 99</span> </span><span class="COMM">/**
<span class='linenumber'>100</span> * Owner document of content element
<span class='linenumber'>101</span> * @type Document
<span class='linenumber'>102</span> */</span><span class="WHIT">
<span class='linenumber'>103</span> </span><span class="NAME">this.doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.contentElement.ownerDocument</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>104</span>
<span class='linenumber'>105</span> </span><span class="COMM">/**
<span class='linenumber'>106</span> * Body of content element
<span class='linenumber'>107</span> * @type Element
<span class='linenumber'>108</span> */</span><span class="WHIT">
<span class='linenumber'>109</span> </span><span class="NAME">this.body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.body</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>110</span>
<span class='linenumber'>111</span> </span><span class="COMM">/**
<span class='linenumber'>112</span> * False or 'readonly' means read-only mode, true or 'wysiwyg' means WYSIWYG editing mode, and 'source' means source editing mode.
<span class='linenumber'>113</span> * @type Object
<span class='linenumber'>114</span> */</span><span class="WHIT">
<span class='linenumber'>115</span> </span><span class="NAME">this.currentEditMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'readonly'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>116</span>
<span class='linenumber'>117</span> </span><span class="COMM">/**
<span class='linenumber'>118</span> * RichDom instance
<span class='linenumber'>119</span> * @type xq.RichDom
<span class='linenumber'>120</span> */</span><span class="WHIT">
<span class='linenumber'>121</span> </span><span class="NAME">this.rdom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xq.RichDom.createInstance</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>122</span>
<span class='linenumber'>123</span> </span><span class="COMM">/**
<span class='linenumber'>124</span> * Validator instance
<span class='linenumber'>125</span> * @type xq.Validator
<span class='linenumber'>126</span> */</span><span class="WHIT">
<span class='linenumber'>127</span> </span><span class="NAME">this.validator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>128</span>
<span class='linenumber'>129</span> </span><span class="COMM">/**
<span class='linenumber'>130</span> * Outmost wrapper div
<span class='linenumber'>131</span> * @type Element
<span class='linenumber'>132</span> */</span><span class="WHIT">
<span class='linenumber'>133</span> </span><span class="NAME">this.outmostWrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>134</span>
<span class='linenumber'>135</span> </span><span class="COMM">/**
<span class='linenumber'>136</span> * Source editor container
<span class='linenumber'>137</span> * @type Element
<span class='linenumber'>138</span> */</span><span class="WHIT">
<span class='linenumber'>139</span> </span><span class="NAME">this.sourceEditorDiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>140</span>
<span class='linenumber'>141</span> </span><span class="COMM">/**
<span class='linenumber'>142</span> * Source editor textarea
<span class='linenumber'>143</span> * @type Element
<span class='linenumber'>144</span> */</span><span class="WHIT">
<span class='linenumber'>145</span> </span><span class="NAME">this.sourceEditorTextarea</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>146</span>
<span class='linenumber'>147</span> </span><span class="COMM">/**
<span class='linenumber'>148</span> * WYSIWYG editor container
<span class='linenumber'>149</span> * @type Element
<span class='linenumber'>150</span> */</span><span class="WHIT">
<span class='linenumber'>151</span> </span><span class="NAME">this.wysiwygEditorDiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>152</span>
<span class='linenumber'>153</span> </span><span class="COMM">/**
<span class='linenumber'>154</span> * Design mode iframe
<span class='linenumber'>155</span> * @type IFrame
<span class='linenumber'>156</span> */</span><span class="WHIT">
<span class='linenumber'>157</span> </span><span class="NAME">this.editorFrame</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>158</span>
<span class='linenumber'>159</span> </span><span class="COMM">/**
<span class='linenumber'>160</span> * Window that contains design mode iframe
<span class='linenumber'>161</span> * @type Window
<span class='linenumber'>162</span> */</span><span class="WHIT">
<span class='linenumber'>163</span> </span><span class="NAME">this.editorWin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>164</span>
<span class='linenumber'>165</span> </span><span class="COMM">/**
<span class='linenumber'>166</span> * Document that contained by design mode iframe
<span class='linenumber'>167</span> * @type Document
<span class='linenumber'>168</span> */</span><span class="WHIT">
<span class='linenumber'>169</span> </span><span class="NAME">this.editorDoc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>170</span>
<span class='linenumber'>171</span> </span><span class="COMM">/**
<span class='linenumber'>172</span> * Body that contained by design mode iframe
<span class='linenumber'>173</span> * @type Element
<span class='linenumber'>174</span> */</span><span class="WHIT">
<span class='linenumber'>175</span> </span><span class="NAME">this.editorBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>176</span>
<span class='linenumber'>177</span> </span><span class="COMM">/**
<span class='linenumber'>178</span> * Toolbar container
<span class='linenumber'>179</span> * @type Element
<span class='linenumber'>180</span> */</span><span class="WHIT">
<span class='linenumber'>181</span> </span><span class="NAME">this.toolbarContainer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">toolbarContainer</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>182</span>
<span class='linenumber'>183</span> </span><span class="COMM">/**
<span class='linenumber'>184</span> * Toolbar buttons
<span class='linenumber'>185</span> * @type Array
<span class='linenumber'>186</span> */</span><span class="WHIT">
<span class='linenumber'>187</span> </span><span class="NAME">this.toolbarButtons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>188</span>
<span class='linenumber'>189</span> </span><span class="COMM">/**
<span class='linenumber'>190</span> * Undo/redo manager
<span class='linenumber'>191</span> * @type xq.EditHistory
<span class='linenumber'>192</span> */</span><span class="WHIT">
<span class='linenumber'>193</span> </span><span class="NAME">this.editHistory</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>194</span>
<span class='linenumber'>195</span> </span><span class="NAME">this._contextMenuContainer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>196</span> </span><span class="NAME">this._contextMenuItems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>197</span>
<span class='linenumber'>198</span> </span><span class="NAME">this._validContentCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>199</span> </span><span class="NAME">this._lastModified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>200</span>
<span class='linenumber'>201</span> </span><span class="NAME">this.addShortcuts</span><span class="PUNC">(</span><span class="NAME">this._getDefaultShortcuts</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>202</span> </span><span class="NAME">this.addTemplateProcessors</span><span class="PUNC">(</span><span class="NAME">this._getDefaultTemplateProcessors</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>203</span>
<span class='linenumber'>204</span> </span><span class="NAME">this.addListener</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>205</span> </span><span class="NAME">onEditorCurrentContentChanged</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">xed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>206</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curFocusElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xed.rdom.getCurrentElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>207</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">curFocusElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>208</span>
<span class='linenumber'>209</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xed._lastFocusElement</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">curFocusElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>210</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xed.rdom.tree.isBlockOnlyContainer</span><span class="PUNC">(</span><span class="NAME">xed._lastFocusElement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">xed.rdom.tree.isBlock</span><span class="PUNC">(</span><span class="NAME">xed._lastFocusElement</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>211</span> </span><span class="NAME">xed.rdom.removeTrailingWhitespace</span><span class="PUNC">(</span><span class="NAME">xed._lastFocusElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>212</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>213</span> </span><span class="NAME">xed._fireOnElementChanged</span><span class="PUNC">(</span><span class="NAME">xed._lastFocusElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">curFocusElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>214</span> </span><span class="NAME">xed._lastFocusElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">curFocusElement</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>215</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>216</span>
<span class='linenumber'>217</span> </span><span class="NAME">xed.updateAllToolbarButtonsStatus</span><span class="PUNC">(</span><span class="NAME">curFocusElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>218</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>219</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>220</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>221</span>
<span class='linenumber'>222</span>
<span class='linenumber'>223</span>
<span class='linenumber'>224</span> </span><span class="COMM">/////////////////////////////////////////////</span><span class="WHIT">
<span class='linenumber'>225</span> </span><span class="COMM">// Configuration Management</span><span class="WHIT">
<span class='linenumber'>226</span>
<span class='linenumber'>227</span> </span><span class="NAME">_getDefaultShortcuts</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>228</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isMac</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>229</span> </span><span class="COMM">// Mac FF & Safari</span><span class="WHIT">
<span class='linenumber'>230</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'>231</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Shift+SPACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleAutocompletion(); stop = true;"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>232</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(false, false)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>233</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(true, false)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>234</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Shift+ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(true, true)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>235</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"TAB"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleTab()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>236</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Shift+TAB"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleShiftTab()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>237</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"DELETE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleDelete()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>238</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"BACKSPACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleBackspace()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>239</span>
<span class='linenumber'>240</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+B"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleStrongEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>241</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+I"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>242</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+U"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleUnderline()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>243</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+K"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleStrike()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>244</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Meta+Z"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleUndo()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>245</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Meta+Shift+Z"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleRedo()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>246</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Meta+Y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleRedo()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>247</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>248</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isUbuntu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>249</span> </span><span class="COMM">// Ubunto FF</span><span class="WHIT">
<span class='linenumber'>250</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'>251</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+SPACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleAutocompletion(); stop = true;"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>252</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(false, false)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>253</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(true, false)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>254</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Shift+ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(true, true)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>255</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"TAB"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleTab()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>256</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Shift+TAB"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleShiftTab()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>257</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"DELETE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleDelete()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>258</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"BACKSPACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleBackspace()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>259</span>
<span class='linenumber'>260</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+B"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleStrongEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>261</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+I"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>262</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+U"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleUnderline()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>263</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+K"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleStrike()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>264</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Z"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleUndo()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>265</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleRedo()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>266</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>267</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>268</span> </span><span class="COMM">// Win IE & FF</span><span class="WHIT">
<span class='linenumber'>269</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'>270</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+SPACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleAutocompletion(); stop = true;"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>271</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(false, false)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>272</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(true, false)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>273</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Shift+ENTER"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEnter(true, true)"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>274</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"TAB"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleTab()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>275</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Shift+TAB"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleShiftTab()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>276</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"DELETE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleDelete()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>277</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"BACKSPACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleBackspace()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>278</span>
<span class='linenumber'>279</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+B"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleStrongEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>280</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+I"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleEmphasis()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>281</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+U"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleUnderline()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>282</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+K"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleStrike()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>283</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Z"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleUndo()"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>284</span> </span><span class="PUNC">{</span><span class="NAME">event</span><span class="PUNC">:</span><span class="STRN">"Ctrl+Y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="STRN">"this.handleRedo()"</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>285</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>286</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>287</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>288</span>
<span class='linenumber'>289</span> </span><span class="NAME">_getDefaultTemplateProcessors</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>290</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'>291</span> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>292</span> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="STRN">"predefinedKeywordProcessor"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>293</span> </span><span class="NAME">handler</span><span class="PUNC">:</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>294</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">today</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Date.get</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>295</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keywords</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>296</span> </span><span class="NAME">year</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">today.getFullYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>297</span> </span><span class="NAME">month</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">today.getMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>298</span> </span><span class="NAME">date</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">today.getDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>299</span> </span><span class="NAME">hour</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">today.getHours</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>300</span> </span><span class="NAME">min</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">today.getMinutes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>301</span> </span><span class="NAME">sec</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">today.getSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>302</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>303</span>
<span class='linenumber'>304</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">html.replace</span><span class="PUNC">(</span><span class="REGX">/\{xq:(year|month|date|hour|min|sec)\}/img</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyword</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>305</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keywords</span><span class="PUNC">[</span><span class="NAME">keyword</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">keyword</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>306</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>307</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>308</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>309</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>310</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>311</span>
<span class='linenumber'>312</span> </span><span class="COMM">/**
<span class='linenumber'>313</span> * Adds or replaces keyboard shortcut.
<span class='linenumber'>314</span> *
<span class='linenumber'>315</span> * @param {String} shortcut keymap expression like "CTRL+Space"
<span class='linenumber'>316</span> * @param {Object} handler string or function to be evaluated or called
<span class='linenumber'>317</span> */</span><span class="WHIT">
<span class='linenumber'>318</span> </span><span class="NAME">addShortcut</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">shortcut</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>319</span> </span><span class="NAME">this.config.shortcuts</span><span class="PUNC">[</span><span class="NAME">shortcut</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="STRN">"event"</span><span class="PUNC">:</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.Shortcut</span><span class="PUNC">(</span><span class="NAME">shortcut</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"handler"</span><span class="PUNC">:</span><span class="NAME">handler</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>320</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>321</span>
<span class='linenumber'>322</span> </span><span class="COMM">/**
<span class='linenumber'>323</span> * Adds several keyboard shortcuts at once.
<span class='linenumber'>324</span> *
<span class='linenumber'>325</span> * @param {Array} list of shortcuts. each element should have following structure: {event:"keymap expression", handler:handler}
<span class='linenumber'>326</span> */</span><span class="WHIT">
<span class='linenumber'>327</span> </span><span class="NAME">addShortcuts</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>328</span> </span><span class="NAME">list.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">shortcut</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>329</span> </span><span class="NAME">this.addShortcut</span><span class="PUNC">(</span><span class="NAME">shortcut.event</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">shortcut.handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>330</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>331</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>332</span>
<span class='linenumber'>333</span> </span><span class="COMM">/**
<span class='linenumber'>334</span> * Returns keyboard shortcut matches with given keymap expression.
<span class='linenumber'>335</span> *
<span class='linenumber'>336</span> * @param {String} shortcut keymap expression like "CTRL+Space"
<span class='linenumber'>337</span> */</span><span class="WHIT">
<span class='linenumber'>338</span> </span><span class="NAME">getShortcut</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">shortcut</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.shortcuts</span><span class="PUNC">[</span><span class="NAME">shortcut</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>339</span>
<span class='linenumber'>340</span> </span><span class="COMM">/**
<span class='linenumber'>341</span> * Returns entire keyboard shortcuts' map
<span class='linenumber'>342</span> */</span><span class="WHIT">
<span class='linenumber'>343</span> </span><span class="NAME">getShortcuts</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.shortcuts</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>344</span>
<span class='linenumber'>345</span> </span><span class="COMM">/**
<span class='linenumber'>346</span> * Remove keyboard shortcut matches with given keymap expression.
<span class='linenumber'>347</span> *
<span class='linenumber'>348</span> * @param {String} shortcut keymap expression like "CTRL+Space"
<span class='linenumber'>349</span> */</span><span class="WHIT">
<span class='linenumber'>350</span> </span><span class="NAME">removeShortcut</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">shortcut</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.config.shortcuts</span><span class="PUNC">[</span><span class="NAME">shortcut</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>351</span>
<span class='linenumber'>352</span> </span><span class="COMM">/**
<span class='linenumber'>353</span> * Adds or replaces autocorrection handler.
<span class='linenumber'>354</span> *
<span class='linenumber'>355</span> * @param {String} id unique identifier
<span class='linenumber'>356</span> * @param {Object} criteria regex pattern or function to be used as a criterion for match
<span class='linenumber'>357</span> * @param {Object} handler string or function to be evaluated or called when criteria met
<span class='linenumber'>358</span> */</span><span class="WHIT">
<span class='linenumber'>359</span> </span><span class="NAME">addAutocorrection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">criteria</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>360</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">criteria.exec</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>361</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pattern</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">criteria</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>362</span> </span><span class="NAME">criteria</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">text.match</span><span class="PUNC">(</span><span class="NAME">pattern</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>363</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>364</span> </span><span class="NAME">this.config.autocorrections</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="STRN">"criteria"</span><span class="PUNC">:</span><span class="NAME">criteria</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"handler"</span><span class="PUNC">:</span><span class="NAME">handler</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>365</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>366</span>
<span class='linenumber'>367</span> </span><span class="COMM">/**
<span class='linenumber'>368</span> * Adds several autocorrection handlers at once.
<span class='linenumber'>369</span> *
<span class='linenumber'>370</span> * @param {Array} list of autocorrection. each element should have following structure: {id:"identifier", criteria:criteria, handler:handler}
<span class='linenumber'>371</span> */</span><span class="WHIT">
<span class='linenumber'>372</span> </span><span class="NAME">addAutocorrections</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>373</span> </span><span class="NAME">list.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ac</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>374</span> </span><span class="NAME">this.addAutocorrection</span><span class="PUNC">(</span><span class="NAME">ac.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ac.criteria</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ac.handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>375</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>376</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>377</span>
<span class='linenumber'>378</span> </span><span class="COMM">/**
<span class='linenumber'>379</span> * Returns autocorrection handler matches with given id
<span class='linenumber'>380</span> *
<span class='linenumber'>381</span> * @param {String} id unique identifier
<span class='linenumber'>382</span> */</span><span class="WHIT">
<span class='linenumber'>383</span> </span><span class="NAME">getAutocorrection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.autocorrection</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>384</span>
<span class='linenumber'>385</span> </span><span class="COMM">/**
<span class='linenumber'>386</span> * Returns entire autocorrections' map
<span class='linenumber'>387</span> */</span><span class="WHIT">
<span class='linenumber'>388</span> </span><span class="NAME">getAutocorrections</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.autocorrections</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>389</span>
<span class='linenumber'>390</span> </span><span class="COMM">/**
<span class='linenumber'>391</span> * Removes autocorrection handler matches with given id
<span class='linenumber'>392</span> *
<span class='linenumber'>393</span> * @param {String} id unique identifier
<span class='linenumber'>394</span> */</span><span class="WHIT">
<span class='linenumber'>395</span> </span><span class="NAME">removeAutocorrection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.config.autocorrections</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>396</span>
<span class='linenumber'>397</span> </span><span class="COMM">/**
<span class='linenumber'>398</span> * Adds or replaces autocompletion handler.
<span class='linenumber'>399</span> *
<span class='linenumber'>400</span> * @param {String} id unique identifier
<span class='linenumber'>401</span> * @param {Object} criteria regex pattern or function to be used as a criterion for match
<span class='linenumber'>402</span> * @param {Object} handler string or function to be evaluated or called when criteria met
<span class='linenumber'>403</span> */</span><span class="WHIT">
<span class='linenumber'>404</span> </span><span class="NAME">addAutocompletion</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">criteria</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>405</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">criteria.exec</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>406</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pattern</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">criteria</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>407</span> </span><span class="NAME">criteria</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>408</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pattern.exec</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>409</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">m</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">m.index</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>410</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>411</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>412</span> </span><span class="NAME">this.config.autocompletions</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="STRN">"criteria"</span><span class="PUNC">:</span><span class="NAME">criteria</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"handler"</span><span class="PUNC">:</span><span class="NAME">handler</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>413</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>414</span>
<span class='linenumber'>415</span> </span><span class="COMM">/**
<span class='linenumber'>416</span> * Adds several autocompletion handlers at once.
<span class='linenumber'>417</span> *
<span class='linenumber'>418</span> * @param {Array} list of autocompletion. each element should have following structure: {id:"identifier", criteria:criteria, handler:handler}
<span class='linenumber'>419</span> */</span><span class="WHIT">
<span class='linenumber'>420</span> </span><span class="NAME">addAutocompletions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>421</span> </span><span class="NAME">list.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ac</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>422</span> </span><span class="NAME">this.addAutocompletion</span><span class="PUNC">(</span><span class="NAME">ac.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ac.criteria</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ac.handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>423</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>424</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>425</span>
<span class='linenumber'>426</span> </span><span class="COMM">/**
<span class='linenumber'>427</span> * Returns autocompletion handler matches with given id
<span class='linenumber'>428</span> *
<span class='linenumber'>429</span> * @param {String} id unique identifier
<span class='linenumber'>430</span> */</span><span class="WHIT">
<span class='linenumber'>431</span> </span><span class="NAME">getAutocompletion</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.autocompletions</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>432</span>
<span class='linenumber'>433</span> </span><span class="COMM">/**
<span class='linenumber'>434</span> * Returns entire autocompletions' map
<span class='linenumber'>435</span> */</span><span class="WHIT">
<span class='linenumber'>436</span> </span><span class="NAME">getAutocompletions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.autocompletions</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>437</span>
<span class='linenumber'>438</span> </span><span class="COMM">/**
<span class='linenumber'>439</span> * Removes autocompletion handler matches with given id
<span class='linenumber'>440</span> *
<span class='linenumber'>441</span> * @param {String} id unique identifier
<span class='linenumber'>442</span> */</span><span class="WHIT">
<span class='linenumber'>443</span> </span><span class="NAME">removeAutocompletion</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.config.autocompletions</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>444</span>
<span class='linenumber'>445</span> </span><span class="COMM">/**
<span class='linenumber'>446</span> * Adds or replaces template processor.
<span class='linenumber'>447</span> *
<span class='linenumber'>448</span> * @param {String} id unique identifier
<span class='linenumber'>449</span> * @param {Object} handler string or function to be evaluated or called when template inserted
<span class='linenumber'>450</span> */</span><span class="WHIT">
<span class='linenumber'>451</span> </span><span class="NAME">addTemplateProcessor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>452</span> </span><span class="NAME">this.config.templateProcessors</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="STRN">"handler"</span><span class="PUNC">:</span><span class="NAME">handler</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>453</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>454</span>
<span class='linenumber'>455</span> </span><span class="COMM">/**
<span class='linenumber'>456</span> * Adds several template processors at once.
<span class='linenumber'>457</span> *
<span class='linenumber'>458</span> * @param {Array} list of template processors. Each element should have following structure: {id:"identifier", handler:handler}
<span class='linenumber'>459</span> */</span><span class="WHIT">
<span class='linenumber'>460</span> </span><span class="NAME">addTemplateProcessors</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>461</span> </span><span class="NAME">list.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">tp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>462</span> </span><span class="NAME">this.addTemplateProcessor</span><span class="PUNC">(</span><span class="NAME">tp.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tp.handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>463</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>464</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>465</span>
<span class='linenumber'>466</span> </span><span class="COMM">/**
<span class='linenumber'>467</span> * Returns template processor matches with given id
<span class='linenumber'>468</span> *
<span class='linenumber'>469</span> * @param {String} id unique identifier
<span class='linenumber'>470</span> */</span><span class="WHIT">
<span class='linenumber'>471</span> </span><span class="NAME">getTemplateProcessor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.templateProcessors</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>472</span>
<span class='linenumber'>473</span> </span><span class="COMM">/**
<span class='linenumber'>474</span> * Returns entire template processors' map
<span class='linenumber'>475</span> */</span><span class="WHIT">
<span class='linenumber'>476</span> </span><span class="NAME">getTemplateProcessors</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.templateProcessors</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>477</span>
<span class='linenumber'>478</span> </span><span class="COMM">/**
<span class='linenumber'>479</span> * Removes template processor matches with given id
<span class='linenumber'>480</span> *
<span class='linenumber'>481</span> * @param {String} id unique identifier
<span class='linenumber'>482</span> */</span><span class="WHIT">
<span class='linenumber'>483</span> </span><span class="NAME">removeTemplateProcessor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.config.templateProcessors</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>484</span>
<span class='linenumber'>485</span>
<span class='linenumber'>486</span>
<span class='linenumber'>487</span> </span><span class="COMM">/**
<span class='linenumber'>488</span> * Adds or replaces context menu handler.
<span class='linenumber'>489</span> *
<span class='linenumber'>490</span> * @param {String} id unique identifier
<span class='linenumber'>491</span> * @param {Object} handler string or function to be evaluated or called when onContextMenu occured
<span class='linenumber'>492</span> */</span><span class="WHIT">
<span class='linenumber'>493</span> </span><span class="NAME">addContextMenuHandler</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>494</span> </span><span class="NAME">this.config.contextMenuHandlers</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="STRN">"handler"</span><span class="PUNC">:</span><span class="NAME">handler</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>495</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>496</span>
<span class='linenumber'>497</span> </span><span class="COMM">/**
<span class='linenumber'>498</span> * Adds several context menu handlers at once.
<span class='linenumber'>499</span> *
<span class='linenumber'>500</span> * @param {Array} list of handlers. Each element should have following structure: {id:"identifier", handler:handler}
<span class='linenumber'>501</span> */</span><span class="WHIT">
<span class='linenumber'>502</span> </span><span class="NAME">addContextMenuHandlers</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>503</span> </span><span class="NAME">list.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mh</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>504</span> </span><span class="NAME">this.addContextMenuHandler</span><span class="PUNC">(</span><span class="NAME">mh.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mh.handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>505</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>506</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>507</span>
<span class='linenumber'>508</span> </span><span class="COMM">/**
<span class='linenumber'>509</span> * Returns context menu handler matches with given id
<span class='linenumber'>510</span> *
<span class='linenumber'>511</span> * @param {String} id unique identifier
<span class='linenumber'>512</span> */</span><span class="WHIT">
<span class='linenumber'>513</span> </span><span class="NAME">getContextMenuHandler</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.contextMenuHandlers</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>514</span>
<span class='linenumber'>515</span> </span><span class="COMM">/**
<span class='linenumber'>516</span> * Returns entire context menu handlers' map
<span class='linenumber'>517</span> */</span><span class="WHIT">
<span class='linenumber'>518</span> </span><span class="NAME">getContextMenuHandlers</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.config.contextMenuHandlers</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>519</span>
<span class='linenumber'>520</span> </span><span class="COMM">/**
<span class='linenumber'>521</span> * Removes context menu handler matches with given id
<span class='linenumber'>522</span> *
<span class='linenumber'>523</span> * @param {String} id unique identifier
<span class='linenumber'>524</span> */</span><span class="WHIT">
<span class='linenumber'>525</span> </span><span class="NAME">removeContextMenuHandler</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.config.contextMenuHandlers</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>526</span>
<span class='linenumber'>527</span>
<span class='linenumber'>528</span>
<span class='linenumber'>529</span> </span><span class="COMM">/////////////////////////////////////////////</span><span class="WHIT">
<span class='linenumber'>530</span> </span><span class="COMM">// Edit mode management</span><span class="WHIT">
<span class='linenumber'>531</span>
<span class='linenumber'>532</span> </span><span class="COMM">/**
<span class='linenumber'>533</span> * Returns current edit mode - readonly, wysiwyg, source
<span class='linenumber'>534</span> */</span><span class="WHIT">
<span class='linenumber'>535</span> </span><span class="NAME">getCurrentEditMode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>536</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.currentEditMode</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>537</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>538</span>
<span class='linenumber'>539</span> </span><span class="NAME">toggleSourceAndWysiwygMode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>540</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentEditMode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>541</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'readonly'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>542</span> </span><span class="NAME">this.setEditMode</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'wysiwyg'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'source'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'wysiwyg'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>543</span>
<span class='linenumber'>544</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>545</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>546</span>
<span class='linenumber'>547</span> </span><span class="COMM">/**
<span class='linenumber'>548</span> * Switches between edit-mode/normal mode.
<span class='linenumber'>549</span> *
<span class='linenumber'>550</span> * @param {Object} mode false or 'readonly' means read-only mode, true or 'wysiwyg' means WYSIWYG editing mode, and 'source' means source editing mode.
<span class='linenumber'>551</span> */</span><span class="WHIT">
<span class='linenumber'>552</span> </span><span class="NAME">setEditMode</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>553</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.currentEditMode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>554</span>
<span class='linenumber'>555</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">firstCall</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'readonly'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.outmostWrapper</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>556</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">firstCall</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>557</span> </span><span class="COMM">// Create editor element if needed</span><span class="WHIT">
<span class='linenumber'>558</span> </span><span class="NAME">this._createEditorFrame</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>559</span> </span><span class="NAME">this._registerEventHandlers</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>560</span>
<span class='linenumber'>561</span> </span><span class="NAME">this.loadCurrentContentFromStaticContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>562</span> </span><span class="NAME">this.editHistory</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.EditHistory</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>563</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>564</span>
<span class='linenumber'>565</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'wysiwyg'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>566</span> </span><span class="COMM">// Update contents</span><span class="WHIT">
<span class='linenumber'>567</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.currentEditMode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'source'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.setStaticContent</span><span class="PUNC">(</span><span class="NAME">this.getSourceContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>568</span> </span><span class="NAME">this.loadCurrentContentFromStaticContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>569</span>
<span class='linenumber'>570</span> </span><span class="COMM">// Make static content invisible</span><span class="WHIT">
<span class='linenumber'>571</span> </span><span class="NAME">this.contentElement.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>572</span>
<span class='linenumber'>573</span> </span><span class="COMM">// Make WYSIWYG editor visible</span><span class="WHIT">
<span class='linenumber'>574</span> </span><span class="NAME">this.sourceEditorDiv.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>575</span> </span><span class="NAME">this.wysiwygEditorDiv.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"block"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>576</span> </span><span class="NAME">this.outmostWrapper.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"block"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>577</span>
<span class='linenumber'>578</span> </span><span class="NAME">this.currentEditMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>579</span>
<span class='linenumber'>580</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>581</span> </span><span class="NAME">window.setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>582</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">designMode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'On'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>583</span>
<span class='linenumber'>584</span> </span><span class="COMM">// Without it, Firefox doesn't display embedded SWF</span><span class="WHIT">
<span class='linenumber'>585</span> </span><span class="NAME">this.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">designMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'On'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>586</span>
<span class='linenumber'>587</span> </span><span class="COMM">// turn off Firefox's table editing feature</span><span class="WHIT">
<span class='linenumber'>588</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">this.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">execCommand</span><span class="PUNC">(</span><span class="STRN">"enableInlineTableEditing"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"false"</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">ignored</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>589</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>590</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>591</span>
<span class='linenumber'>592</span> </span><span class="NAME">this.enableToolbarButtons</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>593</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">firstCall</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>594</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'source'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>595</span> </span><span class="COMM">// Update contents</span><span class="WHIT">
<span class='linenumber'>596</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.currentEditMode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'wysiwyg'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.setStaticContent</span><span class="PUNC">(</span><span class="NAME">this.getWysiwygContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>597</span> </span><span class="NAME">this.loadCurrentContentFromStaticContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>598</span>
<span class='linenumber'>599</span> </span><span class="COMM">// Make static content invisible</span><span class="WHIT">
<span class='linenumber'>600</span> </span><span class="NAME">this.contentElement.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>601</span>
<span class='linenumber'>602</span> </span><span class="COMM">// Make source editor visible</span><span class="WHIT">
<span class='linenumber'>603</span> </span><span class="NAME">this.sourceEditorDiv.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"block"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>604</span> </span><span class="NAME">this.wysiwygEditorDiv.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>605</span> </span><span class="NAME">this.outmostWrapper.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"block"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>606</span>
<span class='linenumber'>607</span> </span><span class="NAME">this.currentEditMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>608</span>
<span class='linenumber'>609</span> </span><span class="NAME">this.disableToolbarButtons</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">'html'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>610</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">firstCall</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>611</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>612</span> </span><span class="COMM">// Update contents</span><span class="WHIT">
<span class='linenumber'>613</span> </span><span class="NAME">this.setStaticContent</span><span class="PUNC">(</span><span class="NAME">this.getCurrentContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>614</span> </span><span class="NAME">this.loadCurrentContentFromStaticContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>615</span>
<span class='linenumber'>616</span> </span><span class="COMM">// Make editor and toolbar invisible</span><span class="WHIT">
<span class='linenumber'>617</span> </span><span class="NAME">this.outmostWrapper.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>618</span>
<span class='linenumber'>619</span> </span><span class="COMM">// Make static content visible</span><span class="WHIT">
<span class='linenumber'>620</span> </span><span class="NAME">this.contentElement.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"block"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>621</span>
<span class='linenumber'>622</span> </span><span class="NAME">this.currentEditMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>623</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>624</span>
<span class='linenumber'>625</span> </span><span class="NAME">this._fireOnCurrentEditModeChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>626</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>627</span>
<span class='linenumber'>628</span> </span><span class="COMM">/**
<span class='linenumber'>629</span> * Load CSS into editing-mode document
<span class='linenumber'>630</span> *
<span class='linenumber'>631</span> * @param {string} path URL
<span class='linenumber'>632</span> */</span><span class="WHIT">
<span class='linenumber'>633</span> </span><span class="NAME">loadStylesheet</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>634</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">head</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editorDoc.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"HEAD"</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>635</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">link</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editorDoc.createElement</span><span class="PUNC">(</span><span class="STRN">"LINK"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>636</span> </span><span class="NAME">link.rel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Stylesheet"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>637</span> </span><span class="NAME">link.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"text/css"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>638</span> </span><span class="NAME">link.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>639</span> </span><span class="NAME">head.appendChild</span><span class="PUNC">(</span><span class="NAME">link</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>640</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>641</span>
<span class='linenumber'>642</span> </span><span class="COMM">/**
<span class='linenumber'>643</span> * Sets editor's dynamic content from static content
<span class='linenumber'>644</span> */</span><span class="WHIT">
<span class='linenumber'>645</span> </span><span class="NAME">loadCurrentContentFromStaticContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>646</span> </span><span class="COMM">// update WYSIWYG editor</span><span class="WHIT">
<span class='linenumber'>647</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.validator.invalidate</span><span class="PUNC">(</span><span class="NAME">this.getStaticContentAsDOM</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>648</span> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.removeUnnecessarySpaces</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>649</span>
<span class='linenumber'>650</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">html.blank</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>651</span> </span><span class="NAME">this.rdom.clearRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>652</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>653</span> </span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">html</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>654</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>655</span> </span><span class="NAME">this.rdom.wrapAllInlineOrTextNodesAs</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>656</span>
<span class='linenumber'>657</span> </span><span class="COMM">// update source editor</span><span class="WHIT">
<span class='linenumber'>658</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">source</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getWysiwygContent</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>659</span>
<span class='linenumber'>660</span> </span><span class="NAME">this.sourceEditorTextarea.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>661</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isWebkit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>662</span> </span><span class="NAME">this.sourceEditorTextarea.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">source</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>663</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>664</span>
<span class='linenumber'>665</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>666</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>667</span>
<span class='linenumber'>668</span> </span><span class="COMM">/**
<span class='linenumber'>669</span> * Enables all toolbar buttons
<span class='linenumber'>670</span> *
<span class='linenumber'>671</span> * @param {Array} [exceptions] array of string containing classnames to exclude
<span class='linenumber'>672</span> */</span><span class="WHIT">
<span class='linenumber'>673</span> </span><span class="NAME">enableToolbarButtons</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">exceptions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>674</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.toolbarContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>675</span>
<span class='linenumber'>676</span> </span><span class="NAME">this._execForAllToolbarButtons</span><span class="PUNC">(</span><span class="NAME">exceptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">li</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exception</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>677</span> </span><span class="NAME">li.firstChild.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">exception</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>678</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>679</span>
<span class='linenumber'>680</span> </span><span class="COMM">// Toolbar image icon disappears without following code:</span><span class="WHIT">
<span class='linenumber'>681</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isIE6</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>682</span> </span><span class="NAME">this.toolbarContainer.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>683</span> </span><span class="NAME">setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">this.toolbarContainer.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'block'</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>684</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>685</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>686</span>
<span class='linenumber'>687</span> </span><span class="COMM">/**
<span class='linenumber'>688</span> * Disables all toolbar buttons
<span class='linenumber'>689</span> *
<span class='linenumber'>690</span> * @param {Array} [exceptions] array of string containing classnames to exclude
<span class='linenumber'>691</span> */</span><span class="WHIT">
<span class='linenumber'>692</span> </span><span class="NAME">disableToolbarButtons</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">exceptions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>693</span> </span><span class="NAME">this._execForAllToolbarButtons</span><span class="PUNC">(</span><span class="NAME">exceptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">li</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exception</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>694</span> </span><span class="NAME">li.firstChild.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">exception</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'disabled'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>695</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>696</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>697</span>
<span class='linenumber'>698</span> </span><span class="NAME">_execForAllToolbarButtons</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">exceptions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exec</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>699</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.toolbarContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>700</span> </span><span class="NAME">exceptions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">exceptions</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>701</span>
<span class='linenumber'>702</span> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">this.toolbarContainer</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">select</span><span class="PUNC">(</span><span class="STRN">'li'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">li</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>703</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buttonsClassName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">li.classNames</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">find</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'xq_separator'</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>704</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">exception</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">exceptions.include</span><span class="PUNC">(</span><span class="NAME">buttonsClassName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>705</span> </span><span class="NAME">exec</span><span class="PUNC">(</span><span class="NAME">li</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exception</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>706</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>707</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>708</span>
<span class='linenumber'>709</span> </span><span class="NAME">_updateToolbarButtonStatus</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">buttonClassName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selected</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>710</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">button</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.toolbarButtons.get</span><span class="PUNC">(</span><span class="NAME">buttonClassName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>711</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">button</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">button.firstChild.firstChild.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">selected</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'selected'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>712</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>713</span>
<span class='linenumber'>714</span> </span><span class="NAME">updateAllToolbarButtonsStatus</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>715</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.toolbarContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>716</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.toolbarButtons</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>717</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">classNames</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='linenumber'>718</span> </span><span class="STRN">"emphasis"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"strongEmphasis"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"underline"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"strike"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"superscription"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"subscription"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>719</span> </span><span class="STRN">"justifyLeft"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"justifyCenter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"justifyRight"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"justifyBoth"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>720</span> </span><span class="STRN">"unorderedList"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"orderedList"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"code"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>721</span> </span><span class="STRN">"paragraph"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"heading1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"heading2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"heading3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"heading4"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"heading5"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"heading6"</span><span class="WHIT">
<span class='linenumber'>722</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>723</span>
<span class='linenumber'>724</span> </span><span class="NAME">this.toolbarButtons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$H</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>725</span>
<span class='linenumber'>726</span> </span><span class="NAME">classNames.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>727</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">this.toolbarContainer</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getElementsBySelector</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">className</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>728</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">button</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">found.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">found</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>729</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">button</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.toolbarButtons.set</span><span class="PUNC">(</span><span class="NAME">className</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">button</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>730</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>731</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>732</span>
<span class='linenumber'>733</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buttons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.toolbarButtons</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>734</span>
<span class='linenumber'>735</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.collectStructureAndStyle</span><span class="PUNC">(</span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>736</span>
<span class='linenumber'>737</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'emphasis'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.em</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>738</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'strongEmphasis'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.strong</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>739</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'underline'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.underline</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>740</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'strike'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.strike</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>741</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'superscription'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.superscription</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>742</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'subscription'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.subscription</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>743</span>
<span class='linenumber'>744</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'justifyLeft'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.justification</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'left'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>745</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'justifyCenter'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.justification</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'center'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>746</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'justifyRight'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.justification</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'right'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>747</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'justifyBoth'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.justification</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'justify'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>748</span>
<span class='linenumber'>749</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'orderedList'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.list</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'OL'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>750</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'unorderedList'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.list</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'UL'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>751</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'code'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.list</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'CODE'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>752</span>
<span class='linenumber'>753</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'paragraph'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.block</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'P'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>754</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'heading1'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.block</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'H1'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>755</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'heading2'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.block</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'H2'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>756</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'heading3'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.block</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'H3'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>757</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'heading4'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.block</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'H4'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>758</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'heading5'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.block</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'H5'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>759</span> </span><span class="NAME">this._updateToolbarButtonStatus</span><span class="PUNC">(</span><span class="STRN">'heading6'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">info.block</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'H6'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>760</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>761</span>
<span class='linenumber'>762</span> </span><span class="NAME">removeUnnecessarySpaces</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>763</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.tree.getBlockTags</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">join</span><span class="PUNC">(</span><span class="STRN">"|"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>764</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">regex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">"\\s*&lt;(/?)("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")>\\s*"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"img"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>765</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">html.replace</span><span class="PUNC">(</span><span class="NAME">regex</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'&lt;$1$2>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>766</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>767</span>
<span class='linenumber'>768</span> </span><span class="COMM">/**
<span class='linenumber'>769</span> * Gets editor's dynamic content from current editor(source or WYSIWYG)
<span class='linenumber'>770</span> *
<span class='linenumber'>771</span> * @return {Object} HTML String
<span class='linenumber'>772</span> */</span><span class="WHIT">
<span class='linenumber'>773</span> </span><span class="NAME">getCurrentContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>774</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.getCurrentEditMode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'source'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>775</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getSourceContent</span><span class="PUNC">(</span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>776</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>777</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getWysiwygContent</span><span class="PUNC">(</span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>778</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>779</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>780</span>
<span class='linenumber'>781</span> </span><span class="COMM">/**
<span class='linenumber'>782</span> * Gets editor's dynamic content from WYSIWYG editor
<span class='linenumber'>783</span> *
<span class='linenumber'>784</span> * @return {Object} HTML String
<span class='linenumber'>785</span> */</span><span class="WHIT">
<span class='linenumber'>786</span> </span><span class="NAME">getWysiwygContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">performFullValidation</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dontUseCache</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>787</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">dontUseCache</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.validator.validate</span><span class="PUNC">(</span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>788</span>
<span class='linenumber'>789</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lastModified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.getLastModifiedDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>790</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._lastModified</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">lastModified</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>791</span> </span><span class="NAME">this._validContentCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.validator.validate</span><span class="PUNC">(</span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>792</span> </span><span class="NAME">this._lastModified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lastModified</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>793</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>794</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._validContentCache</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>795</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>796</span>
<span class='linenumber'>797</span> </span><span class="COMM">/**
<span class='linenumber'>798</span> * Gets editor's dynamic content from source editor
<span class='linenumber'>799</span> *
<span class='linenumber'>800</span> * @return {Object} HTML String
<span class='linenumber'>801</span> */</span><span class="WHIT">
<span class='linenumber'>802</span> </span><span class="NAME">getSourceContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>803</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">raw</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sourceEditorTextarea</span><span class="PUNC">[</span><span class="NAME">xq.Browser.isWebkit</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'innerHTML'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>804</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tempDiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>805</span> </span><span class="NAME">tempDiv.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.removeUnnecessarySpaces</span><span class="PUNC">(</span><span class="NAME">raw</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>806</span>
<span class='linenumber'>807</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rdom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xq.RichDom.createInstance</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>808</span> </span><span class="NAME">rdom.setRoot</span><span class="PUNC">(</span><span class="NAME">document.body</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>809</span> </span><span class="NAME">rdom.wrapAllInlineOrTextNodesAs</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tempDiv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>810</span>
<span class='linenumber'>811</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.validator.validate</span><span class="PUNC">(</span><span class="NAME">tempDiv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">performFullValidation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>812</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>813</span>
<span class='linenumber'>814</span> </span><span class="COMM">/**
<span class='linenumber'>815</span> * Sets editor's original content
<span class='linenumber'>816</span> *
<span class='linenumber'>817</span> * @param {Object} content HTML String
<span class='linenumber'>818</span> */</span><span class="WHIT">
<span class='linenumber'>819</span> </span><span class="NAME">setStaticContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">content</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>820</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.contentElement.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'TEXTAREA'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>821</span> </span><span class="NAME">this.contentElement.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>822</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isWebkit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>823</span> </span><span class="NAME">this.contentElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>824</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>825</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>826</span> </span><span class="NAME">this.contentElement.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>827</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>828</span> </span><span class="NAME">this._fireOnStaticContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>829</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>830</span>
<span class='linenumber'>831</span> </span><span class="COMM">/**
<span class='linenumber'>832</span> * Gets editor's original content
<span class='linenumber'>833</span> *
<span class='linenumber'>834</span> * @return {Object} HTML String
<span class='linenumber'>835</span> */</span><span class="WHIT">
<span class='linenumber'>836</span> </span><span class="NAME">getStaticContent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>837</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>838</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.contentElement.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'TEXTAREA'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>839</span> </span><span class="NAME">content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.contentElement</span><span class="PUNC">[</span><span class="NAME">xq.Browser.isWebkit</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'innerHTML'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>840</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>841</span> </span><span class="NAME">content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.contentElement.innerHTML</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>842</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>843</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>844</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>845</span>
<span class='linenumber'>846</span> </span><span class="COMM">/**
<span class='linenumber'>847</span> * Gets editor's original content as DOM node
<span class='linenumber'>848</span> *
<span class='linenumber'>849</span> * @return {Object} HTML String
<span class='linenumber'>850</span> */</span><span class="WHIT">
<span class='linenumber'>851</span> </span><span class="NAME">getStaticContentAsDOM</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>852</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.contentElement.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'TEXTAREA'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>853</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">div</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'DIV'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>854</span> </span><span class="NAME">div.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.contentElement</span><span class="PUNC">[</span><span class="NAME">xq.Browser.isWebkit</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'innerHTML'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'value'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>855</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">div</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>856</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>857</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.contentElement</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>858</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>859</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>860</span>
<span class='linenumber'>861</span> </span><span class="COMM">/**
<span class='linenumber'>862</span> * Gives focus to editor
<span class='linenumber'>863</span> */</span><span class="WHIT">
<span class='linenumber'>864</span> </span><span class="NAME">focus</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>865</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.getCurrentEditMode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'wysiwyg'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>866</span> </span><span class="NAME">this.rdom.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>867</span> </span><span class="NAME">window.setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>868</span> </span><span class="NAME">this.updateAllToolbarButtonsStatus</span><span class="PUNC">(</span><span class="NAME">this.rdom.getCurrentElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>869</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>870</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.getCurrentEditMode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'source'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>871</span> </span><span class="NAME">this.sourceEditorTextarea.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>872</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>873</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>874</span>
<span class='linenumber'>875</span> </span><span class="COMM">/**
<span class='linenumber'>876</span> * Returns designmode iframe object
<span class='linenumber'>877</span> */</span><span class="WHIT">
<span class='linenumber'>878</span> </span><span class="NAME">getFrame</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>879</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.editorFrame</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>880</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>881</span>
<span class='linenumber'>882</span> </span><span class="COMM">/**
<span class='linenumber'>883</span> * Returns designmode window object
<span class='linenumber'>884</span> */</span><span class="WHIT">
<span class='linenumber'>885</span> </span><span class="NAME">getWin</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>886</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.editorWin</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>887</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>888</span>
<span class='linenumber'>889</span> </span><span class="COMM">/**
<span class='linenumber'>890</span> * Returns designmode document object
<span class='linenumber'>891</span> */</span><span class="WHIT">
<span class='linenumber'>892</span> </span><span class="NAME">getDoc</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>893</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.editorDoc</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>894</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>895</span>
<span class='linenumber'>896</span> </span><span class="COMM">/**
<span class='linenumber'>897</span> * Returns outmost wrapper element
<span class='linenumber'>898</span> */</span><span class="WHIT">
<span class='linenumber'>899</span> </span><span class="NAME">getOutmostWrapper</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>900</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.outmostWrapper</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>901</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>902</span>
<span class='linenumber'>903</span> </span><span class="COMM">/**
<span class='linenumber'>904</span> * Returns designmode body object
<span class='linenumber'>905</span> */</span><span class="WHIT">
<span class='linenumber'>906</span> </span><span class="NAME">getBody</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>907</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.editorBody</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>908</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>909</span>
<span class='linenumber'>910</span> </span><span class="NAME">_createEditorFrame</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>911</span> </span><span class="COMM">// create outer DIV</span><span class="WHIT">
<span class='linenumber'>912</span> </span><span class="NAME">this.outmostWrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>913</span> </span><span class="NAME">this.outmostWrapper.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"xquared"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>914</span>
<span class='linenumber'>915</span> </span><span class="NAME">this.contentElement.parentNode.insertBefore</span><span class="PUNC">(</span><span class="NAME">this.outmostWrapper</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.contentElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>916</span>
<span class='linenumber'>917</span> </span><span class="COMM">// create toolbar is needed</span><span class="WHIT">
<span class='linenumber'>918</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.toolbarContainer</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.config.generateDefaultToolbar</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>919</span> </span><span class="NAME">this.toolbarContainer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._generateDefaultToolbar</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>920</span> </span><span class="NAME">this.outmostWrapper.appendChild</span><span class="PUNC">(</span><span class="NAME">this.toolbarContainer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>921</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>922</span>
<span class='linenumber'>923</span> </span><span class="COMM">// create source editor div</span><span class="WHIT">
<span class='linenumber'>924</span> </span><span class="NAME">this.sourceEditorDiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>925</span> </span><span class="NAME">this.sourceEditorDiv.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"editor source_editor"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//TODO: remove editor</span><span class="WHIT">
<span class='linenumber'>926</span> </span><span class="NAME">this.sourceEditorDiv.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>927</span> </span><span class="NAME">this.outmostWrapper.appendChild</span><span class="PUNC">(</span><span class="NAME">this.sourceEditorDiv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>928</span>
<span class='linenumber'>929</span> </span><span class="COMM">// create TEXTAREA for source editor</span><span class="WHIT">
<span class='linenumber'>930</span> </span><span class="NAME">this.sourceEditorTextarea</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'textarea'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>931</span> </span><span class="NAME">this.sourceEditorDiv.appendChild</span><span class="PUNC">(</span><span class="NAME">this.sourceEditorTextarea</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>932</span>
<span class='linenumber'>933</span> </span><span class="COMM">// create WYSIWYG editor div</span><span class="WHIT">
<span class='linenumber'>934</span> </span><span class="NAME">this.wysiwygEditorDiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>935</span> </span><span class="NAME">this.wysiwygEditorDiv.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"editor wysiwyg_editor"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//TODO: remove editor</span><span class="WHIT">
<span class='linenumber'>936</span> </span><span class="NAME">this.wysiwygEditorDiv.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>937</span> </span><span class="NAME">this.outmostWrapper.appendChild</span><span class="PUNC">(</span><span class="NAME">this.wysiwygEditorDiv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>938</span>
<span class='linenumber'>939</span> </span><span class="COMM">// create designmode iframe for WYSIWYG editor</span><span class="WHIT">
<span class='linenumber'>940</span> </span><span class="NAME">this.editorFrame</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'iframe'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>941</span> </span><span class="NAME">this.rdom.setAttributes</span><span class="PUNC">(</span><span class="NAME">this.editorFrame</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>942</span> </span><span class="STRN">"frameBorder"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"0"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>943</span> </span><span class="STRN">"marginWidth"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"0"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>944</span> </span><span class="STRN">"marginHeight"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"0"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>945</span> </span><span class="STRN">"leftMargin"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"0"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>946</span> </span><span class="STRN">"topMargin"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"0"</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>947</span> </span><span class="STRN">"allowTransparency"</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"true"</span><span class="WHIT">
<span class='linenumber'>948</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>949</span> </span><span class="NAME">this.wysiwygEditorDiv.appendChild</span><span class="PUNC">(</span><span class="NAME">this.editorFrame</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>950</span>
<span class='linenumber'>951</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editorFrame.contentWindow.document</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>952</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">doc.designMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'On'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>953</span>
<span class='linenumber'>954</span> </span><span class="NAME">doc.open</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>955</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>956</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>957</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;head>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>958</span>
<span class='linenumber'>959</span> </span><span class="COMM">// it is needed to force href of pasted content to be an absolute url</span><span class="WHIT">
<span class='linenumber'>960</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;base href="./" />'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>961</span>
<span class='linenumber'>962</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>963</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;title>XQuared&lt;/title>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>964</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.config.changeCursorOnLink</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;style>.xed a {cursor: pointer !important;}&lt;/style>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>965</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;/head>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>966</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;body>&lt;p>'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.rdom.makePlaceHolderString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'&lt;/p>&lt;/body>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>967</span> </span><span class="NAME">doc.write</span><span class="PUNC">(</span><span class="STRN">'&lt;/html>'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>968</span> </span><span class="NAME">doc.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>969</span>
<span class='linenumber'>970</span> </span><span class="NAME">this.editorWin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editorFrame.contentWindow</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>971</span> </span><span class="NAME">this.editorDoc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editorWin.document</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>972</span> </span><span class="NAME">this.editorBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editorDoc.body</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>973</span> </span><span class="NAME">this.editorBody.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"xed"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>974</span>
<span class='linenumber'>975</span> </span><span class="COMM">// it is needed to fix IE6 horizontal scrollbar problem</span><span class="WHIT">
<span class='linenumber'>976</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isIE6</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>977</span> </span><span class="NAME">this.editorDoc.documentElement.style.overflowY</span><span class="PUNC">=</span><span class="STRN">'auto'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>978</span> </span><span class="NAME">this.editorDoc.documentElement.style.overflowX</span><span class="PUNC">=</span><span class="STRN">'hidden'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>979</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>980</span>
<span class='linenumber'>981</span> </span><span class="NAME">this.rdom.setWin</span><span class="PUNC">(</span><span class="NAME">this.editorWin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>982</span> </span><span class="NAME">this.rdom.setRoot</span><span class="PUNC">(</span><span class="NAME">this.editorBody</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>983</span> </span><span class="NAME">this.validator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xq.Validator.createInstance</span><span class="PUNC">(</span><span class="NAME">this.doc.location.href</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.config.urlValidationMode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.config.allowedTags</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.config.allowedAttributes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>984</span>
<span class='linenumber'>985</span> </span><span class="COMM">// hook onsubmit of form</span><span class="WHIT">
<span class='linenumber'>986</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.config.automaticallyHookSubmitEvent</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.contentElement.nodeName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'TEXTAREA'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.contentElement.form</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>987</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">original</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.contentElement.form.onsubmit</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>988</span>
<span class='linenumber'>989</span> </span><span class="NAME">this.contentElement.form.onsubmit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>990</span> </span><span class="NAME">this.contentElement.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentContent</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>991</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">original</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>992</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">original</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>993</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>994</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>995</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>996</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>997</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>998</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>999</span>
<span class='linenumber'>1000</span> </span><span class="NAME">_addStyleRule</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">selector</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rule</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1001</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.dynamicStyle</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1002</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1003</span> </span><span class="NAME">this.dynamicStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createStyleSheet</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1004</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1005</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">style</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'style'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1006</span> </span><span class="NAME">this.doc.body.appendChild</span><span class="PUNC">(</span><span class="NAME">style</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1007</span> </span><span class="NAME">this.dynamicStyle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">this.doc.styleSheets</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1008</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1009</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1010</span>
<span class='linenumber'>1011</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1012</span> </span><span class="NAME">this.dynamicStyle.addRule</span><span class="PUNC">(</span><span class="NAME">selector</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rule</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1013</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1014</span> </span><span class="NAME">this.dynamicStyle.insertRule</span><span class="PUNC">(</span><span class="NAME">selector</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" {"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">rule</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"}"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.dynamicStyle.cssRules.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1015</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1016</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1017</span>
<span class='linenumber'>1018</span> </span><span class="NAME">_generateDefaultToolbar</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1019</span> </span><span class="COMM">// override image path</span><span class="WHIT">
<span class='linenumber'>1020</span> </span><span class="NAME">this._addStyleRule</span><span class="PUNC">(</span><span class="STRN">".xquared div.toolbar"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"background-image: url("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.config.imagePathForDefaultToobar</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"toolbarBg.gif)"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1021</span> </span><span class="NAME">this._addStyleRule</span><span class="PUNC">(</span><span class="STRN">".xquared ul.buttons li"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"background-image: url("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.config.imagePathForDefaultToobar</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"toolbarButtonBg.gif)"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1022</span> </span><span class="NAME">this._addStyleRule</span><span class="PUNC">(</span><span class="STRN">".xquared ul.buttons li.xq_separator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"background-image: url("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.config.imagePathForDefaultToobar</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"toolbarSeparator.gif)"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1023</span>
<span class='linenumber'>1024</span> </span><span class="COMM">// outmost container</span><span class="WHIT">
<span class='linenumber'>1025</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">container</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'div'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1026</span> </span><span class="NAME">container.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'toolbar'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1027</span>
<span class='linenumber'>1028</span> </span><span class="COMM">// button container</span><span class="WHIT">
<span class='linenumber'>1029</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buttons</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'ul'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1030</span> </span><span class="NAME">buttons.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'buttons'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1031</span> </span><span class="NAME">container.appendChild</span><span class="PUNC">(</span><span class="NAME">buttons</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1032</span>
<span class='linenumber'>1033</span> </span><span class="COMM">// Generate buttons from map and append it to button container</span><span class="WHIT">
<span class='linenumber'>1034</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cancelMousedown</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">Event.stop</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1035</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">map</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.config.defaultToolbarButtonMap</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1036</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">map.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1037</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">map</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1038</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buttonConfig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">map</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">j</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1039</span>
<span class='linenumber'>1040</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">li</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'li'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1041</span> </span><span class="NAME">buttons.appendChild</span><span class="PUNC">(</span><span class="NAME">li</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1042</span> </span><span class="NAME">li.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">buttonConfig.className</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1043</span>
<span class='linenumber'>1044</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">span</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'span'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1045</span> </span><span class="NAME">li.appendChild</span><span class="PUNC">(</span><span class="NAME">span</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1046</span>
<span class='linenumber'>1047</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'a'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1048</span> </span><span class="NAME">span.appendChild</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1049</span> </span><span class="NAME">a.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'#'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1050</span> </span><span class="NAME">a.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">buttonConfig.title</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1051</span> </span><span class="NAME">a.handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">buttonConfig.handler</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1052</span> </span><span class="NAME">a.xed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1053</span> </span><span class="NAME">Event.observe</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'mousedown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cancelMousedown</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1054</span> </span><span class="NAME">Event.observe</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1055</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.xed</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1056</span>
<span class='linenumber'>1057</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">$</span><span class="PUNC">(</span><span class="NAME">this.parentNode</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">hasClassName</span><span class="PUNC">(</span><span class="STRN">'disabled'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">xed.toolbarContainer.hasClassName</span><span class="PUNC">(</span><span class="STRN">'disabled'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1058</span> </span><span class="NAME">Event.stop</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1059</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1060</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1061</span>
<span class='linenumber'>1062</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">xed.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1063</span>
<span class='linenumber'>1064</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.handler</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1065</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">(</span><span class="NAME">xed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1066</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">stop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1067</span> </span><span class="NAME">Event.stop</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1068</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1069</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1070</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1071</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1072</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1073</span>
<span class='linenumber'>1074</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">img</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'img'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1075</span> </span><span class="NAME">a.appendChild</span><span class="PUNC">(</span><span class="NAME">img</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1076</span> </span><span class="NAME">img.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.config.imagePathForDefaultToobar</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">buttonConfig.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'.gif'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1077</span>
<span class='linenumber'>1078</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">li.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' xq_separator'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1079</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1080</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1081</span>
<span class='linenumber'>1082</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">container</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1083</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1084</span>
<span class='linenumber'>1085</span>
<span class='linenumber'>1086</span>
<span class='linenumber'>1087</span> </span><span class="COMM">/////////////////////////////////////////////</span><span class="WHIT">
<span class='linenumber'>1088</span> </span><span class="COMM">// Event Management</span><span class="WHIT">
<span class='linenumber'>1089</span>
<span class='linenumber'>1090</span> </span><span class="NAME">_registerEventHandlers</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1091</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">events</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">'keydown'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'keyup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'mouseup'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'contextmenu'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'scroll'</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1092</span>
<span class='linenumber'>1093</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.config.changeCursorOnLink</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">events.push</span><span class="PUNC">(</span><span class="STRN">'mousemove'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1094</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isMac</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">xq.Browser.isGecko</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">events.push</span><span class="PUNC">(</span><span class="STRN">'keypress'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1095</span>
<span class='linenumber'>1096</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">events.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1097</span> </span><span class="NAME">Event.observe</span><span class="PUNC">(</span><span class="NAME">this.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">events</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._handleEvent.bindAsEventListener</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1098</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1099</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1100</span>
<span class='linenumber'>1101</span> </span><span class="NAME">_handleEvent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1102</span> </span><span class="NAME">this._fireOnBeforeEvent</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1103</span>
<span class='linenumber'>1104</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1105</span>
<span class='linenumber'>1106</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">modifiedByCorrection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1107</span>
<span class='linenumber'>1108</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'mousemove'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.config.changeCursorOnLink</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1109</span> </span><span class="COMM">// Trident only</span><span class="WHIT">
<span class='linenumber'>1110</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">link</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">e.srcElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"A"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1111</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.editorBody.contentEditable</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">link</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.editorBody.contentEditable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">link</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1112</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'click'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">e.button</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.config.enableLinkClick</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1113</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">e.target</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">e.srcElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"A"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1114</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.handleClick</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1115</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">xq.Browser.isMac</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">xq.Browser.isGecko</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"keypress"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"keydown"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1116</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">undoPerformed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1117</span>
<span class='linenumber'>1118</span> </span><span class="NAME">modifiedByCorrection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.correctParagraph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1119</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.config.shortcuts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1120</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.config.shortcuts</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">event.matches</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1121</span>
<span class='linenumber'>1122</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.config.shortcuts</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">handler</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1123</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1124</span> </span><span class="NAME">stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1125</span>
<span class='linenumber'>1126</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undo"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">undoPerformed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1127</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1128</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"mouseup"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyup"</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">e.type</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1129</span> </span><span class="NAME">modifiedByCorrection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.correctParagraph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1130</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"contextmenu"</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">e.type</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1131</span> </span><span class="NAME">this._handleContextMenu</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1132</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1133</span>
<span class='linenumber'>1134</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">stop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">Event.stop</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1135</span>
<span class='linenumber'>1136</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1137</span> </span><span class="NAME">this._fireOnAfterEvent</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1138</span>
<span class='linenumber'>1139</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">undoPerformed</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">modifiedByCorrection</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onEvent</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1140</span>
<span class='linenumber'>1141</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">stop</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1142</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1143</span>
<span class='linenumber'>1144</span> </span><span class="COMM">/**
<span class='linenumber'>1145</span> * TODO: remove dup with handleAutocompletion
<span class='linenumber'>1146</span> */</span><span class="WHIT">
<span class='linenumber'>1147</span> </span><span class="NAME">handleAutocorrection</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1148</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1149</span>
<span class='linenumber'>1150</span> </span><span class="COMM">// TODO: use complete unescape algorithm</span><span class="WHIT">
<span class='linenumber'>1151</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getInnerText</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/&nbsp;/gi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1152</span>
<span class='linenumber'>1153</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">acs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.config.autocorrections</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1154</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">performed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1155</span>
<span class='linenumber'>1156</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1157</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">acs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1158</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">acs</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1159</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">ac.criteria</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1160</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1161</span> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1162</span> </span><span class="NAME">this.editHistory.disable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1163</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">ac.handler</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"String"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1164</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1165</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rdom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1166</span> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="NAME">ac.handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1167</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1168</span> </span><span class="NAME">stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ac.handler</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1169</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1170</span> </span><span class="NAME">this.editHistory.enable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1171</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">ignored</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1172</span>
<span class='linenumber'>1173</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1174</span> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getInnerText</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1175</span>
<span class='linenumber'>1176</span> </span><span class="NAME">performed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1177</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">stop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1178</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1179</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1180</span>
<span class='linenumber'>1181</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">stop</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1182</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1183</span>
<span class='linenumber'>1184</span> </span><span class="COMM">/**
<span class='linenumber'>1185</span> * TODO: remove dup with handleAutocorrection
<span class='linenumber'>1186</span> */</span><span class="WHIT">
<span class='linenumber'>1187</span> </span><span class="NAME">handleAutocompletion</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1188</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">acs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$H</span><span class="PUNC">(</span><span class="NAME">this.config.autocompletions</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1189</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">acs.size</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1190</span>
<span class='linenumber'>1191</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1192</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getSelectionAsText</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1193</span> </span><span class="NAME">this.rdom.deleteSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1194</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.insertNode</span><span class="PUNC">(</span><span class="NAME">this.rdom.createElement</span><span class="PUNC">(</span><span class="STRN">"SPAN"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1195</span> </span><span class="NAME">wrapper.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1196</span>
<span class='linenumber'>1197</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1198</span>
<span class='linenumber'>1199</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">filtered</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='linenumber'>1200</span> </span><span class="NAME">acs.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pair</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1201</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">pair.key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pair.value.criteria</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1202</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">findAll</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1203</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1204</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">sortBy</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1205</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1206</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1207</span>
<span class='linenumber'>1208</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">filtered.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1209</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1210</span> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1211</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1212</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">acs.get</span><span class="PUNC">(</span><span class="NAME">filtered</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1213</span>
<span class='linenumber'>1214</span> </span><span class="NAME">this.editHistory.disable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1215</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1216</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1217</span>
<span class='linenumber'>1218</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">filtered</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='linenumber'>1219</span> </span><span class="NAME">acs.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pair</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1220</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">pair.key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.rdom.testSmartWrap</span><span class="PUNC">(</span><span class="NAME">marker</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pair.value.criteria</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">textIndex</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1221</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">findAll</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1222</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1223</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">sortBy</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">elem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1224</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">elem</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1225</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1226</span>
<span class='linenumber'>1227</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">filtered.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1228</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1229</span> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1230</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1231</span>
<span class='linenumber'>1232</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">acs.get</span><span class="PUNC">(</span><span class="NAME">filtered</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1233</span>
<span class='linenumber'>1234</span> </span><span class="NAME">this.editHistory.disable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1235</span>
<span class='linenumber'>1236</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrapper</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.smartWrap</span><span class="PUNC">(</span><span class="NAME">marker</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"SPAN"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ac.criteria</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1237</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1238</span>
<span class='linenumber'>1239</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1240</span>
<span class='linenumber'>1241</span> </span><span class="COMM">// TODO: use complete unescape algorithm</span><span class="WHIT">
<span class='linenumber'>1242</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getInnerText</span><span class="PUNC">(</span><span class="NAME">wrapper</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/&nbsp;/gi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1243</span>
<span class='linenumber'>1244</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1245</span> </span><span class="COMM">// call handler</span><span class="WHIT">
<span class='linenumber'>1246</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">ac.handler</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"String"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1247</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1248</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rdom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1249</span> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="NAME">ac.handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1250</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1251</span> </span><span class="NAME">ac.handler</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">wrapper</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1252</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1253</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">ignored</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1254</span>
<span class='linenumber'>1255</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1256</span> </span><span class="NAME">this.rdom.unwrapElement</span><span class="PUNC">(</span><span class="NAME">wrapper</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1257</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">ignored</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1258</span>
<span class='linenumber'>1259</span>
<span class='linenumber'>1260</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.isEmptyBlock</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.rdom.correctEmptyElement</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1261</span>
<span class='linenumber'>1262</span> </span><span class="NAME">this.editHistory.enable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1263</span> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1264</span>
<span class='linenumber'>1265</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1266</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1267</span>
<span class='linenumber'>1268</span> </span><span class="COMM">/**
<span class='linenumber'>1269</span> * Handles click event
<span class='linenumber'>1270</span> *
<span class='linenumber'>1271</span> * @param {Event} e click event
<span class='linenumber'>1272</span> * @param {Element} target target element(usually has A tag)
<span class='linenumber'>1273</span> */</span><span class="WHIT">
<span class='linenumber'>1274</span> </span><span class="NAME">handleClick</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1275</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">decodeURI</span><span class="PUNC">(</span><span class="NAME">target.href</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1276</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1277</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">e.ctrlKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">e.shiftKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">e.button</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1278</span> </span><span class="NAME">window.location.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">href</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1279</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1280</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1281</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1282</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e.shiftKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1283</span> </span><span class="NAME">window.open</span><span class="PUNC">(</span><span class="NAME">href</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"_blank"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1284</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1285</span> </span><span class="NAME">window.location.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">href</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1286</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1287</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1288</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1289</span>
<span class='linenumber'>1290</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1291</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1292</span>
<span class='linenumber'>1293</span> </span><span class="COMM">/**
<span class='linenumber'>1294</span> * Show link dialog
<span class='linenumber'>1295</span> *
<span class='linenumber'>1296</span> * TODO: should support modify/unlink
<span class='linenumber'>1297</span> */</span><span class="WHIT">
<span class='linenumber'>1298</span> </span><span class="NAME">handleLink</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1299</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getSelectionAsText</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1300</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dialog</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.controls.FormDialog</span><span class="PUNC">(</span><span class="WHIT">
<span class='linenumber'>1301</span> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1302</span> </span><span class="NAME">xq.ui_templates.basicLinkDialog</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1303</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dialog</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1304</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1305</span> </span><span class="NAME">dialog.form.text.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1306</span> </span><span class="NAME">dialog.form.url.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1307</span> </span><span class="NAME">dialog.form.url.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1308</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1309</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1310</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1311</span> </span><span class="NAME">this.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1312</span>
<span class='linenumber'>1313</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1314</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1315</span> </span><span class="NAME">rng.moveToBookmark</span><span class="PUNC">(</span><span class="NAME">bm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1316</span> </span><span class="NAME">rng.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1317</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1318</span>
<span class='linenumber'>1319</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1320</span> </span><span class="NAME">this.handleInsertLink</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.text</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.text</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1321</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>1322</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1323</span>
<span class='linenumber'>1324</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBookmark</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1325</span>
<span class='linenumber'>1326</span> </span><span class="NAME">dialog.show</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">position</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'centerOfEditor'</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1327</span>
<span class='linenumber'>1328</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1329</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1330</span>
<span class='linenumber'>1331</span> </span><span class="COMM">/**
<span class='linenumber'>1332</span> * Inserts link or apply link into selected area
<span class='linenumber'>1333</span> *
<span class='linenumber'>1334</span> * @param {boolean} autoSelection if set true and there's no selection, automatically select word to link(if possible)
<span class='linenumber'>1335</span> * @param {String} url url
<span class='linenumber'>1336</span> * @param {String} title title of link
<span class='linenumber'>1337</span> * @param {String} text text of link. If there's a selection(manually or automatically), it will be replaced with this text
<span class='linenumber'>1338</span> *
<span class='linenumber'>1339</span> * @returns {Element} created element
<span class='linenumber'>1340</span> */</span><span class="WHIT">
<span class='linenumber'>1341</span> </span><span class="NAME">handleInsertLink</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">autoSelection</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1342</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">autoSelection</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1343</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1344</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.smartWrap</span><span class="PUNC">(</span><span class="NAME">marker</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"A"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1345</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">" "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1346</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1347</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1348</span> </span><span class="NAME">a.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1349</span> </span><span class="NAME">a.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1350</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1351</span> </span><span class="NAME">a.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT">
<span class='linenumber'>1352</span> </span><span class="NAME">a.appendChild</span><span class="PUNC">(</span><span class="NAME">this.rdom.createTextNode</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1353</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1354</span> </span><span class="NAME">this.rdom.deleteNode</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1355</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1356</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1357</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1358</span> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.rdom.getSelectionAsText</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1359</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">text</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1360</span>
<span class='linenumber'>1361</span> </span><span class="NAME">this.rdom.deleteSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1362</span>
<span class='linenumber'>1363</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.createElement</span><span class="PUNC">(</span><span class="STRN">'A'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1364</span> </span><span class="NAME">a.href</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1365</span> </span><span class="NAME">a.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">title</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1366</span> </span><span class="NAME">a.appendChild</span><span class="PUNC">(</span><span class="NAME">this.rdom.createTextNode</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1367</span> </span><span class="NAME">this.rdom.insertNode</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1368</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1369</span>
<span class='linenumber'>1370</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1371</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1372</span>
<span class='linenumber'>1373</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1374</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1375</span>
<span class='linenumber'>1376</span> </span><span class="COMM">/**
<span class='linenumber'>1377</span> * Called when enter key pressed.
<span class='linenumber'>1378</span> *
<span class='linenumber'>1379</span> * @param {boolean} skipAutocorrection if set true, skips autocorrection
<span class='linenumber'>1380</span> * @param {boolean} forceInsertParagraph if set true, inserts paragraph
<span class='linenumber'>1381</span> */</span><span class="WHIT">
<span class='linenumber'>1382</span> </span><span class="NAME">handleEnter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">skipAutocorrection</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceInsertParagraph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1383</span> </span><span class="COMM">// If it has selection, perform default action.</span><span class="WHIT">
<span class='linenumber'>1384</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1385</span>
<span class='linenumber'>1386</span> </span><span class="COMM">// Perform autocorrection</span><span class="WHIT">
<span class='linenumber'>1387</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">skipAutocorrection</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.handleAutocorrection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1388</span>
<span class='linenumber'>1389</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">atEmptyBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.isCaretAtEmptyBlock</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1390</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">atStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">atEmptyBlock</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.rdom.isCaretAtBlockStart</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1391</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">atEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">atEmptyBlock</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">atStart</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.rdom.isCaretAtBlockEnd</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1392</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">atEdge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">atEmptyBlock</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">atStart</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">atEnd</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1393</span>
<span class='linenumber'>1394</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">atEdge</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1395</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1396</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1397</span>
<span class='linenumber'>1398</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.isFirstLiWithNestedList</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">forceInsertParagraph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1399</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">block.parentNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1400</span> </span><span class="NAME">this.rdom.unwrapElement</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1401</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1402</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">block.nodeName</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"LI"</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.rdom.tree.isBlockContainer</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1403</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.wrapAllInlineOrTextNodesAs</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1404</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1405</span> </span><span class="NAME">this.rdom.splitElementUpto</span><span class="PUNC">(</span><span class="NAME">marker</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1406</span>
<span class='linenumber'>1407</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1408</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">atEmptyBlock</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1409</span> </span><span class="NAME">this._handleEnterAtEmptyBlock</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1410</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1411</span> </span><span class="NAME">this._handleEnterAtEdge</span><span class="PUNC">(</span><span class="NAME">atStart</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceInsertParagraph</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1412</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1413</span>
<span class='linenumber'>1414</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1415</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1416</span>
<span class='linenumber'>1417</span> </span><span class="COMM">/**
<span class='linenumber'>1418</span> * Moves current block upward or downward
<span class='linenumber'>1419</span> *
<span class='linenumber'>1420</span> * @param {boolean} up moves current block upward
<span class='linenumber'>1421</span> */</span><span class="WHIT">
<span class='linenumber'>1422</span> </span><span class="NAME">handleMoveBlock</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">up</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1423</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.moveBlock</span><span class="PUNC">(</span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">up</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1424</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1425</span> </span><span class="NAME">this.rdom.selectElement</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1426</span> </span><span class="NAME">block.scrollIntoView</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1427</span>
<span class='linenumber'>1428</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1429</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1430</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1431</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1432</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1433</span>
<span class='linenumber'>1434</span> </span><span class="COMM">/**
<span class='linenumber'>1435</span> * Called when tab key pressed
<span class='linenumber'>1436</span> */</span><span class="WHIT">
<span class='linenumber'>1437</span> </span><span class="NAME">handleTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1438</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hasSelection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1439</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1440</span>
<span class='linenumber'>1441</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">hasSelection</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1442</span> </span><span class="NAME">this.handleIndent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1443</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">table.className</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"datatable"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1444</span> </span><span class="NAME">this.handleMoveToNextCell</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1445</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.rdom.isCaretAtBlockStart</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1446</span> </span><span class="NAME">this.handleIndent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1447</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1448</span> </span><span class="NAME">this.handleInsertTab</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1449</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1450</span>
<span class='linenumber'>1451</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1452</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1453</span>
<span class='linenumber'>1454</span> </span><span class="COMM">/**
<span class='linenumber'>1455</span> * Called when shift+tab key pressed
<span class='linenumber'>1456</span> */</span><span class="WHIT">
<span class='linenumber'>1457</span> </span><span class="NAME">handleShiftTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1458</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hasSelection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1459</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1460</span>
<span class='linenumber'>1461</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">hasSelection</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1462</span> </span><span class="NAME">this.handleOutdent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1463</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">table.className</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"datatable"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1464</span> </span><span class="NAME">this.handleMoveToPreviousCell</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1465</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1466</span> </span><span class="NAME">this.handleOutdent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1467</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1468</span>
<span class='linenumber'>1469</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1470</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1471</span>
<span class='linenumber'>1472</span> </span><span class="COMM">/**
<span class='linenumber'>1473</span> * Inserts three non-breaking spaces
<span class='linenumber'>1474</span> */</span><span class="WHIT">
<span class='linenumber'>1475</span> </span><span class="NAME">handleInsertTab</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1476</span> </span><span class="NAME">this.rdom.insertHtml</span><span class="PUNC">(</span><span class="STRN">'&nbsp;'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1477</span> </span><span class="NAME">this.rdom.insertHtml</span><span class="PUNC">(</span><span class="STRN">'&nbsp;'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1478</span> </span><span class="NAME">this.rdom.insertHtml</span><span class="PUNC">(</span><span class="STRN">'&nbsp;'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1479</span>
<span class='linenumber'>1480</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1481</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1482</span>
<span class='linenumber'>1483</span> </span><span class="COMM">/**
<span class='linenumber'>1484</span> * Called when delete key pressed
<span class='linenumber'>1485</span> */</span><span class="WHIT">
<span class='linenumber'>1486</span> </span><span class="NAME">handleDelete</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1487</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.rdom.isCaretAtBlockEnd</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1488</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._handleMerge</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1489</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1490</span>
<span class='linenumber'>1491</span> </span><span class="COMM">/**
<span class='linenumber'>1492</span> * Called when backspace key pressed
<span class='linenumber'>1493</span> */</span><span class="WHIT">
<span class='linenumber'>1494</span> </span><span class="NAME">handleBackspace</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1495</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.rdom.isCaretAtBlockStart</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1496</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._handleMerge</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1497</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1498</span>
<span class='linenumber'>1499</span> </span><span class="NAME">_handleMerge</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">withNext</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1500</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1501</span>
<span class='linenumber'>1502</span> </span><span class="COMM">// save caret position;</span><span class="WHIT">
<span class='linenumber'>1503</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">marker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1504</span>
<span class='linenumber'>1505</span> </span><span class="COMM">// perform merge</span><span class="WHIT">
<span class='linenumber'>1506</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">merged</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.mergeElement</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">withNext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">withNext</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1507</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">merged</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">withNext</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.rdom.extractOutElementFromParent</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1508</span>
<span class='linenumber'>1509</span> </span><span class="COMM">// restore caret position</span><span class="WHIT">
<span class='linenumber'>1510</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1511</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">merged</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.rdom.correctEmptyElement</span><span class="PUNC">(</span><span class="NAME">merged</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1512</span>
<span class='linenumber'>1513</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1514</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1515</span>
<span class='linenumber'>1516</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">merged</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1517</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1518</span>
<span class='linenumber'>1519</span> </span><span class="COMM">/**
<span class='linenumber'>1520</span> * (in table) Moves caret to the next cell
<span class='linenumber'>1521</span> */</span><span class="WHIT">
<span class='linenumber'>1522</span> </span><span class="NAME">handleMoveToNextCell</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1523</span> </span><span class="NAME">this._handleMoveToCell</span><span class="PUNC">(</span><span class="STRN">"next"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1524</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1525</span>
<span class='linenumber'>1526</span> </span><span class="COMM">/**
<span class='linenumber'>1527</span> * (in table) Moves caret to the previous cell
<span class='linenumber'>1528</span> */</span><span class="WHIT">
<span class='linenumber'>1529</span> </span><span class="NAME">handleMoveToPreviousCell</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1530</span> </span><span class="NAME">this._handleMoveToCell</span><span class="PUNC">(</span><span class="STRN">"prev"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1531</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1532</span>
<span class='linenumber'>1533</span> </span><span class="COMM">/**
<span class='linenumber'>1534</span> * (in table) Moves caret to the above cell
<span class='linenumber'>1535</span> */</span><span class="WHIT">
<span class='linenumber'>1536</span> </span><span class="NAME">handleMoveToAboveCell</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1537</span> </span><span class="NAME">this._handleMoveToCell</span><span class="PUNC">(</span><span class="STRN">"above"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1538</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1539</span>
<span class='linenumber'>1540</span> </span><span class="COMM">/**
<span class='linenumber'>1541</span> * (in table) Moves caret to the below cell
<span class='linenumber'>1542</span> */</span><span class="WHIT">
<span class='linenumber'>1543</span> </span><span class="NAME">handleMoveToBelowCell</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1544</span> </span><span class="NAME">this._handleMoveToCell</span><span class="PUNC">(</span><span class="STRN">"below"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1545</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1546</span>
<span class='linenumber'>1547</span> </span><span class="NAME">_handleMoveToCell</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dir</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1548</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1549</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cell</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TD"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"TH"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1550</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">cell</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1551</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rtable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.RichTable</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">table</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1552</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1553</span>
<span class='linenumber'>1554</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"next"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"prev"</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">dir</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1555</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toNext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"next"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1556</span> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">toNext</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rtable.getNextCellOf</span><span class="PUNC">(</span><span class="NAME">cell</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rtable.getPreviousCellOf</span><span class="PUNC">(</span><span class="NAME">cell</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1557</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1558</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toBelow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"below"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1559</span> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">toBelow</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">rtable.getBelowCellOf</span><span class="PUNC">(</span><span class="NAME">cell</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rtable.getAboveCellOf</span><span class="PUNC">(</span><span class="NAME">cell</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1560</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1561</span>
<span class='linenumber'>1562</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1563</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">finder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">[</span><span class="STRN">'TD'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'TH'</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">include</span><span class="PUNC">(</span><span class="NAME">node.nodeName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.tree.isBlock</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.tree.hasBlocks</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1564</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">exitCondition</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.tree.isBlock</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.tree.isDescendantOf</span><span class="PUNC">(</span><span class="NAME">this.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1565</span>
<span class='linenumber'>1566</span> </span><span class="NAME">target</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">toNext</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">toBelow</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT">
<span class='linenumber'>1567</span> </span><span class="NAME">this.rdom.tree.findForward</span><span class="PUNC">(</span><span class="NAME">cell</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">finder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exitCondition</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT">
<span class='linenumber'>1568</span> </span><span class="NAME">this.rdom.tree.findBackward</span><span class="PUNC">(</span><span class="NAME">table</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">finder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exitCondition</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1569</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1570</span>
<span class='linenumber'>1571</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">target</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">target</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1572</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1573</span>
<span class='linenumber'>1574</span> </span><span class="COMM">/**
<span class='linenumber'>1575</span> * Applies STRONG tag
<span class='linenumber'>1576</span> */</span><span class="WHIT">
<span class='linenumber'>1577</span> </span><span class="NAME">handleStrongEmphasis</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1578</span> </span><span class="NAME">this.rdom.applyStrongEmphasis</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1579</span>
<span class='linenumber'>1580</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1581</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1582</span>
<span class='linenumber'>1583</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1584</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1585</span>
<span class='linenumber'>1586</span> </span><span class="COMM">/**
<span class='linenumber'>1587</span> * Applies EM tag
<span class='linenumber'>1588</span> */</span><span class="WHIT">
<span class='linenumber'>1589</span> </span><span class="NAME">handleEmphasis</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1590</span> </span><span class="NAME">this.rdom.applyEmphasis</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1591</span>
<span class='linenumber'>1592</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1593</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1594</span>
<span class='linenumber'>1595</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1596</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1597</span>
<span class='linenumber'>1598</span> </span><span class="COMM">/**
<span class='linenumber'>1599</span> * Applies EM.underline tag
<span class='linenumber'>1600</span> */</span><span class="WHIT">
<span class='linenumber'>1601</span> </span><span class="NAME">handleUnderline</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1602</span> </span><span class="NAME">this.rdom.applyUnderline</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1603</span>
<span class='linenumber'>1604</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1605</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1606</span>
<span class='linenumber'>1607</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1608</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1609</span>
<span class='linenumber'>1610</span> </span><span class="COMM">/**
<span class='linenumber'>1611</span> * Applies SPAN.strike tag
<span class='linenumber'>1612</span> */</span><span class="WHIT">
<span class='linenumber'>1613</span> </span><span class="NAME">handleStrike</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1614</span> </span><span class="NAME">this.rdom.applyStrike</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1615</span>
<span class='linenumber'>1616</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1617</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1618</span>
<span class='linenumber'>1619</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1620</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1621</span>
<span class='linenumber'>1622</span> </span><span class="COMM">/**
<span class='linenumber'>1623</span> * Removes all style
<span class='linenumber'>1624</span> */</span><span class="WHIT">
<span class='linenumber'>1625</span> </span><span class="NAME">handleRemoveFormat</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1626</span> </span><span class="NAME">this.rdom.applyRemoveFormat</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1627</span>
<span class='linenumber'>1628</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1629</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1630</span>
<span class='linenumber'>1631</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1632</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1633</span>
<span class='linenumber'>1634</span> </span><span class="COMM">/**
<span class='linenumber'>1635</span> * Inserts table
<span class='linenumber'>1636</span> *
<span class='linenumber'>1637</span> * @param {Number} cols number of columns
<span class='linenumber'>1638</span> * @param {Number} rows number of rows
<span class='linenumber'>1639</span> * @param {String} headerPosition position of THs. "T" or "L" or "TL". "T" means top, "L" means left.
<span class='linenumber'>1640</span> */</span><span class="WHIT">
<span class='linenumber'>1641</span> </span><span class="NAME">handleTable</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cols</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rows</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">headerPositions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1642</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1643</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1644</span>
<span class='linenumber'>1645</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rtable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xq.RichTable.create</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cols</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rows</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">headerPositions</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1646</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.tree.isBlockContainer</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1647</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrappers</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.wrapAllInlineOrTextNodesAs</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1648</span> </span><span class="NAME">cur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">wrappers.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1649</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1650</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tableDom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.insertNodeAt</span><span class="PUNC">(</span><span class="NAME">rtable.getDom</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"after"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1651</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">rtable.getCellAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1652</span>
<span class='linenumber'>1653</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.isEmptyBlock</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">this.rdom.deleteNode</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1654</span>
<span class='linenumber'>1655</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1656</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1657</span>
<span class='linenumber'>1658</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1659</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1660</span>
<span class='linenumber'>1661</span> </span><span class="NAME">handleInsertNewRowAt</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">where</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1662</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1663</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TR"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1664</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">tr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1665</span>
<span class='linenumber'>1666</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">tr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1667</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rtable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.RichTable</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">table</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1668</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">row</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rtable.insertNewRowAt</span><span class="PUNC">(</span><span class="NAME">tr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">where</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1669</span>
<span class='linenumber'>1670</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">row.cells</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1671</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1672</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1673</span> </span><span class="NAME">handleInsertNewColumnAt</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">where</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1674</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1675</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">td</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TD"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1676</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">td</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1677</span>
<span class='linenumber'>1678</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">td</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1679</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rtable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.RichTable</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">table</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1680</span> </span><span class="NAME">rtable.insertNewCellAt</span><span class="PUNC">(</span><span class="NAME">td</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">where</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1681</span>
<span class='linenumber'>1682</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1683</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1684</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1685</span>
<span class='linenumber'>1686</span> </span><span class="NAME">handleDeleteRow</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1687</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1688</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TR"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1689</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">tr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1690</span>
<span class='linenumber'>1691</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">tr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1692</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rtable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.RichTable</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">table</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1693</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blockToMove</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rtable.deleteRow</span><span class="PUNC">(</span><span class="NAME">tr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1694</span>
<span class='linenumber'>1695</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">blockToMove</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1696</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1697</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1698</span>
<span class='linenumber'>1699</span> </span><span class="NAME">handleDeleteColumn</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1700</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1701</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">td</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">cur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TD"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1702</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">td</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1703</span>
<span class='linenumber'>1704</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">table</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getParentElementOf</span><span class="PUNC">(</span><span class="NAME">td</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="STRN">"TABLE"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1705</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rtable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.RichTable</span><span class="PUNC">(</span><span class="NAME">this.rdom</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">table</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1706</span> </span><span class="NAME">rtable.deleteCell</span><span class="PUNC">(</span><span class="NAME">td</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1707</span>
<span class='linenumber'>1708</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1709</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1710</span>
<span class='linenumber'>1711</span> </span><span class="COMM">/**
<span class='linenumber'>1712</span> * Performs block indentation
<span class='linenumber'>1713</span> */</span><span class="WHIT">
<span class='linenumber'>1714</span> </span><span class="NAME">handleIndent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1715</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1716</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getBlockElementsAtSelectionEdge</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1717</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1718</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">affected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.indentElements</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1719</span> </span><span class="NAME">this.rdom.selectBlocksBetween</span><span class="PUNC">(</span><span class="NAME">affected.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">affected.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1720</span>
<span class='linenumber'>1721</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1722</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1723</span>
<span class='linenumber'>1724</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1725</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1726</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1727</span>
<span class='linenumber'>1728</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1729</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">affected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.indentElement</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1730</span>
<span class='linenumber'>1731</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">affected</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1732</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">affected</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1733</span>
<span class='linenumber'>1734</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1735</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1736</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1737</span>
<span class='linenumber'>1738</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1739</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1740</span>
<span class='linenumber'>1741</span> </span><span class="COMM">/**
<span class='linenumber'>1742</span> * Performs block outdentation
<span class='linenumber'>1743</span> */</span><span class="WHIT">
<span class='linenumber'>1744</span> </span><span class="NAME">handleOutdent</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1745</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1746</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getBlockElementsAtSelectionEdge</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1747</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1748</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">affected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.outdentElements</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1749</span> </span><span class="NAME">this.rdom.selectBlocksBetween</span><span class="PUNC">(</span><span class="NAME">affected.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">affected.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1750</span>
<span class='linenumber'>1751</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1752</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1753</span>
<span class='linenumber'>1754</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1755</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1756</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1757</span>
<span class='linenumber'>1758</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1759</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">affected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.outdentElement</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1760</span>
<span class='linenumber'>1761</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">affected</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1762</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">affected</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1763</span>
<span class='linenumber'>1764</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1765</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1766</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1767</span>
<span class='linenumber'>1768</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1769</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1770</span>
<span class='linenumber'>1771</span> </span><span class="COMM">/**
<span class='linenumber'>1772</span> * Applies list.
<span class='linenumber'>1773</span> *
<span class='linenumber'>1774</span> * @param {String} type "UL" or "OL" or "CODE". CODE generates OL.code
<span class='linenumber'>1775</span> */</span><span class="WHIT">
<span class='linenumber'>1776</span> </span><span class="NAME">handleList</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1777</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1778</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getBlockElementsAtSelectionEdge</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1779</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1780</span> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.applyLists</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1781</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1782</span> </span><span class="NAME">blocks</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.applyList</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1783</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1784</span> </span><span class="NAME">this.rdom.selectBlocksBetween</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1785</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1786</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.applyList</span><span class="PUNC">(</span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1787</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1788</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1789</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1790</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1791</span>
<span class='linenumber'>1792</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1793</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1794</span>
<span class='linenumber'>1795</span> </span><span class="COMM">/**
<span class='linenumber'>1796</span> * Applies justification
<span class='linenumber'>1797</span> *
<span class='linenumber'>1798</span> * @param {String} dir "left", "center", "right" or "both"
<span class='linenumber'>1799</span> */</span><span class="WHIT">
<span class='linenumber'>1800</span> </span><span class="NAME">handleJustify</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dir</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1801</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1802</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"left"</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"both"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">block.style.textAlign</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"left"</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">block.style.textAlign</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"both"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1803</span>
<span class='linenumber'>1804</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1805</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getSelectedBlockElements</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1806</span> </span><span class="NAME">this.rdom.justifyBlocks</span><span class="PUNC">(</span><span class="NAME">blocks</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1807</span> </span><span class="NAME">this.rdom.selectBlocksBetween</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1808</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1809</span> </span><span class="NAME">this.rdom.justifyBlock</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1810</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1811</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1812</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1813</span>
<span class='linenumber'>1814</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1815</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1816</span>
<span class='linenumber'>1817</span> </span><span class="COMM">/**
<span class='linenumber'>1818</span> * Removes current block element
<span class='linenumber'>1819</span> */</span><span class="WHIT">
<span class='linenumber'>1820</span> </span><span class="NAME">handleRemoveBlock</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1821</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1822</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blockToMove</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.removeBlock</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1823</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">blockToMove</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1824</span> </span><span class="NAME">blockToMove.scrollIntoView</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1825</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1826</span>
<span class='linenumber'>1827</span> </span><span class="COMM">/**
<span class='linenumber'>1828</span> * Applies background color
<span class='linenumber'>1829</span> *
<span class='linenumber'>1830</span> * @param {String} color CSS color string
<span class='linenumber'>1831</span> */</span><span class="WHIT">
<span class='linenumber'>1832</span> </span><span class="NAME">handleBackgroundColor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1833</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1834</span> </span><span class="NAME">this.rdom.applyBackgroundColor</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1835</span>
<span class='linenumber'>1836</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1837</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1838</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1839</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dialog</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.controls.FormDialog</span><span class="PUNC">(</span><span class="WHIT">
<span class='linenumber'>1840</span> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1841</span> </span><span class="NAME">xq.ui_templates.basicColorPickerDialog</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1842</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dialog</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1843</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1844</span> </span><span class="NAME">this.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1845</span>
<span class='linenumber'>1846</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1847</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1848</span> </span><span class="NAME">rng.moveToBookmark</span><span class="PUNC">(</span><span class="NAME">bm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1849</span> </span><span class="NAME">rng.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1850</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1851</span>
<span class='linenumber'>1852</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1853</span>
<span class='linenumber'>1854</span> </span><span class="NAME">this.handleBackgroundColor</span><span class="PUNC">(</span><span class="NAME">data.color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1855</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>1856</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1857</span>
<span class='linenumber'>1858</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBookmark</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1859</span>
<span class='linenumber'>1860</span> </span><span class="NAME">dialog.show</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">position</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'centerOfEditor'</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1861</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1862</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1863</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1864</span>
<span class='linenumber'>1865</span> </span><span class="COMM">/**
<span class='linenumber'>1866</span> * Applies foreground color
<span class='linenumber'>1867</span> *
<span class='linenumber'>1868</span> * @param {String} color CSS color string
<span class='linenumber'>1869</span> */</span><span class="WHIT">
<span class='linenumber'>1870</span> </span><span class="NAME">handleForegroundColor</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1871</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1872</span> </span><span class="NAME">this.rdom.applyForegroundColor</span><span class="PUNC">(</span><span class="NAME">color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1873</span>
<span class='linenumber'>1874</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1875</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1876</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1877</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dialog</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">xq.controls.FormDialog</span><span class="PUNC">(</span><span class="WHIT">
<span class='linenumber'>1878</span> </span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1879</span> </span><span class="NAME">xq.ui_templates.basicColorPickerDialog</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1880</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dialog</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1881</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1882</span> </span><span class="NAME">this.focus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1883</span>
<span class='linenumber'>1884</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1885</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rng</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1886</span> </span><span class="NAME">rng.moveToBookmark</span><span class="PUNC">(</span><span class="NAME">bm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1887</span> </span><span class="NAME">rng.select</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1888</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1889</span>
<span class='linenumber'>1890</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1891</span>
<span class='linenumber'>1892</span> </span><span class="NAME">this.handleForegroundColor</span><span class="PUNC">(</span><span class="NAME">data.color</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1893</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>1894</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1895</span>
<span class='linenumber'>1896</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.rng</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBookmark</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1897</span>
<span class='linenumber'>1898</span> </span><span class="NAME">dialog.show</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">position</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'centerOfEditor'</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1899</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1900</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1901</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1902</span>
<span class='linenumber'>1903</span> </span><span class="COMM">/**
<span class='linenumber'>1904</span> * Applies superscription
<span class='linenumber'>1905</span> */</span><span class="WHIT">
<span class='linenumber'>1906</span> </span><span class="NAME">handleSuperscription</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1907</span> </span><span class="NAME">this.rdom.applySuperscription</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1908</span>
<span class='linenumber'>1909</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1910</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1911</span>
<span class='linenumber'>1912</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1913</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1914</span>
<span class='linenumber'>1915</span> </span><span class="COMM">/**
<span class='linenumber'>1916</span> * Applies subscription
<span class='linenumber'>1917</span> */</span><span class="WHIT">
<span class='linenumber'>1918</span> </span><span class="NAME">handleSubscription</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1919</span> </span><span class="NAME">this.rdom.applySubscription</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1920</span>
<span class='linenumber'>1921</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1922</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1923</span>
<span class='linenumber'>1924</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1925</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1926</span>
<span class='linenumber'>1927</span> </span><span class="COMM">/**
<span class='linenumber'>1928</span> * Change of wrap current block's tag
<span class='linenumber'>1929</span> */</span><span class="WHIT">
<span class='linenumber'>1930</span> </span><span class="NAME">handleApplyBlock</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">tagName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1931</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.hasSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1932</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blocks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getBlockElementsAtSelectionEdge</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1933</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1934</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">applied</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.applyTagIntoElements</span><span class="PUNC">(</span><span class="NAME">tagName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocks.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocks.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1935</span> </span><span class="NAME">this.rdom.selectBlocksBetween</span><span class="PUNC">(</span><span class="NAME">applied.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">applied.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1936</span>
<span class='linenumber'>1937</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1938</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1939</span>
<span class='linenumber'>1940</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1941</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1942</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1943</span>
<span class='linenumber'>1944</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1945</span> </span><span class="NAME">this.rdom.pushMarker</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1946</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">applied</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='linenumber'>1947</span> </span><span class="NAME">this.rdom.applyTagIntoElement</span><span class="PUNC">(</span><span class="NAME">tagName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='linenumber'>1948</span> </span><span class="NAME">block</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1949</span> </span><span class="NAME">this.rdom.popMarker</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1950</span>
<span class='linenumber'>1951</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.isEmptyBlock</span><span class="PUNC">(</span><span class="NAME">applied</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1952</span> </span><span class="NAME">this.rdom.correctEmptyElement</span><span class="PUNC">(</span><span class="NAME">applied</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1953</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">applied</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1954</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1955</span>
<span class='linenumber'>1956</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1957</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1958</span>
<span class='linenumber'>1959</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1960</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1961</span>
<span class='linenumber'>1962</span> </span><span class="COMM">/**
<span class='linenumber'>1963</span> * Inserts seperator (HR)
<span class='linenumber'>1964</span> */</span><span class="WHIT">
<span class='linenumber'>1965</span> </span><span class="NAME">handleSeparator</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1966</span> </span><span class="NAME">this.rdom.collapseSelection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1967</span>
<span class='linenumber'>1968</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1969</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">atStart</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.isCaretAtBlockStart</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1970</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.tree.isBlockContainer</span><span class="PUNC">(</span><span class="NAME">curBlock</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.wrapAllInlineOrTextNodesAs</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1971</span>
<span class='linenumber'>1972</span> </span><span class="NAME">this.rdom.insertNodeAt</span><span class="PUNC">(</span><span class="NAME">this.rdom.createElement</span><span class="PUNC">(</span><span class="STRN">"HR"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">atStart</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"before"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"after"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1973</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">curBlock</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1974</span>
<span class='linenumber'>1975</span> </span><span class="COMM">// add undo history</span><span class="WHIT">
<span class='linenumber'>1976</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">historyAdded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.onCommand</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1977</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1978</span>
<span class='linenumber'>1979</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1980</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1981</span>
<span class='linenumber'>1982</span> </span><span class="COMM">/**
<span class='linenumber'>1983</span> * Performs UNDO
<span class='linenumber'>1984</span> */</span><span class="WHIT">
<span class='linenumber'>1985</span> </span><span class="NAME">handleUndo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1986</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">performed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.undo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1987</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1988</span>
<span class='linenumber'>1989</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1990</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>1991</span> </span><span class="NAME">curBlock.scrollIntoView</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1992</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>1993</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>1994</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>1995</span>
<span class='linenumber'>1996</span> </span><span class="COMM">/**
<span class='linenumber'>1997</span> * Performs REDO
<span class='linenumber'>1998</span> */</span><span class="WHIT">
<span class='linenumber'>1999</span> </span><span class="NAME">handleRedo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2000</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">performed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.editHistory.redo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2001</span> </span><span class="NAME">this._fireOnCurrentContentChanged</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2002</span>
<span class='linenumber'>2003</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2004</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">curBlock</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2005</span> </span><span class="NAME">curBlock.scrollIntoView</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2006</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2007</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2008</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2009</span>
<span class='linenumber'>2010</span>
<span class='linenumber'>2011</span>
<span class='linenumber'>2012</span> </span><span class="NAME">_handleContextMenu</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2013</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">xq.Browser.isWebkit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2014</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e.metaKey</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Event.isLeftClick</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2015</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e.shiftKey</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">e.ctrlKey</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">e.altKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2016</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2017</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2018</span>
<span class='linenumber'>2019</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">=</span><span class="NAME">Event.pointerX</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2020</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">=</span><span class="NAME">Event.pointerY</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2021</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">=</span><span class="NAME">Position.cumulativeOffset</span><span class="PUNC">(</span><span class="NAME">this.getFrame</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2022</span> </span><span class="NAME">x</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2023</span> </span><span class="NAME">y</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2024</span> </span><span class="NAME">this._contextMenuTargetElement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">e.target</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">e.srcElement</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2025</span>
<span class='linenumber'>2026</span> </span><span class="COMM">//TODO: Safari on Windows doesn't work with context key(app key)</span><span class="WHIT">
<span class='linenumber'>2027</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2028</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Position.cumulativeOffset</span><span class="PUNC">(</span><span class="NAME">this._contextMenuTargetElement</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2029</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">posFrame</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Position.cumulativeOffset</span><span class="PUNC">(</span><span class="NAME">this.getFrame</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2030</span> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">posFrame</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">documentElement.scrollLeft</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2031</span> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">posFrame</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">documentElement.scrollTop</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2032</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2033</span>
<span class='linenumber'>2034</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2035</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2036</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getBody</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2037</span>
<span class='linenumber'>2038</span> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.documentElement.scrollLeft</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2039</span> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.documentElement.scrollTop</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2040</span>
<span class='linenumber'>2041</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">body</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2042</span> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">body.scrollLeft</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2043</span> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">body.scrollTop</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2044</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2045</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2046</span>
<span class='linenumber'>2047</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cmh</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.config.contextMenuHandlers</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2048</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">stop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.config.contextMenuHandlers</span><span class="PUNC">[</span><span class="NAME">cmh</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">handler</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._contextMenuTargetElement</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2049</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">stop</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2050</span> </span><span class="NAME">Event.stop</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2051</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2052</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2053</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2054</span>
<span class='linenumber'>2055</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2056</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2057</span>
<span class='linenumber'>2058</span> </span><span class="NAME">showContextMenu</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">menuItems</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2059</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">menuItems</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">menuItems.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2060</span>
<span class='linenumber'>2061</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._contextMenuContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2062</span> </span><span class="NAME">this._contextMenuContainer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'UL'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2063</span> </span><span class="NAME">this._contextMenuContainer.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'xqContextMenu'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2064</span> </span><span class="NAME">this._contextMenuContainer.style.display</span><span class="PUNC">=</span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2065</span>
<span class='linenumber'>2066</span> </span><span class="NAME">Event.observe</span><span class="PUNC">(</span><span class="NAME">this.doc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._contextMenuClicked.bindAsEventListener</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2067</span> </span><span class="NAME">Event.observe</span><span class="PUNC">(</span><span class="NAME">this.rdom.getDoc</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'click'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.hideContextMenu.bindAsEventListener</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2068</span>
<span class='linenumber'>2069</span> </span><span class="NAME">this.body.appendChild</span><span class="PUNC">(</span><span class="NAME">this._contextMenuContainer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2070</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2071</span> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._contextMenuContainer.childNodes.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>2072</span> </span><span class="NAME">this._contextMenuContainer.removeChild</span><span class="PUNC">(</span><span class="NAME">this._contextMenuContainer.childNodes</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2073</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2074</span>
<span class='linenumber'>2075</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">menuItems.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2076</span> </span><span class="NAME">menuItems</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">_node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._addContextMenuItem</span><span class="PUNC">(</span><span class="NAME">menuItems</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2077</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2078</span>
<span class='linenumber'>2079</span> </span><span class="NAME">this._contextMenuContainer.style.display</span><span class="PUNC">=</span><span class="STRN">'block'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2080</span> </span><span class="NAME">this._contextMenuContainer.style.left</span><span class="PUNC">=</span><span class="NAME">Math.min</span><span class="PUNC">(</span><span class="NAME">Math.max</span><span class="PUNC">(</span><span class="NAME">this.doc.body.scrollWidth</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.doc.documentElement.clientWidth</span><span class="PUNC">)</span><span class="PUNC">-</span><span class="NAME">this._contextMenuContainer.offsetWidth</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2081</span> </span><span class="NAME">this._contextMenuContainer.style.top</span><span class="PUNC">=</span><span class="NAME">Math.min</span><span class="PUNC">(</span><span class="NAME">Math.max</span><span class="PUNC">(</span><span class="NAME">this.doc.body.scrollHeight</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.doc.documentElement.clientHeight</span><span class="PUNC">)</span><span class="PUNC">-</span><span class="NAME">this._contextMenuContainer.offsetHeight</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">'px'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2082</span>
<span class='linenumber'>2083</span> </span><span class="NAME">this._contextMenuItems</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">menuItems</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2084</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2085</span>
<span class='linenumber'>2086</span> </span><span class="NAME">hideContextMenu</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2087</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._contextMenuContainer</span><span class="PUNC">)</span><span class="WHIT">
<span class='linenumber'>2088</span> </span><span class="NAME">this._contextMenuContainer.style.display</span><span class="PUNC">=</span><span class="STRN">'none'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2089</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2090</span>
<span class='linenumber'>2091</span> </span><span class="NAME">_addContextMenuItem</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">item</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2092</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._contextMenuContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="STRN">"No conext menu container exists"</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2093</span>
<span class='linenumber'>2094</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.doc.createElement</span><span class="PUNC">(</span><span class="STRN">'LI'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2095</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">item.disabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">node.className</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' disabled'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2096</span>
<span class='linenumber'>2097</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">item.title</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'----'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2098</span> </span><span class="NAME">node.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&nbsp;'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2099</span> </span><span class="NAME">node.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'separator'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2100</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2101</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">item.handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2102</span> </span><span class="NAME">node.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'&lt;a href="javascript:;" onclick="return false;">'</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">item.title.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">escapeHTML</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">'&lt;/a>'</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2103</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2104</span> </span><span class="NAME">node.innerHTML</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">item.title.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">escapeHTML</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2106</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2107</span>
<span class='linenumber'>2108</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">item.className</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">node.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">item.className</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2109</span>
<span class='linenumber'>2110</span> </span><span class="NAME">this._contextMenuContainer.appendChild</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2111</span>
<span class='linenumber'>2112</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2113</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2114</span>
<span class='linenumber'>2115</span> </span><span class="NAME">_contextMenuClicked</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2116</span> </span><span class="NAME">this.hideContextMenu</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2117</span>
<span class='linenumber'>2118</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._contextMenuContainer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2119</span>
<span class='linenumber'>2120</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Event.findElement</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'LI'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2121</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.rdom.tree.isDescendantOf</span><span class="PUNC">(</span><span class="NAME">this._contextMenuContainer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2122</span>
<span class='linenumber'>2123</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this._contextMenuItems.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2124</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._contextMenuItems</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">_node</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2125</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._contextMenuItems</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">handler</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2126</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._contextMenuItems</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">disabled</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2127</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2128</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">element</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._contextMenuTargetElement</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2129</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2130</span> </span><span class="NAME">handler</span><span class="PUNC">(</span><span class="NAME">xed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">element</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2131</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2132</span> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2133</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2134</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2135</span> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2136</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2137</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2138</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2139</span>
<span class='linenumber'>2140</span> </span><span class="COMM">/**
<span class='linenumber'>2141</span> * Inserts HTML template
<span class='linenumber'>2142</span> *
<span class='linenumber'>2143</span> * @param {String} html Template string. It should have single root element
<span class='linenumber'>2144</span> * @returns {Element} inserted element
<span class='linenumber'>2145</span> */</span><span class="WHIT">
<span class='linenumber'>2146</span> </span><span class="NAME">insertTemplate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2147</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.rdom.insertHtml</span><span class="PUNC">(</span><span class="NAME">this._processTemplate</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2148</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2149</span>
<span class='linenumber'>2150</span> </span><span class="COMM">/**
<span class='linenumber'>2151</span> * Places given HTML template nearby target.
<span class='linenumber'>2152</span> *
<span class='linenumber'>2153</span> * @param {String} html Template string. It should have single root element
<span class='linenumber'>2154</span> * @param {Node} target Target node.
<span class='linenumber'>2155</span> * @param {String} where Possible values: "before", "start", "end", "after"
<span class='linenumber'>2156</span> *
<span class='linenumber'>2157</span> * @returns {Element} Inserted element.
<span class='linenumber'>2158</span> */</span><span class="WHIT">
<span class='linenumber'>2159</span> </span><span class="NAME">insertTemplateAt</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">where</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2160</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.rdom.insertHtmlAt</span><span class="PUNC">(</span><span class="NAME">this._processTemplate</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">target</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">where</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2161</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2162</span>
<span class='linenumber'>2163</span> </span><span class="NAME">_processTemplate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2164</span> </span><span class="COMM">// apply template processors</span><span class="WHIT">
<span class='linenumber'>2165</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tps</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$H</span><span class="PUNC">(</span><span class="NAME">this.getTemplateProcessors</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">values</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2166</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tps.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2167</span> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tps</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">handler</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2168</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2169</span>
<span class='linenumber'>2170</span> </span><span class="COMM">// remove all whitespace characters between block tags</span><span class="WHIT">
<span class='linenumber'>2171</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">html</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.removeUnnecessarySpaces</span><span class="PUNC">(</span><span class="NAME">html</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2172</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2173</span>
<span class='linenumber'>2174</span>
<span class='linenumber'>2175</span>
<span class='linenumber'>2176</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
<span class='linenumber'>2177</span> </span><span class="NAME">_handleEnterAtEmptyBlock</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2178</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2179</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.tree.isTableCell</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.rdom.isFirstBlockOfBody</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2180</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.insertNodeAt</span><span class="PUNC">(</span><span class="NAME">this.rdom.makeEmptyParagraph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"start"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2181</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2182</span> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='linenumber'>2183</span> </span><span class="NAME">this.rdom.outdentElement</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='linenumber'>2184</span> </span><span class="NAME">this.rdom.extractOutElementFromParent</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='linenumber'>2185</span> </span><span class="NAME">this.rdom.replaceTag</span><span class="PUNC">(</span><span class="STRN">"P"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">block</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='linenumber'>2186</span> </span><span class="NAME">this.rdom.insertNewBlockAround</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2187</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2188</span>
<span class='linenumber'>2189</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2190</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">block.scrollIntoView</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2191</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='linenumber'>2192</span>
<span class='linenumber'>2193</span> </span><span class="COMM">/** @private */</span><span class="WHIT">
<span class='linenumber'>2194</span> </span><span class="NAME">_handleEnterAtEdge</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">atStart</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceInsertParagraph</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2195</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">block</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.getCurrentBlockElement</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2196</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blockToPlaceCaret</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2197</span>
<span class='linenumber'>2198</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">atStart</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.rdom.isFirstBlockOfBody</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2199</span> </span><span class="NAME">blockToPlaceCaret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.insertNodeAt</span><span class="PUNC">(</span><span class="NAME">this.rdom.makeEmptyParagraph</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.rdom.getRoot</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"start"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2200</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='linenumber'>2201</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.rdom.tree.isTableCell</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">forceInsertParagraph</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2202</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdom.insertNewBlockAround</span><span class="PUNC">(</span><span class="NAME">block</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">atStart</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceInsertParagraph</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"P"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2203</span> </span><span class="NAME">blockToPlaceCaret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">atStart</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">newBlock</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">newBlock.nextSibling</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2204</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2205</span>
<span class='linenumber'>2206</span> </span><span class="NAME">this.rdom.placeCaretAtStartOf</span><span class="PUNC">(</span><span class="NAME">blockToPlaceCaret</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2207</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">xq.Browser.isTrident</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="NAME">blockToPlaceCaret.scrollIntoView</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='linenumber'>2208</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='linenumber'>2209</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span></pre></body></html>