1 <html><head><title>Roo/HtmlEditorCore.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">//<script type="text/javascript">
4 * Based Ext JS Library 1.1.1
5 * Copyright(c) 2006-2007, Ext JS, LLC.
11 * @class Roo.HtmlEditorCore
12 * @extends Roo.Component
13 * Provides a the editing component for the HTML editors in Roo. (bootstrap and Roo.form)
15 * any element that has display set to 'none' can cause problems in Safari and Firefox.<br/><br/>
18 </span><span class="jsdoc-var">Roo.HtmlEditorCore </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
21 </span><span class="jsdoc-var">Roo.HtmlEditorCore.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
24 </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
25 </span><span class="jsdoc-comment">/**
27 * Fires when the editor is fully initialized (including the iframe)
28 * @param {Roo.HtmlEditorCore} this
30 </span><span class="jsdoc-var">initialize</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
31 </span><span class="jsdoc-comment">/**
33 * Fires when the editor is first receives the focus. Any insertion must wait
34 * until after this event.
35 * @param {Roo.HtmlEditorCore} this
37 </span><span class="jsdoc-var">activate</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
38 </span><span class="jsdoc-comment">/**
40 * Fires before the textarea is updated with content from the editor iframe. Return false
42 * @param {Roo.HtmlEditorCore} this
43 * @param {String} html
45 </span><span class="jsdoc-var">beforesync</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
46 </span><span class="jsdoc-comment">/**
48 * Fires before the iframe editor is updated with content from the textarea. Return false
50 * @param {Roo.HtmlEditorCore} this
51 * @param {String} html
53 </span><span class="jsdoc-var">beforepush</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
54 </span><span class="jsdoc-comment">/**
56 * Fires when the textarea is updated with content from the editor iframe.
57 * @param {Roo.HtmlEditorCore} this
58 * @param {String} html
60 </span><span class="jsdoc-var">sync</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
61 </span><span class="jsdoc-comment">/**
63 * Fires when the iframe editor is updated with content from the textarea.
64 * @param {Roo.HtmlEditorCore} this
65 * @param {String} html
67 </span><span class="jsdoc-var">push</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
69 </span><span class="jsdoc-comment">/**
71 * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
72 * @param {Roo.HtmlEditorCore} this
74 </span><span class="jsdoc-var">editorevent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
76 </span><span class="jsdoc-syntax">});
78 </span><span class="jsdoc-comment">// at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
80 // defaults : white / black...
81 </span><span class="jsdoc-var">this.applyBlacklists</span><span class="jsdoc-syntax">();
88 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.Component</span><span class="jsdoc-syntax">, {
91 </span><span class="jsdoc-comment">/**
92 * @cfg {Roo.form.HtmlEditor|Roo.bootstrap.HtmlEditor} the owner field
95 </span><span class="jsdoc-var">owner </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
97 </span><span class="jsdoc-comment">/**
98 * @cfg {String} resizable 's' or 'se' or 'e' - wrapps the element in a
101 </span><span class="jsdoc-var">resizable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
102 </span><span class="jsdoc-comment">/**
103 * @cfg {Number} height (in pixels)
105 </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">: 300,
106 </span><span class="jsdoc-comment">/**
107 * @cfg {Number} width (in pixels)
109 </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 500,
111 </span><span class="jsdoc-comment">/**
112 * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
115 </span><span class="jsdoc-var">stylesheets</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
117 </span><span class="jsdoc-comment">/**
118 * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
120 </span><span class="jsdoc-var">allowComments</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
121 </span><span class="jsdoc-comment">// id of frame..
122 </span><span class="jsdoc-var">frameId</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
124 </span><span class="jsdoc-comment">// private properties
125 </span><span class="jsdoc-var">validationEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
126 </span><span class="jsdoc-var">deferHeight</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
127 </span><span class="jsdoc-var">initialized </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
128 </span><span class="jsdoc-var">activated </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
129 </span><span class="jsdoc-var">sourceEditMode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
130 </span><span class="jsdoc-var">onFocus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
131 </span><span class="jsdoc-var">iframePad</span><span class="jsdoc-syntax">:3,
132 </span><span class="jsdoc-var">hideMode</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">'offsets'</span><span class="jsdoc-syntax">,
134 </span><span class="jsdoc-var">clearUp</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
136 </span><span class="jsdoc-comment">// blacklist + whitelisted elements..
137 </span><span class="jsdoc-var">black</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
138 </span><span class="jsdoc-var">white</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
140 </span><span class="jsdoc-var">bodyCls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
142 </span><span class="jsdoc-comment">/**
143 * Protected method that will not generally be called directly. It
144 * is called when the editor initializes the iframe with HTML contents. Override this method if you
145 * want to change the initialization markup of the iframe (e.g. to add stylesheets).
147 </span><span class="jsdoc-var">getDocMarkup </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
148 </span><span class="jsdoc-comment">// body styles..
149 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
151 </span><span class="jsdoc-comment">// inherit styels from page...??
152 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stylesheets </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
154 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.head</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) {
155 </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">node.dom.outerHTML </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">XMLSerializer</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.serializeToString</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.dom</span><span class="jsdoc-syntax">);
158 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.head</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'link'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) {
159 </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">node.dom.outerHTML </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">XMLSerializer</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.serializeToString</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.dom</span><span class="jsdoc-syntax">);
162 } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.stylesheets.length</span><span class="jsdoc-syntax">) {
163 </span><span class="jsdoc-comment">// simple..
164 </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'<style type="text/css">' </span><span class="jsdoc-syntax">+
165 </span><span class="jsdoc-string">'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' </span><span class="jsdoc-syntax">+
166 </span><span class="jsdoc-string">'</style>'</span><span class="jsdoc-syntax">;
167 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
168 </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.stylesheets</span><span class="jsdoc-syntax">) {
169 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stylesheets</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">) {
170 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
172 </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'<link rel="stylesheet" href="' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.stylesheets</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] +</span><span class="jsdoc-string">'" type="text/css">'</span><span class="jsdoc-syntax">;
177 </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'<style type="text/css">' </span><span class="jsdoc-syntax">+
178 </span><span class="jsdoc-string">'IMG { cursor: pointer } ' </span><span class="jsdoc-syntax">+
179 </span><span class="jsdoc-string">'</style>'</span><span class="jsdoc-syntax">;
181 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'roo-htmleditor-body'</span><span class="jsdoc-syntax">;
183 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.bodyCls.length</span><span class="jsdoc-syntax">){
184 </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.bodyCls</span><span class="jsdoc-syntax">;
187 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'<html><head>' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+
188 </span><span class="jsdoc-comment">//<style type="text/css">' +
189 //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
191 </span><span class="jsdoc-string">' </head><body contenteditable="true" data-enable-grammerly="true" class="' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'"></body></html>'</span><span class="jsdoc-syntax">;
194 </span><span class="jsdoc-comment">// private
195 </span><span class="jsdoc-var">onRender </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">)
197 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
198 </span><span class="jsdoc-comment">//Roo.HtmlEditorCore.superclass.onRender.call(this, ct, position);
199 </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.owner.inputEl </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.inputEl</span><span class="jsdoc-syntax">() : </span><span class="jsdoc-var">this.owner.el</span><span class="jsdoc-syntax">;
202 </span><span class="jsdoc-var">this.el.dom.style.border </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'0 none'</span><span class="jsdoc-syntax">;
203 </span><span class="jsdoc-var">this.el.dom.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'tabIndex'</span><span class="jsdoc-syntax">, -1);
204 </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'x-hidden hide'</span><span class="jsdoc-syntax">);
208 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// fix IE 1px bogus margin
209 </span><span class="jsdoc-var">this.el.applyStyles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'margin-top:-1px;margin-bottom:-1px;'</span><span class="jsdoc-syntax">)
213 </span><span class="jsdoc-var">this.frameId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">();
217 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">iframe </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.owner.wrap.createChild</span><span class="jsdoc-syntax">({
218 </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'iframe'</span><span class="jsdoc-syntax">,
219 </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'form-control'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-comment">// bootstrap..
220 </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.frameId</span><span class="jsdoc-syntax">,
221 </span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.frameId</span><span class="jsdoc-syntax">,
222 </span><span class="jsdoc-var">frameBorder </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'no'</span><span class="jsdoc-syntax">,
223 </span><span class="jsdoc-string">'src' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.SSL_SECURE_URL </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.SSL_SECURE_URL </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"javascript:false"
224 </span><span class="jsdoc-syntax">}, </span><span class="jsdoc-var">this.el
225 </span><span class="jsdoc-syntax">);
228 </span><span class="jsdoc-var">this.iframe </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">iframe.dom</span><span class="jsdoc-syntax">;
230 </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
232 </span><span class="jsdoc-var">this.doc.designMode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'on'</span><span class="jsdoc-syntax">;
234 </span><span class="jsdoc-var">this.doc.open</span><span class="jsdoc-syntax">();
235 </span><span class="jsdoc-var">this.doc.write</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getDocMarkup</span><span class="jsdoc-syntax">());
236 </span><span class="jsdoc-var">this.doc.close</span><span class="jsdoc-syntax">();
239 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">task </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-comment">// must defer to wait for browser to be ready
240 </span><span class="jsdoc-var">run </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
241 </span><span class="jsdoc-comment">//console.log("run task?" + this.doc.readyState);
242 </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
243 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.readyState </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'complete'</span><span class="jsdoc-syntax">){
244 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
245 </span><span class="jsdoc-var">this.doc.designMode</span><span class="jsdoc-syntax">=</span><span class="jsdoc-string">"on"</span><span class="jsdoc-syntax">;
246 } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
247 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
249 </span><span class="jsdoc-var">Roo.TaskMgr.stop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">);
250 </span><span class="jsdoc-var">this.initEditor.defer</span><span class="jsdoc-syntax">(10, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
253 </span><span class="jsdoc-var">interval </span><span class="jsdoc-syntax">: 10,
254 </span><span class="jsdoc-var">duration</span><span class="jsdoc-syntax">: 10000,
255 </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this
256 </span><span class="jsdoc-syntax">};
257 </span><span class="jsdoc-var">Roo.TaskMgr.start</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">task</span><span class="jsdoc-syntax">);
261 </span><span class="jsdoc-comment">// private
262 </span><span class="jsdoc-var">onResize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">)
264 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'resize: ' </span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">w </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">',' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">);
265 </span><span class="jsdoc-comment">//Roo.HtmlEditorCore.superclass.onResize.apply(this, arguments);
266 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">){
267 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
269 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">w </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'number'</span><span class="jsdoc-syntax">){
271 </span><span class="jsdoc-var">this.iframe.style.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">w </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'</span><span class="jsdoc-syntax">;
273 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'number'</span><span class="jsdoc-syntax">){
275 </span><span class="jsdoc-var">this.iframe.style.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'</span><span class="jsdoc-syntax">;
276 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">){
277 (</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.style.height </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">- (</span><span class="jsdoc-var">this.iframePad</span><span class="jsdoc-syntax">*2)) + </span><span class="jsdoc-string">'px'</span><span class="jsdoc-syntax">;
283 </span><span class="jsdoc-comment">/**
284 * Toggles the editor between standard and source edit mode.
285 * @param {Boolean} sourceEdit (optional) True for source edit, false for standard
287 </span><span class="jsdoc-var">toggleSourceEdit </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sourceEditMode</span><span class="jsdoc-syntax">){
289 </span><span class="jsdoc-var">this.sourceEditMode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sourceEditMode </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
291 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.sourceEditMode</span><span class="jsdoc-syntax">){
293 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.addClass</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'hide'</span><span class="jsdoc-syntax">]); </span><span class="jsdoc-comment">//FIXME - what's the BS styles for these
295 </span><span class="jsdoc-syntax">}</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
296 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.removeClass</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'hide'</span><span class="jsdoc-syntax">]);
297 </span><span class="jsdoc-comment">//this.iframe.className = '';
298 </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
300 </span><span class="jsdoc-comment">//this.setSize(this.owner.wrap.getSize());
301 //this.fireEvent('editmodechange', this, this.sourceEditMode);
302 </span><span class="jsdoc-syntax">},
307 </span><span class="jsdoc-comment">/**
308 * Protected method that will not generally be called directly. If you need/want
309 * custom HTML cleanup, this is the method you should override.
310 * @param {String} html The HTML to be cleaned
311 * return {String} The cleaned HTML
313 </span><span class="jsdoc-var">cleanHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">){
314 </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
315 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html.length </span><span class="jsdoc-syntax">> 5){
316 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// strip safari nonsense
317 </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html.replace</span><span class="jsdoc-syntax">(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
320 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'&nbsp;'</span><span class="jsdoc-syntax">){
321 </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
323 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
326 </span><span class="jsdoc-comment">/**
327 * HTML Editor -> Textarea
328 * Protected method that will not generally be called directly. Syncs the contents
329 * of the editor iframe with the textarea.
331 </span><span class="jsdoc-var">syncValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
332 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.initialized</span><span class="jsdoc-syntax">){
333 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bd </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">);
334 </span><span class="jsdoc-comment">//this.cleanUpPaste(); -- this is done else where and causes havoc..
335 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.innerHTML</span><span class="jsdoc-syntax">;
336 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
337 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// Safari puts text-align styles on the body element!
338 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">m </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">bs.match</span><span class="jsdoc-syntax">(/text-align:(.*?);/i) : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
339 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">[1]){
340 </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'<div style="'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">[0]+</span><span class="jsdoc-string">'">' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'</div>'</span><span class="jsdoc-syntax">;
343 </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cleanHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
344 </span><span class="jsdoc-comment">// fix up the special chars.. normaly like back quotes in word...
345 // however we do not want to do this with chinese..
346 </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html.replace</span><span class="jsdoc-syntax">(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">match</span><span class="jsdoc-syntax">) {
348 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">match.charCodeAt</span><span class="jsdoc-syntax">();
350 </span><span class="jsdoc-comment">// Get the character value, handling surrogate pairs
351 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">match.length </span><span class="jsdoc-syntax">== 2) {
352 </span><span class="jsdoc-comment">// It's a surrogate pair, calculate the Unicode code point
353 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">high </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">match.charCodeAt</span><span class="jsdoc-syntax">(0) - 0xD800;
354 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">low </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">match.charCodeAt</span><span class="jsdoc-syntax">(1) - 0xDC00;
355 </span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">high </span><span class="jsdoc-syntax">* 0x400) + </span><span class="jsdoc-var">low </span><span class="jsdoc-syntax">+ 0x10000;
356 } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(
357 (</span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">>= 0x4E00 && </span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">< 0xA000 ) ||
358 (</span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">>= 0x3400 && </span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">< 0x4E00 ) ||
359 (</span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">>= 0xf900 && </span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">< 0xfb00 )
361 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">match</span><span class="jsdoc-syntax">;
364 </span><span class="jsdoc-comment">// No, use a numeric entity. Here we brazenly (and possibly mistakenly)
365 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">"&#" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">cc </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">";"</span><span class="jsdoc-syntax">;
372 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforesync'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
373 </span><span class="jsdoc-var">this.el.dom.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
374 </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'sync'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
379 </span><span class="jsdoc-comment">/**
380 * Protected method that will not generally be called directly. Pushes the value of the textarea
381 * into the iframe editor.
383 </span><span class="jsdoc-var">pushValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
384 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.initialized</span><span class="jsdoc-syntax">){
385 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.dom.value.trim</span><span class="jsdoc-syntax">();
387 </span><span class="jsdoc-comment">// if(v.length < 1){
391 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforepush'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
392 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">);
393 </span><span class="jsdoc-var">d.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
394 </span><span class="jsdoc-var">this.cleanUpPaste</span><span class="jsdoc-syntax">();
395 </span><span class="jsdoc-var">this.el.dom.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">d.innerHTML</span><span class="jsdoc-syntax">;
396 </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'push'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
401 </span><span class="jsdoc-comment">// private
402 </span><span class="jsdoc-var">deferFocus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
403 </span><span class="jsdoc-var">this.focus.defer</span><span class="jsdoc-syntax">(10, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
406 </span><span class="jsdoc-comment">// doc'ed in Field
407 </span><span class="jsdoc-var">focus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
408 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.win </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">this.sourceEditMode</span><span class="jsdoc-syntax">){
409 </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
410 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
411 </span><span class="jsdoc-var">this.el.focus</span><span class="jsdoc-syntax">();
415 </span><span class="jsdoc-var">assignDocWin</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
417 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">iframe </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">;
419 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
420 </span><span class="jsdoc-var">this.doc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">iframe.contentWindow.document</span><span class="jsdoc-syntax">;
421 </span><span class="jsdoc-var">this.win </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">iframe.contentWindow</span><span class="jsdoc-syntax">;
422 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
423 </span><span class="jsdoc-comment">// if (!Roo.get(this.frameId)) {
426 // this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
427 // this.win = Roo.get(this.frameId).dom.contentWindow;
429 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.frameId</span><span class="jsdoc-syntax">) && !</span><span class="jsdoc-var">iframe.contentDocument</span><span class="jsdoc-syntax">) {
430 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
433 </span><span class="jsdoc-var">this.doc </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">iframe.contentDocument </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.frameId</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.dom.document</span><span class="jsdoc-syntax">);
434 </span><span class="jsdoc-var">this.win </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">iframe.contentWindow </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.frameId</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.dom.contentWindow</span><span class="jsdoc-syntax">);
438 </span><span class="jsdoc-comment">// private
439 </span><span class="jsdoc-var">initEditor </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
440 </span><span class="jsdoc-comment">//console.log("INIT EDITOR");
441 </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
445 </span><span class="jsdoc-var">this.doc.designMode</span><span class="jsdoc-syntax">=</span><span class="jsdoc-string">"on"</span><span class="jsdoc-syntax">;
446 </span><span class="jsdoc-var">this.doc.open</span><span class="jsdoc-syntax">();
447 </span><span class="jsdoc-var">this.doc.write</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getDocMarkup</span><span class="jsdoc-syntax">());
448 </span><span class="jsdoc-var">this.doc.close</span><span class="jsdoc-syntax">();
450 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dbody </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">);
451 </span><span class="jsdoc-comment">//var ss = this.el.getStyles('font-size', 'font-family', 'background-image', 'background-repeat');
452 // this copies styles from the containing element into thsi one..
453 // not sure why we need all of this..
454 //var ss = this.el.getStyles('font-size', 'background-image', 'background-repeat');
456 //var ss = this.el.getStyles( 'background-image', 'background-repeat');
457 //ss['background-attachment'] = 'fixed'; // w3c
458 </span><span class="jsdoc-var">dbody.bgProperties </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'fixed'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// ie
459 //Roo.DomHelper.applyStyles(dbody, ss);
460 </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, {
461 </span><span class="jsdoc-comment">//'mousedown': this.onEditorEvent,
462 </span><span class="jsdoc-string">'mouseup'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
463 </span><span class="jsdoc-string">'dblclick'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
464 </span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
465 </span><span class="jsdoc-string">'keyup'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
466 </span><span class="jsdoc-var">buffer</span><span class="jsdoc-syntax">:100,
467 </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this
468 </span><span class="jsdoc-syntax">});
469 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko</span><span class="jsdoc-syntax">){
470 </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'keypress'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.mozKeyPress</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
472 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isOpera</span><span class="jsdoc-syntax">){
473 </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'keydown'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.fixKeys</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
475 </span><span class="jsdoc-var">this.initialized </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
477 </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'initialize'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
478 </span><span class="jsdoc-var">this.pushValue</span><span class="jsdoc-syntax">();
481 </span><span class="jsdoc-comment">// private
482 </span><span class="jsdoc-var">onDestroy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
486 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rendered</span><span class="jsdoc-syntax">){
488 </span><span class="jsdoc-comment">//for (var i =0; i < this.toolbars.length;i++) {
489 // // fixme - ask toolbars for heights?
490 // this.toolbars[i].onDestroy();
493 //this.wrap.dom.innerHTML = '';
494 //this.wrap.remove();
495 </span><span class="jsdoc-syntax">}
498 </span><span class="jsdoc-comment">// private
499 </span><span class="jsdoc-var">onFirstFocus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
501 </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
504 </span><span class="jsdoc-var">this.activated </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
507 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// prevent silly gecko errors
508 </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
509 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">();
510 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">s.focusNode </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">s.focusNode.nodeType </span><span class="jsdoc-syntax">!= 3){
511 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">s.getRangeAt</span><span class="jsdoc-syntax">(0);
512 </span><span class="jsdoc-var">r.selectNodeContents</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">));
513 </span><span class="jsdoc-var">r.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
514 </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
516 </span><span class="jsdoc-keyword">try</span><span class="jsdoc-syntax">{
517 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'useCSS'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
518 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'styleWithCSS'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
519 }</span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){}
521 </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'activate'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
524 </span><span class="jsdoc-comment">// private
525 </span><span class="jsdoc-var">adjustFont</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">btn</span><span class="jsdoc-syntax">){
526 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">adjust </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">btn.cmd </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'increasefontsize' </span><span class="jsdoc-syntax">? 1 : -1;
527 </span><span class="jsdoc-comment">//if(Roo.isSafari){ // safari
530 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">parseInt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.queryCommandValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'FontSize'</span><span class="jsdoc-syntax">)|| 3, 10);
531 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// safari
532 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sm </span><span class="jsdoc-syntax">= { 10 : 1, 13: 2, 16:3, 18:4, 24: 5, 32:6, 48: 7 };
533 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">< 10) ? 10 : </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
534 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">> 48) ? 48 : </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
535 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sm</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? 1 : </span><span class="jsdoc-var">sm</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">];
540 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(1, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">adjust</span><span class="jsdoc-syntax">);
542 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'FontSize'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">);
545 </span><span class="jsdoc-var">onEditorEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
547 </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
548 </span><span class="jsdoc-comment">// this.updateToolbar();
549 </span><span class="jsdoc-var">this.syncValue</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">//we can not sync so often.. sync cleans, so this breaks stuff
550 </span><span class="jsdoc-syntax">},
552 </span><span class="jsdoc-var">insertTag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tg</span><span class="jsdoc-syntax">)
554 </span><span class="jsdoc-comment">// could be a bit smarter... -> wrap the current selected tRoo..
555 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tg.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'span' </span><span class="jsdoc-syntax">||
556 </span><span class="jsdoc-var">tg.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'code' </span><span class="jsdoc-syntax">||
557 </span><span class="jsdoc-var">tg.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'sup' </span><span class="jsdoc-syntax">||
558 </span><span class="jsdoc-var">tg.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'sub'
559 </span><span class="jsdoc-syntax">) {
561 </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.createRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getSelection</span><span class="jsdoc-syntax">());
562 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">wrappingNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tg.toLowerCase</span><span class="jsdoc-syntax">());
563 </span><span class="jsdoc-var">wrappingNode.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range.extractContents</span><span class="jsdoc-syntax">());
564 </span><span class="jsdoc-var">range.insertNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">wrappingNode</span><span class="jsdoc-syntax">);
566 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
571 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"formatblock"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tg</span><span class="jsdoc-syntax">);
575 </span><span class="jsdoc-var">insertText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">)
579 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.createRange</span><span class="jsdoc-syntax">();
580 </span><span class="jsdoc-var">range.deleteContents</span><span class="jsdoc-syntax">();
581 </span><span class="jsdoc-comment">//alert(Sender.getAttribute('label'));
583 </span><span class="jsdoc-var">range.insertNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.createTextNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">));
588 </span><span class="jsdoc-comment">/**
589 * Executes a Midas editor command on the editor document and performs necessary focus and
590 * toolbar updates. <b>This should only be called after the editor is initialized.</b>
591 * @param {String} cmd The Midas command
592 * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
594 </span><span class="jsdoc-var">relayCmd </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
595 </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
596 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
597 </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
598 </span><span class="jsdoc-comment">//this.updateToolbar();
599 </span><span class="jsdoc-var">this.owner.deferFocus</span><span class="jsdoc-syntax">();
602 </span><span class="jsdoc-comment">/**
603 * Executes a Midas editor command directly on the editor document.
604 * For visual commands, you should use {@link #relayCmd} instead.
605 * <b>This should only be called after the editor is initialized.</b>
606 * @param {String} cmd The Midas command
607 * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
609 </span><span class="jsdoc-var">execCmd </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
610 </span><span class="jsdoc-var">this.doc.execCommand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">null </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
611 </span><span class="jsdoc-var">this.syncValue</span><span class="jsdoc-syntax">();
616 </span><span class="jsdoc-comment">/**
617 * Inserts the passed text at the current cursor position. Note: the editor must be initialized and activated
619 * @param {String} text | dom node..
621 </span><span class="jsdoc-var">insertAtCursor </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">)
624 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.activated</span><span class="jsdoc-syntax">){
625 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
627 </span><span class="jsdoc-comment">/*
630 var r = this.doc.selection.createRange();
641 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isOpera </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
642 </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
645 </span><span class="jsdoc-comment">// from jquery ui (MIT licenced)
646 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">;
647 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">win </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.win</span><span class="jsdoc-syntax">;
649 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">win.getSelection </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">win.getSelection</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getRangeAt</span><span class="jsdoc-syntax">) {
650 </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">win.getSelection</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getRangeAt</span><span class="jsdoc-syntax">(0);
651 </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">;
652 </span><span class="jsdoc-var">range.insertNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
653 } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">win.document.selection </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">win.document.selection.createRange</span><span class="jsdoc-syntax">) {
654 </span><span class="jsdoc-comment">// no firefox support
655 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">txt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">text.outerHTML</span><span class="jsdoc-syntax">;
656 </span><span class="jsdoc-var">win.document.selection.createRange</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.pasteHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">);
657 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
658 </span><span class="jsdoc-comment">// no firefox support
659 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">txt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">text.outerHTML</span><span class="jsdoc-syntax">;
660 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'InsertHTML'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">);
663 </span><span class="jsdoc-var">this.syncValue</span><span class="jsdoc-syntax">();
665 </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
668 </span><span class="jsdoc-comment">// private
669 </span><span class="jsdoc-var">mozKeyPress </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
670 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.ctrlKey</span><span class="jsdoc-syntax">){
671 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getCharCode</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">;
673 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">> 0){
674 </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">();
675 </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
676 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'b'</span><span class="jsdoc-syntax">:
677 </span><span class="jsdoc-var">cmd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'bold'</span><span class="jsdoc-syntax">;
678 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
679 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'i'</span><span class="jsdoc-syntax">:
680 </span><span class="jsdoc-var">cmd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'italic'</span><span class="jsdoc-syntax">;
681 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
683 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'u'</span><span class="jsdoc-syntax">:
684 </span><span class="jsdoc-var">cmd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'underline'</span><span class="jsdoc-syntax">;
685 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
687 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">:
688 </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
689 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
692 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">){
693 </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
694 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">);
695 </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
696 </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
703 </span><span class="jsdoc-comment">// private
704 </span><span class="jsdoc-var">fixKeys </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){ </span><span class="jsdoc-comment">// load time branching for fastest keydown performance
705 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
706 </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
707 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
708 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">e.TAB</span><span class="jsdoc-syntax">){
709 </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
710 </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.selection.createRange</span><span class="jsdoc-syntax">();
711 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">){
712 </span><span class="jsdoc-var">r.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
713 </span><span class="jsdoc-var">r.pasteHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'&#160;&#160;&#160;&#160;'</span><span class="jsdoc-syntax">);
714 </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
716 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
719 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">e.ENTER</span><span class="jsdoc-syntax">){
720 </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.selection.createRange</span><span class="jsdoc-syntax">();
721 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">){
722 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">r.parentElement</span><span class="jsdoc-syntax">();
723 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">target.tagName.toLowerCase</span><span class="jsdoc-syntax">() != </span><span class="jsdoc-string">'li'</span><span class="jsdoc-syntax">){
724 </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
725 </span><span class="jsdoc-var">r.pasteHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'<br />'</span><span class="jsdoc-syntax">);
726 </span><span class="jsdoc-var">r.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
727 </span><span class="jsdoc-var">r.select</span><span class="jsdoc-syntax">();
731 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// paste
732 </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
733 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
738 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isOpera</span><span class="jsdoc-syntax">){
739 </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
740 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">();
741 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">e.TAB</span><span class="jsdoc-syntax">){
742 </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
743 </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
744 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'InsertHTML'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'&#160;&#160;&#160;&#160;'</span><span class="jsdoc-syntax">);
745 </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
747 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// paste
748 </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
749 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
753 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
754 </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
755 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">();
757 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">e.TAB</span><span class="jsdoc-syntax">){
758 </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
759 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'InsertText'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'\t'</span><span class="jsdoc-syntax">);
760 </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
761 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
763 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// paste
764 </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
765 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
772 </span><span class="jsdoc-var">getAllAncestors</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
774 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getSelectedNode</span><span class="jsdoc-syntax">();
775 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">= [];
776 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">) {
777 </span><span class="jsdoc-var">a.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// push blank onto stack..
778 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getParentElement</span><span class="jsdoc-syntax">();
782 </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">&& (</span><span class="jsdoc-var">p.nodeType </span><span class="jsdoc-syntax">== 1) && (</span><span class="jsdoc-var">p.tagName.toLowerCase</span><span class="jsdoc-syntax">() != </span><span class="jsdoc-string">'body'</span><span class="jsdoc-syntax">)) {
783 </span><span class="jsdoc-var">a.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">);
784 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p.parentNode</span><span class="jsdoc-syntax">;
786 </span><span class="jsdoc-var">a.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
787 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">;
789 </span><span class="jsdoc-var">lastSel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
790 </span><span class="jsdoc-var">lastSelNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
793 </span><span class="jsdoc-var">getSelection </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
795 </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
796 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.doc.selection </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">();
799 </span><span class="jsdoc-var">getSelectedNode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
801 </span><span class="jsdoc-comment">// this may only work on Gecko!!!
803 // should we cache this!!!!
808 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.createRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getSelection</span><span class="jsdoc-syntax">())</span><span class="jsdoc-var">.cloneRange</span><span class="jsdoc-syntax">();
810 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">) {
811 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.parentElement</span><span class="jsdoc-syntax">();
812 </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) {
813 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">testRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.duplicate</span><span class="jsdoc-syntax">();
814 </span><span class="jsdoc-var">testRange.moveToElementText</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">);
815 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">testRange.inRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">)) {
816 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
818 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">parent.nodeType </span><span class="jsdoc-syntax">!= 1) || (</span><span class="jsdoc-var">parent.tagName.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'body'</span><span class="jsdoc-syntax">)) {
819 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
821 </span><span class="jsdoc-var">parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">parent.parentElement</span><span class="jsdoc-syntax">;
823 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">;
826 </span><span class="jsdoc-comment">// is ancestor a text element.
827 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ac </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.commonAncestorContainer</span><span class="jsdoc-syntax">;
828 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ac.nodeType </span><span class="jsdoc-syntax">== 3) {
829 </span><span class="jsdoc-var">ac </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ac.parentNode</span><span class="jsdoc-syntax">;
832 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ac.childNodes</span><span class="jsdoc-syntax">;
834 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodes </span><span class="jsdoc-syntax">= [];
835 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">other_nodes </span><span class="jsdoc-syntax">= [];
836 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">has_other_nodes </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
837 </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax"><</span><span class="jsdoc-var">ar.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
838 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 3) && (!</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.data.length</span><span class="jsdoc-syntax">)) { </span><span class="jsdoc-comment">// empty text ?
839 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
841 </span><span class="jsdoc-comment">// fullly contained node.
843 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rangeIntersectsNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) && </span><span class="jsdoc-var">this.rangeCompareNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) == 3) {
844 </span><span class="jsdoc-var">nodes.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
845 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
848 </span><span class="jsdoc-comment">// probably selected..
849 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 1) && </span><span class="jsdoc-var">this.rangeIntersectsNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) && (</span><span class="jsdoc-var">this.rangeCompareNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) > 0)) {
850 </span><span class="jsdoc-var">other_nodes.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
851 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
853 </span><span class="jsdoc-comment">// outer..
854 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.rangeIntersectsNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])|| (</span><span class="jsdoc-var">this.rangeCompareNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) == 0)) {
855 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
859 </span><span class="jsdoc-var">has_other_nodes </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
861 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">nodes.length </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">other_nodes.length</span><span class="jsdoc-syntax">) {
862 </span><span class="jsdoc-var">nodes</span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">other_nodes</span><span class="jsdoc-syntax">;
864 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">has_other_nodes </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">nodes.length </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">nodes.length </span><span class="jsdoc-syntax">> 1)) {
865 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
868 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">nodes</span><span class="jsdoc-syntax">[0];
870 </span><span class="jsdoc-var">createRange</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">)
872 </span><span class="jsdoc-comment">// this has strange effects when using with
873 // top toolbar - not sure if it's a great idea.
874 //this.editor.contentWindow.focus();
875 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">"undefined"</span><span class="jsdoc-syntax">) {
876 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
877 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">sel.getRangeAt </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">sel.getRangeAt</span><span class="jsdoc-syntax">(0) : </span><span class="jsdoc-var">sel.createRange</span><span class="jsdoc-syntax">();
878 } </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
879 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doc.createRange</span><span class="jsdoc-syntax">();
881 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
882 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doc.createRange</span><span class="jsdoc-syntax">();
885 </span><span class="jsdoc-var">getParentElement</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
888 </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
889 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.doc.selection </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">();
891 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.createRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
893 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
894 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.commonAncestorContainer</span><span class="jsdoc-syntax">;
895 </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p.nodeType </span><span class="jsdoc-syntax">== 3) { </span><span class="jsdoc-comment">// text node
896 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p.parentNode</span><span class="jsdoc-syntax">;
898 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">;
899 } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
900 </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
904 </span><span class="jsdoc-comment">/***
906 * Range intersection.. the hard stuff...
910 * [ -- selected range --- ]
914 * if end is before start or hits it. fail.
915 * if start is after end or hits it fail.
917 * if either hits (but other is outside. - then it's not
923 // @see http://www.thismuchiknow.co.uk/?p=64.
924 </span><span class="jsdoc-var">rangeIntersectsNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
926 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.ownerDocument.createRange</span><span class="jsdoc-syntax">();
927 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
928 </span><span class="jsdoc-var">nodeRange.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
929 } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
930 </span><span class="jsdoc-var">nodeRange.selectNodeContents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
933 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rangeStartRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.cloneRange</span><span class="jsdoc-syntax">();
934 </span><span class="jsdoc-var">rangeStartRange.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
936 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rangeEndRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.cloneRange</span><span class="jsdoc-syntax">();
937 </span><span class="jsdoc-var">rangeEndRange.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
939 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeStartRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nodeRange.cloneRange</span><span class="jsdoc-syntax">();
940 </span><span class="jsdoc-var">nodeStartRange.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
942 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeEndRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nodeRange.cloneRange</span><span class="jsdoc-syntax">();
943 </span><span class="jsdoc-var">nodeEndRange.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
945 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">rangeStartRange.compareBoundaryPoints</span><span class="jsdoc-syntax">(
946 </span><span class="jsdoc-var">Range.START_TO_START</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nodeEndRange</span><span class="jsdoc-syntax">) == -1 &&
947 </span><span class="jsdoc-var">rangeEndRange.compareBoundaryPoints</span><span class="jsdoc-syntax">(
948 </span><span class="jsdoc-var">Range.START_TO_START</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nodeStartRange</span><span class="jsdoc-syntax">) == 1;
952 </span><span class="jsdoc-var">rangeCompareNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
954 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.ownerDocument.createRange</span><span class="jsdoc-syntax">();
955 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
956 </span><span class="jsdoc-var">nodeRange.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
957 } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
958 </span><span class="jsdoc-var">nodeRange.selectNodeContents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
962 </span><span class="jsdoc-var">range.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
964 </span><span class="jsdoc-var">nodeRange.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
966 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ss </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.compareBoundaryPoints</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">Range.START_TO_START</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nodeRange</span><span class="jsdoc-syntax">);
967 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ee </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.compareBoundaryPoints</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">Range.END_TO_END</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nodeRange</span><span class="jsdoc-syntax">);
969 </span><span class="jsdoc-comment">//Roo.log(node.tagName + ': ss='+ss +', ee='+ee)
971 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeIsBefore </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ss </span><span class="jsdoc-syntax">== 1;
972 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeIsAfter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ee </span><span class="jsdoc-syntax">== -1;
974 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeIsBefore </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">nodeIsAfter</span><span class="jsdoc-syntax">) {
975 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">0; </span><span class="jsdoc-comment">// outer
976 </span><span class="jsdoc-syntax">}
977 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">nodeIsBefore </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">nodeIsAfter</span><span class="jsdoc-syntax">) {
978 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">1; </span><span class="jsdoc-comment">//right trailed.
979 </span><span class="jsdoc-syntax">}
981 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeIsBefore </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">nodeIsAfter</span><span class="jsdoc-syntax">) {
982 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">2; </span><span class="jsdoc-comment">// left trailed.
983 </span><span class="jsdoc-syntax">}
984 </span><span class="jsdoc-comment">// fully contined.
985 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">3;
988 </span><span class="jsdoc-comment">// private? - in a new class?
989 </span><span class="jsdoc-var">cleanUpPaste </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
991 </span><span class="jsdoc-comment">// cleans up the whole document..
992 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'cleanuppaste'</span><span class="jsdoc-syntax">);
994 </span><span class="jsdoc-var">this.cleanUpChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
995 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">clean </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cleanWordChars</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body.innerHTML</span><span class="jsdoc-syntax">);
996 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">clean </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">this.doc.body.innerHTML</span><span class="jsdoc-syntax">) {
997 </span><span class="jsdoc-var">this.doc.body.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">clean</span><span class="jsdoc-syntax">;
1002 </span><span class="jsdoc-var">cleanWordChars </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">input</span><span class="jsdoc-syntax">) {</span><span class="jsdoc-comment">// change the chars to hex code
1003 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">he </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.HtmlEditorCore</span><span class="jsdoc-syntax">;
1005 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">output </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">input</span><span class="jsdoc-syntax">;
1006 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">he.swapCodes</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sw</span><span class="jsdoc-syntax">) {
1007 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">swapper </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">RegExp</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"\\u" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">sw</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.toString</span><span class="jsdoc-syntax">(16), </span><span class="jsdoc-string">"g"</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// hex codes
1009 </span><span class="jsdoc-var">output </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">output.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">swapper</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sw</span><span class="jsdoc-syntax">[1]);
1012 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">output</span><span class="jsdoc-syntax">;
1019 </span><span class="jsdoc-var">cleanUpChild </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
1022 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterComment</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">});
1023 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterAttributes</span><span class="jsdoc-syntax">({
1024 </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">,
1025 </span><span class="jsdoc-var">attrib_black </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.ablack</span><span class="jsdoc-syntax">,
1026 </span><span class="jsdoc-var">attrib_clean </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.aclean</span><span class="jsdoc-syntax">,
1027 </span><span class="jsdoc-var">style_white </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.cwhite</span><span class="jsdoc-syntax">,
1028 </span><span class="jsdoc-var">style_black </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.cblack
1029 </span><span class="jsdoc-syntax">});
1030 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterBlack</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">black </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.black</span><span class="jsdoc-syntax">});
1031 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterKeepChildren</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">black </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.remove</span><span class="jsdoc-syntax">} );
1036 </span><span class="jsdoc-comment">/**
1037 * Clean up MS wordisms...
1038 * @deprecated - use filter directly
1040 </span><span class="jsdoc-var">cleanWord </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
1042 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterWord</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">});
1047 </span><span class="jsdoc-comment">/**
1049 * @deprecated - use filters
1051 </span><span class="jsdoc-var">cleanTableWidths </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
1053 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterTable</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">});
1060 </span><span class="jsdoc-comment">/* ?? why ?? */
1061 </span><span class="jsdoc-var">domToHTML </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">depth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nopadtext</span><span class="jsdoc-syntax">) {
1063 </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">|| 0;
1064 </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
1066 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">currentElement</span><span class="jsdoc-syntax">) {
1067 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.domToHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
1070 </span><span class="jsdoc-comment">//Roo.log(currentElement);
1071 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">;
1072 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">allText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
1073 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.nodeName</span><span class="jsdoc-syntax">;
1074 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tagName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElement.tagName</span><span class="jsdoc-syntax">);
1076 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'#text'</span><span class="jsdoc-syntax">) {
1078 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">currentElement.nodeValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">currentElement.nodeValue.trim</span><span class="jsdoc-syntax">();
1082 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1083 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">) {
1085 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
1086 </span><span class="jsdoc-comment">// Prints the node tagName, such as <A>, <IMG>, etc
1087 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) {
1088 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">= [];
1089 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">currentElement.attributes.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
1090 </span><span class="jsdoc-comment">// quoting?
1091 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">aname </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">;
1092 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">currentElement.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value.length</span><span class="jsdoc-syntax">) {
1093 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
1095 </span><span class="jsdoc-var">attr.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">aname </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'="' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElement.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'"' </span><span class="jsdoc-syntax">);
1098 </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"<"</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">currentElement.tagName</span><span class="jsdoc-syntax">+ ( </span><span class="jsdoc-var">attr.length </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">attr.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">) ) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">">"</span><span class="jsdoc-syntax">;
1100 </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
1102 </span><span class="jsdoc-comment">// eack
1103 </span><span class="jsdoc-syntax">}
1104 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
1105 </span><span class="jsdoc-var">tagName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
1107 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'HR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'INPUT'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) > -1) {
1108 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
1110 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'PRE'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TEXTAREA'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TD'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'A'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'SPAN'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) > -1) { </span><span class="jsdoc-comment">// or code?
1111 </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
1115 </span><span class="jsdoc-comment">// Traverse the tree
1116 </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
1117 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">currentElementChild </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.childNodes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
1118 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">allText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
1119 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1120 </span><span class="jsdoc-var">lastnode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1121 </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild</span><span class="jsdoc-syntax">) {
1122 </span><span class="jsdoc-comment">// Formatting code (indent the tree so it looks nice on the screen)
1123 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nopad </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nopadtext</span><span class="jsdoc-syntax">;
1124 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">lastnode </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'SPAN'</span><span class="jsdoc-syntax">) {
1125 </span><span class="jsdoc-var">nopad </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
1127 </span><span class="jsdoc-comment">// text
1128 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'#text'</span><span class="jsdoc-syntax">) {
1129 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">toadd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild.nodeValue</span><span class="jsdoc-syntax">);
1130 </span><span class="jsdoc-var">toadd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">toadd </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">toadd.trim</span><span class="jsdoc-syntax">();
1131 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">nopad </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">toadd.length </span><span class="jsdoc-syntax">> 80) {
1132 </span><span class="jsdoc-var">innerHTML </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">"\n" </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">+ 1 ))</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">( </span><span class="jsdoc-string">" " </span><span class="jsdoc-syntax">);
1134 </span><span class="jsdoc-var">innerHTML </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">toadd</span><span class="jsdoc-syntax">;
1136 </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++;
1137 </span><span class="jsdoc-var">currentElementChild </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.childNodes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
1138 </span><span class="jsdoc-var">lastNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
1139 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
1141 </span><span class="jsdoc-var">allText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
1143 </span><span class="jsdoc-var">innerHTML </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">nopad </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"\n" </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">+ 1 ))</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">( </span><span class="jsdoc-string">" " </span><span class="jsdoc-syntax">);
1145 </span><span class="jsdoc-comment">// Recursively traverse the tree structure of the child node
1146 </span><span class="jsdoc-var">innerHTML </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.domToHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">depth</span><span class="jsdoc-syntax">+1, </span><span class="jsdoc-var">nopadtext</span><span class="jsdoc-syntax">);
1147 </span><span class="jsdoc-var">lastnode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElementChild.nodeName</span><span class="jsdoc-syntax">;
1148 </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++;
1149 </span><span class="jsdoc-var">currentElementChild</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">currentElement.childNodes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
1152 </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">innerHTML</span><span class="jsdoc-syntax">;
1154 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">allText</span><span class="jsdoc-syntax">) {
1155 </span><span class="jsdoc-comment">// The remaining code is mostly for formatting the tree
1156 </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"\n" </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">))</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">( </span><span class="jsdoc-string">" " </span><span class="jsdoc-syntax">);
1160 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) {
1161 </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">"</"</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">">"</span><span class="jsdoc-syntax">;
1163 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
1167 </span><span class="jsdoc-var">applyBlacklists </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
1169 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">w </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.white</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.owner.white </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.white </span><span class="jsdoc-syntax">: [];
1170 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.black</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.owner.black </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.black </span><span class="jsdoc-syntax">: [];
1172 </span><span class="jsdoc-var">this.white </span><span class="jsdoc-syntax">= [];
1173 </span><span class="jsdoc-var">this.black </span><span class="jsdoc-syntax">= [];
1174 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore.white</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1175 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1176 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1178 </span><span class="jsdoc-var">this.white.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1180 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1182 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1183 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1184 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1186 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.white.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1187 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1189 </span><span class="jsdoc-var">this.white.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1191 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1194 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore.black</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1195 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1196 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1198 </span><span class="jsdoc-var">this.black.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1200 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1202 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1203 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1204 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1206 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.black.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1207 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1209 </span><span class="jsdoc-var">this.black.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1211 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1214 </span><span class="jsdoc-var">w </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.cwhite</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.owner.cwhite </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.cwhite </span><span class="jsdoc-syntax">: [];
1215 </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.cblack</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.owner.cblack </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.cblack </span><span class="jsdoc-syntax">: [];
1217 </span><span class="jsdoc-var">this.cwhite </span><span class="jsdoc-syntax">= [];
1218 </span><span class="jsdoc-var">this.cblack </span><span class="jsdoc-syntax">= [];
1219 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore.cwhite</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1220 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1221 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1223 </span><span class="jsdoc-var">this.cwhite.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1225 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1227 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1228 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1229 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1231 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.cwhite.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1232 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1234 </span><span class="jsdoc-var">this.cwhite.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1236 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1239 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore.cblack</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1240 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1241 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1243 </span><span class="jsdoc-var">this.cblack.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1245 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1247 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
1248 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1249 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1251 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.cblack.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) > -1) {
1252 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1254 </span><span class="jsdoc-var">this.cblack.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">);
1256 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
1259 </span><span class="jsdoc-var">setStylesheets </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">stylesheets</span><span class="jsdoc-syntax">)
1261 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">stylesheets</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">){
1262 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe.contentDocument.head</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.createChild</span><span class="jsdoc-syntax">({
1263 </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'link'</span><span class="jsdoc-syntax">,
1264 </span><span class="jsdoc-var">rel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'stylesheet'</span><span class="jsdoc-syntax">,
1265 </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'text/css'</span><span class="jsdoc-syntax">,
1266 </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">stylesheets
1267 </span><span class="jsdoc-syntax">});
1269 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1271 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
1273 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">stylesheets</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">) {
1274 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">s.length</span><span class="jsdoc-syntax">){
1275 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1278 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.iframe.contentDocument.head</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.createChild</span><span class="jsdoc-syntax">({
1279 </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'link'</span><span class="jsdoc-syntax">,
1280 </span><span class="jsdoc-var">rel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'stylesheet'</span><span class="jsdoc-syntax">,
1281 </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'text/css'</span><span class="jsdoc-syntax">,
1282 </span><span class="jsdoc-var">href </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">s
1283 </span><span class="jsdoc-syntax">});
1289 </span><span class="jsdoc-var">removeStylesheets </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
1291 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
1293 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.iframe.contentDocument.head</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'link[rel=stylesheet]'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.elements</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">){
1294 </span><span class="jsdoc-var">s.remove</span><span class="jsdoc-syntax">();
1298 </span><span class="jsdoc-var">setStyle </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">)
1300 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe.contentDocument.head</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.createChild</span><span class="jsdoc-syntax">({
1301 </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">,
1302 </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'text/css'</span><span class="jsdoc-syntax">,
1303 </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">style
1304 </span><span class="jsdoc-syntax">});
1306 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
1309 </span><span class="jsdoc-comment">// hide stuff that is not compatible
1327 * @cfg {String} fieldClass @hide
1330 * @cfg {String} focusClass @hide
1333 * @cfg {String} autoCreate @hide
1336 * @cfg {String} inputType @hide
1339 * @cfg {String} invalidClass @hide
1342 * @cfg {String} invalidText @hide
1345 * @cfg {String} msgFx @hide
1348 * @cfg {String} validateOnBlur @hide
1350 </span><span class="jsdoc-syntax">});
1352 </span><span class="jsdoc-var">Roo.HtmlEditorCore.white </span><span class="jsdoc-syntax">= [
1353 </span><span class="jsdoc-string">'area'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'br'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'input'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'hr'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'wbr'</span><span class="jsdoc-syntax">,
1355 </span><span class="jsdoc-string">'address'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'blockquote'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'center'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'dd'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'dir'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
1356 </span><span class="jsdoc-string">'dl'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'dt'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'h1'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'h2'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'h3'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'h4'</span><span class="jsdoc-syntax">,
1357 </span><span class="jsdoc-string">'h5'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'h6'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'hr'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'isindex'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'listing'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'marquee'</span><span class="jsdoc-syntax">,
1358 </span><span class="jsdoc-string">'menu'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'multicol'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'ol'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'p'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'plaintext'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'pre'</span><span class="jsdoc-syntax">,
1359 </span><span class="jsdoc-string">'table'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'ul'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'xmp'</span><span class="jsdoc-syntax">,
1361 </span><span class="jsdoc-string">'caption'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'col'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'colgroup'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'tbody'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'td'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'tfoot'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'th'</span><span class="jsdoc-syntax">,
1362 </span><span class="jsdoc-string">'thead'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'tr'</span><span class="jsdoc-syntax">,
1364 </span><span class="jsdoc-string">'dir'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'menu'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'ol'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'ul'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'dl'</span><span class="jsdoc-syntax">,
1366 </span><span class="jsdoc-string">'embed'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'object'
1367 </span><span class="jsdoc-syntax">];
1370 </span><span class="jsdoc-var">Roo.HtmlEditorCore.black </span><span class="jsdoc-syntax">= [
1371 </span><span class="jsdoc-comment">// 'embed', 'object', // enable - backend responsiblity to clean thiese
1372 </span><span class="jsdoc-string">'applet'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-comment">//
1373 </span><span class="jsdoc-string">'base'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'basefont'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'bgsound'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'blink'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'body'</span><span class="jsdoc-syntax">,
1374 </span><span class="jsdoc-string">'frame'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'frameset'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'head'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'html'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'ilayer'</span><span class="jsdoc-syntax">,
1375 </span><span class="jsdoc-string">'iframe'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'layer'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'link'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'meta'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'object'</span><span class="jsdoc-syntax">,
1376 </span><span class="jsdoc-string">'script'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'style' </span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'title'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'xml' </span><span class="jsdoc-comment">// clean later..
1377 </span><span class="jsdoc-syntax">];
1378 </span><span class="jsdoc-var">Roo.HtmlEditorCore.clean </span><span class="jsdoc-syntax">= [
1379 </span><span class="jsdoc-string">'script'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'title'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'xml'
1380 </span><span class="jsdoc-syntax">];
1381 </span><span class="jsdoc-var">Roo.HtmlEditorCore.remove </span><span class="jsdoc-syntax">= [
1382 </span><span class="jsdoc-string">'font'
1383 </span><span class="jsdoc-syntax">];
1384 </span><span class="jsdoc-comment">// attributes..
1386 </span><span class="jsdoc-var">Roo.HtmlEditorCore.ablack </span><span class="jsdoc-syntax">= [
1387 </span><span class="jsdoc-string">'on'
1388 </span><span class="jsdoc-syntax">];
1390 </span><span class="jsdoc-var">Roo.HtmlEditorCore.aclean </span><span class="jsdoc-syntax">= [
1391 </span><span class="jsdoc-string">'action'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'background'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'codebase'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'dynsrc'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'lowsrc'
1392 </span><span class="jsdoc-syntax">];
1394 </span><span class="jsdoc-comment">// protocols..
1395 </span><span class="jsdoc-var">Roo.HtmlEditorCore.pwhite</span><span class="jsdoc-syntax">= [
1396 </span><span class="jsdoc-string">'http'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'https'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'mailto'
1397 </span><span class="jsdoc-syntax">];
1399 </span><span class="jsdoc-comment">// white listed style attributes.
1400 </span><span class="jsdoc-var">Roo.HtmlEditorCore.cwhite</span><span class="jsdoc-syntax">= [
1401 </span><span class="jsdoc-comment">// 'text-align', /// default is to allow most things..
1405 </span><span class="jsdoc-syntax">];
1407 </span><span class="jsdoc-comment">// black listed style attributes.
1408 </span><span class="jsdoc-var">Roo.HtmlEditorCore.cblack</span><span class="jsdoc-syntax">= [
1409 </span><span class="jsdoc-comment">// 'font-size' -- this can be set by the project
1410 </span><span class="jsdoc-syntax">];
1413 </span><span class="jsdoc-var">Roo.HtmlEditorCore.swapCodes </span><span class="jsdoc-syntax">=[
1414 [ 8211, </span><span class="jsdoc-string">"&#8211;" </span><span class="jsdoc-syntax">],
1415 [ 8212, </span><span class="jsdoc-string">"&#8212;" </span><span class="jsdoc-syntax">],
1416 [ 8216, </span><span class="jsdoc-string">"'" </span><span class="jsdoc-syntax">],
1417 [ 8217, </span><span class="jsdoc-string">"'" </span><span class="jsdoc-syntax">],
1418 [ 8220, </span><span class="jsdoc-string">'"' </span><span class="jsdoc-syntax">],
1419 [ 8221, </span><span class="jsdoc-string">'"' </span><span class="jsdoc-syntax">],
1420 [ 8226, </span><span class="jsdoc-string">"*" </span><span class="jsdoc-syntax">],
1421 [ 8230, </span><span class="jsdoc-string">"..." </span><span class="jsdoc-syntax">]
1424 </span></code></body></html>