886427cc75d62bc52165bff2bdedd464c1e2dbde
[roojs1] / docs / src / Roo.js.html
1 <html><head><title>Roo.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">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12
13
14
15
16 // for old browsers
17 </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">&quot;undefined&quot;</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">&quot;undefined&quot;</span><span class="jsdoc-syntax">];
18
19 </span><span class="jsdoc-comment">/**
20  * @class Roo
21  * Roo core utilities and functions.
22  * @singleton
23  */
24 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">Roo </span><span class="jsdoc-syntax">= {};
25 </span><span class="jsdoc-comment">/**
26  * Copies all the properties of config to obj.
27  * @param {Object} obj The receiver of the properties
28  * @param {Object} config The source of the properties
29  * @param {Object} defaults A different object that will also be applied for default values
30  * @return {Object} returns obj
31  * @member Roo apply
32  */
33
34
35 </span><span class="jsdoc-var">Roo.apply </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">defaults</span><span class="jsdoc-syntax">){
36     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">defaults</span><span class="jsdoc-syntax">){
37         </span><span class="jsdoc-comment">// no &quot;this&quot; reference for friendly out of scope calls
38         </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">defaults</span><span class="jsdoc-syntax">);
39     }
40     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'object'</span><span class="jsdoc-syntax">){
41         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
42             </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">];
43         }
44     }
45     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
46 };
47
48
49 (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
50     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">idSeed </span><span class="jsdoc-syntax">= 0;
51     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ua </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">navigator.userAgent.toLowerCase</span><span class="jsdoc-syntax">();
52
53     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">isStrict </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.compatMode </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;CSS1Compat&quot;</span><span class="jsdoc-syntax">,
54         </span><span class="jsdoc-var">isOpera </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;opera&quot;</span><span class="jsdoc-syntax">) &gt; -1,
55         </span><span class="jsdoc-var">isSafari </span><span class="jsdoc-syntax">= (/webkit|khtml/)</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ua</span><span class="jsdoc-syntax">),
56         </span><span class="jsdoc-var">isFirefox </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;firefox&quot;</span><span class="jsdoc-syntax">) &gt; -1,
57         </span><span class="jsdoc-var">isIE </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;msie&quot;</span><span class="jsdoc-syntax">) &gt; -1,
58         </span><span class="jsdoc-var">isIE7 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;msie 7&quot;</span><span class="jsdoc-syntax">) &gt; -1,
59         </span><span class="jsdoc-var">isIE11 </span><span class="jsdoc-syntax">= /trident.*rv\:11\./</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ua</span><span class="jsdoc-syntax">),
60         </span><span class="jsdoc-var">isEdge </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;edge&quot;</span><span class="jsdoc-syntax">) &gt; -1,
61         </span><span class="jsdoc-var">isGecko </span><span class="jsdoc-syntax">= !</span><span class="jsdoc-var">isSafari </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;gecko&quot;</span><span class="jsdoc-syntax">) &gt; -1,
62         </span><span class="jsdoc-var">isBorderBox </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">isIE </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">isStrict</span><span class="jsdoc-syntax">,
63         </span><span class="jsdoc-var">isWindows </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;windows&quot;</span><span class="jsdoc-syntax">) != -1 || </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;win32&quot;</span><span class="jsdoc-syntax">) != -1),
64         </span><span class="jsdoc-var">isMac </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;macintosh&quot;</span><span class="jsdoc-syntax">) != -1 || </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;mac os x&quot;</span><span class="jsdoc-syntax">) != -1),
65         </span><span class="jsdoc-var">isLinux </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;linux&quot;</span><span class="jsdoc-syntax">) != -1),
66         </span><span class="jsdoc-var">isSecure </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">window.location.href.toLowerCase</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;https&quot;</span><span class="jsdoc-syntax">) === 0,
67         </span><span class="jsdoc-var">isIOS </span><span class="jsdoc-syntax">= /iphone|ipad/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ua</span><span class="jsdoc-syntax">),
68         </span><span class="jsdoc-var">isAndroid </span><span class="jsdoc-syntax">= /android/</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ua</span><span class="jsdoc-syntax">),
69         </span><span class="jsdoc-var">isTouch </span><span class="jsdoc-syntax">=  (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
70             </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
71                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'chrome'</span><span class="jsdoc-syntax">) != -1 &amp;&amp; </span><span class="jsdoc-var">ua.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'android'</span><span class="jsdoc-syntax">) == -1) {
72                     </span><span class="jsdoc-var">window.addEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchstart'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function </span><span class="jsdoc-var">__set_has_touch__ </span><span class="jsdoc-syntax">() {
73                         </span><span class="jsdoc-var">Roo.isTouch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
74                         </span><span class="jsdoc-var">window.removeEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchstart'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">__set_has_touch__</span><span class="jsdoc-syntax">);
75                     });
76                     </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// no touch on chrome!?
77                 </span><span class="jsdoc-syntax">}
78                 </span><span class="jsdoc-var">document.createEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;TouchEvent&quot;</span><span class="jsdoc-syntax">);
79                 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
80             } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
81                 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
82             }
83
84         })();
85     </span><span class="jsdoc-comment">// remove css image flicker
86         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">isIE </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">isIE7</span><span class="jsdoc-syntax">){
87         </span><span class="jsdoc-keyword">try</span><span class="jsdoc-syntax">{
88             </span><span class="jsdoc-var">document.execCommand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;BackgroundImageCache&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
89         }</span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){}
90     }
91
92     </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo</span><span class="jsdoc-syntax">, {
93         </span><span class="jsdoc-comment">/**
94          * True if the browser is in strict mode
95          * @type Boolean
96          */
97         </span><span class="jsdoc-var">isStrict </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isStrict</span><span class="jsdoc-syntax">,
98         </span><span class="jsdoc-comment">/**
99          * True if the page is running over SSL
100          * @type Boolean
101          */
102         </span><span class="jsdoc-var">isSecure </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isSecure</span><span class="jsdoc-syntax">,
103         </span><span class="jsdoc-comment">/**
104          * True when the document is fully initialized and ready for action
105          * @type Boolean
106          */
107         </span><span class="jsdoc-var">isReady </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
108         </span><span class="jsdoc-comment">/**
109          * Turn on debugging output (currently only the factory uses this)
110          * @type Boolean
111          */
112
113         </span><span class="jsdoc-var">debug</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
114
115         </span><span class="jsdoc-comment">/**
116          * True to automatically uncache orphaned Roo.Elements periodically (defaults to true)
117          * @type Boolean
118          */
119         </span><span class="jsdoc-var">enableGarbageCollector </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
120
121         </span><span class="jsdoc-comment">/**
122          * True to automatically purge event listeners after uncaching an element (defaults to false).
123          * Note: this only happens if enableGarbageCollector is true.
124          * @type Boolean
125          */
126         </span><span class="jsdoc-var">enableListenerCollection</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
127
128         </span><span class="jsdoc-comment">/**
129          * URL to a blank file used by Roo when in secure mode for iframe src and onReady src to prevent
130          * the IE insecure content warning (defaults to javascript:false).
131          * @type String
132          */
133         </span><span class="jsdoc-var">SSL_SECURE_URL </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;javascript:false&quot;</span><span class="jsdoc-syntax">,
134
135         </span><span class="jsdoc-comment">/**
136          * URL to a 1x1 transparent gif image used by Roo to create inline icons with CSS background images. (Defaults to
137          * &quot;http://Roojs.com/s.gif&quot; and you should change this to a URL on your server).
138          * @type String
139          */
140         </span><span class="jsdoc-var">BLANK_IMAGE_URL </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;http:/&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;/localhost/s.gif&quot;</span><span class="jsdoc-syntax">,
141
142         </span><span class="jsdoc-var">emptyFn </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){},
143
144         </span><span class="jsdoc-comment">/**
145          * Copies all the properties of config to obj if they don't already exist.
146          * @param {Object} obj The receiver of the properties
147          * @param {Object} config The source of the properties
148          * @return {Object} returns obj
149          */
150         </span><span class="jsdoc-var">applyIf </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
151             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
152                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
153                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-string">&quot;undefined&quot;</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">]; }
154                 }
155             }
156             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
157         },
158
159         </span><span class="jsdoc-comment">/**
160          * Applies event listeners to elements by selectors when the document is ready.
161          * The event name is specified with an @ suffix.
162 &lt;pre&gt;&lt;code&gt;
163 Roo.addBehaviors({
164    // add a listener for click on all anchors in element with id foo
165    '#foo a@click' : function(e, t){
166        // do something
167    },
168
169    // add the same listener to multiple selectors (separated by comma BEFORE the @)
170    '#foo a, #bar span.some-class@mouseover' : function(){
171        // do something
172    }
173 });
174 &lt;/code&gt;&lt;/pre&gt;
175          * @param {Object} obj The list of behaviors to apply
176          */
177         </span><span class="jsdoc-var">addBehaviors </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
178             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.isReady</span><span class="jsdoc-syntax">){
179                 </span><span class="jsdoc-var">Roo.onReady</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
180                     </span><span class="jsdoc-var">Roo.addBehaviors</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
181                 });
182                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
183             }
184             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cache </span><span class="jsdoc-syntax">= {}; </span><span class="jsdoc-comment">// simple cache for applying multiple behaviors to same selector does query multiple times
185             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">b </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
186                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">parts </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">b.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'@'</span><span class="jsdoc-syntax">);
187                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">parts</span><span class="jsdoc-syntax">[1]){ </span><span class="jsdoc-comment">// for Object prototype breakers
188                     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">parts</span><span class="jsdoc-syntax">[0];
189                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">cache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">]){
190                         </span><span class="jsdoc-var">cache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">Roo.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
191                     }
192                     </span><span class="jsdoc-var">cache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">parts</span><span class="jsdoc-syntax">[1], </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">]);
193                 }
194             }
195             </span><span class="jsdoc-var">cache </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
196         },
197
198         </span><span class="jsdoc-comment">/**
199          * Generates unique ids. If the element already has an id, it is unchanged
200          * @param {String/HTMLElement/Element} el (optional) The element to generate an id for
201          * @param {String} prefix (optional) Id prefix (defaults &quot;Roo-gen&quot;)
202          * @return {String} The generated Id.
203          */
204         </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">prefix</span><span class="jsdoc-syntax">){
205             </span><span class="jsdoc-var">prefix </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">prefix </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;roo-gen&quot;</span><span class="jsdoc-syntax">;
206             </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
207             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">prefix </span><span class="jsdoc-syntax">+ (++</span><span class="jsdoc-var">idSeed</span><span class="jsdoc-syntax">);
208             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-var">el.id </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">el.id </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">el.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">)) : </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
209         },
210
211
212         </span><span class="jsdoc-comment">/**
213          * Extends one class with another class and optionally overrides members with the passed literal. This class
214          * also adds the function &quot;override()&quot; to the class that can be used to override
215          * members on an instance.
216          * @param {Object} subclass The class inheriting the functionality
217          * @param {Object} superclass The class being extended
218          * @param {Object} overrides (optional) A literal with members
219          * @method extend
220          */
221         </span><span class="jsdoc-var">extend </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
222             </span><span class="jsdoc-comment">// inline overrides
223             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">io </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
224                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">m </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
225                     </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">];
226                 }
227             };
228             </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sp</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overrides</span><span class="jsdoc-syntax">){
229                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">sp </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'object'</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// eg. prototype, rather than function constructor..
230                     </span><span class="jsdoc-var">overrides </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sp</span><span class="jsdoc-syntax">;
231                     </span><span class="jsdoc-var">sp </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">;
232                     </span><span class="jsdoc-var">sb </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){</span><span class="jsdoc-var">sp.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);};
233                 }
234                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">F </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){}, </span><span class="jsdoc-var">sbp</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">spp </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sp.prototype</span><span class="jsdoc-syntax">;
235                 </span><span class="jsdoc-var">F.prototype </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">spp</span><span class="jsdoc-syntax">;
236                 </span><span class="jsdoc-var">sbp </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sb.prototype </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">F</span><span class="jsdoc-syntax">();
237                 </span><span class="jsdoc-var">sbp.constructor</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">;
238                 </span><span class="jsdoc-var">sb.superclass</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">spp</span><span class="jsdoc-syntax">;
239
240                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">spp.constructor </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Object.prototype.constructor</span><span class="jsdoc-syntax">){
241                     </span><span class="jsdoc-var">spp.constructor</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">sp</span><span class="jsdoc-syntax">;
242
243                 }
244
245                 </span><span class="jsdoc-var">sb.override </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
246                     </span><span class="jsdoc-var">Roo.override</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
247                 };
248                 </span><span class="jsdoc-var">sbp.override </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">io</span><span class="jsdoc-syntax">;
249                 </span><span class="jsdoc-var">Roo.override</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overrides</span><span class="jsdoc-syntax">);
250                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">;
251             };
252         }(),
253
254         </span><span class="jsdoc-comment">/**
255          * Adds a list of functions to the prototype of an existing class, overwriting any existing methods with the same name.
256          * Usage:&lt;pre&gt;&lt;code&gt;
257 Roo.override(MyClass, {
258     newMethod1: function(){
259         // etc.
260     },
261     newMethod2: function(foo){
262         // etc.
263     }
264 });
265  &lt;/code&gt;&lt;/pre&gt;
266          * @param {Object} origclass The class to override
267          * @param {Object} overrides The list of functions to add to origClass.  This should be specified as an object literal
268          * containing one or more methods.
269          * @method override
270          */
271         </span><span class="jsdoc-var">override </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">origclass</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overrides</span><span class="jsdoc-syntax">){
272             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">overrides</span><span class="jsdoc-syntax">){
273                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">origclass.prototype</span><span class="jsdoc-syntax">;
274                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">method </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">overrides</span><span class="jsdoc-syntax">){
275                     </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">method</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">overrides</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">method</span><span class="jsdoc-syntax">];
276                 }
277             }
278         },
279         </span><span class="jsdoc-comment">/**
280          * Creates namespaces to be used for scoping variables and classes so that they are not global.  Usage:
281          * &lt;pre&gt;&lt;code&gt;
282 Roo.namespace('Company', 'Company.data');
283 Company.Widget = function() { ... }
284 Company.data.CustomStore = function(config) { ... }
285 &lt;/code&gt;&lt;/pre&gt;
286          * @param {String} namespace1
287          * @param {String} namespace2
288          * @param {String} etc
289          * @method namespace
290          */
291         </span><span class="jsdoc-var">namespace </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
292             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">=</span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">rt</span><span class="jsdoc-syntax">;
293             </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">&lt;</span><span class="jsdoc-var">a.length</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
294                 </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;.&quot;</span><span class="jsdoc-syntax">);
295                 </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">[0];
296                 </span><span class="jsdoc-comment">/** eval:var:o */
297                 </span><span class="jsdoc-keyword">eval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'if (typeof ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' == &quot;undefined&quot;){' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' = {};} o = ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">';'</span><span class="jsdoc-syntax">);
298                 </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">=1; </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">&lt;</span><span class="jsdoc-var">d.length</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">) {
299                     </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">]]=</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">]] || {};
300                     </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">]];
301                 }
302             }
303         },
304         </span><span class="jsdoc-comment">/**
305          * Creates namespaces to be used for scoping variables and classes so that they are not global.  Usage:
306          * &lt;pre&gt;&lt;code&gt;
307 Roo.factory({ xns: Roo.data, xtype : 'Store', .....});
308 Roo.factory(conf, Roo.data);
309 &lt;/code&gt;&lt;/pre&gt;
310          * @param {String} classname
311          * @param {String} namespace (optional)
312          * @method factory
313          */
314
315         </span><span class="jsdoc-var">factory </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">)
316         {
317             </span><span class="jsdoc-comment">// no xtype, no ns or c.xns - or forced off by c.xns
318             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">c.xtype   </span><span class="jsdoc-syntax">|| (!</span><span class="jsdoc-var">ns </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">c.xns</span><span class="jsdoc-syntax">) ||  (</span><span class="jsdoc-var">c.xns </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">)) { </span><span class="jsdoc-comment">// not enough info...
319                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
320             }
321             </span><span class="jsdoc-var">ns </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">c.xns </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">c.xns </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// if c.xns is set, then use that..
322             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.constructor </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">c.xtype</span><span class="jsdoc-syntax">]) {</span><span class="jsdoc-comment">// already created...
323                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
324             }
325             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">c.xtype</span><span class="jsdoc-syntax">]) {
326                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.debug</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Roo.Factory(&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">c.xtype </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;)&quot;</span><span class="jsdoc-syntax">); }
327                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">c.xtype</span><span class="jsdoc-syntax">](</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">);
328                 </span><span class="jsdoc-var">ret.xns </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
329                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
330             }
331             </span><span class="jsdoc-var">c.xns </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// prevent recursion..
332             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
333         },
334          </span><span class="jsdoc-comment">/**
335          * Logs to console if it can.
336          *
337          * @param {String|Object} string
338          * @method log
339          */
340         </span><span class="jsdoc-var">log </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">)
341         {
342             </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">console</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) || (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">console.log</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">)) {
343                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// alerT?
344             </span><span class="jsdoc-syntax">}
345
346             </span><span class="jsdoc-var">console.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
347         },
348         </span><span class="jsdoc-comment">/**
349          * Takes an object and converts it to an encoded URL. e.g. Roo.urlEncode({foo: 1, bar: 2}); would return &quot;foo=1&amp;bar=2&quot;.  Optionally, property values can be arrays, instead of keys and the resulting string that's returned will contain a name/value pair for each array value.
350          * @param {Object} o
351          * @return {String}
352          */
353         </span><span class="jsdoc-var">urlEncode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
354             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
355                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
356             }
357             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">buf </span><span class="jsdoc-syntax">= [];
358             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">key </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
359                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ov </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.encodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">);
360                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">ov</span><span class="jsdoc-syntax">;
361                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
362                     </span><span class="jsdoc-var">buf.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;=&amp;&quot;</span><span class="jsdoc-syntax">);
363                 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">&quot;function&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">&quot;object&quot;</span><span class="jsdoc-syntax">){
364                     </span><span class="jsdoc-var">buf.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;=&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.encodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ov</span><span class="jsdoc-syntax">), </span><span class="jsdoc-string">&quot;&amp;&quot;</span><span class="jsdoc-syntax">);
365                 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ov </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">){
366                     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ov.length</span><span class="jsdoc-syntax">) {
367                             </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">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ov.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
368                                 </span><span class="jsdoc-var">buf.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;=&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.encodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ov</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] === </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">ov</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]), </span><span class="jsdoc-string">&quot;&amp;&quot;</span><span class="jsdoc-syntax">);
369                             }
370                         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
371                             </span><span class="jsdoc-var">buf.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;=&amp;&quot;</span><span class="jsdoc-syntax">);
372                         }
373                 }
374             }
375             </span><span class="jsdoc-var">buf.pop</span><span class="jsdoc-syntax">();
376             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">buf.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">);
377         },
378          </span><span class="jsdoc-comment">/**
379          * Safe version of encodeURIComponent
380          * @param {String} data 
381          * @return {String} 
382          */
383
384         </span><span class="jsdoc-var">encodeURIComponent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">)
385         {
386             </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
387                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">encodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">);
388             } </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {} </span><span class="jsdoc-comment">// should be an uri encode error.
389
390             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">){
391                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
392             }
393             </span><span class="jsdoc-comment">// http://stackoverflow.com/questions/2596483/unicode-and-uri-encoding-decoding-and-escaping-in-javascript
394             </span><span class="jsdoc-keyword">function </span><span class="jsdoc-var">nibble_to_hex</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nibble</span><span class="jsdoc-syntax">){
395                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">chars </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'0123456789ABCDEF'</span><span class="jsdoc-syntax">;
396                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">chars.charAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nibble</span><span class="jsdoc-syntax">);
397             }
398             </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.toString</span><span class="jsdoc-syntax">();
399             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">buffer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
400             </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">&lt;</span><span class="jsdoc-var">data.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
401                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.charCodeAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
402                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">();
403                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&gt; 0x10000){
404                         </span><span class="jsdoc-comment">// 4 bytes
405                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[0] = 0xF0 | ((</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0x1C0000) &gt;&gt;&gt; 18);
406                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[1] = 0x80 | ((</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0x3F000) &gt;&gt;&gt; 12);
407                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[2] = 0x80 | ((</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0xFC0) &gt;&gt;&gt; 6);
408                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[3] = 0x80 | (</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0x3F);
409                 }</span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&gt; 0x800){
410                          </span><span class="jsdoc-comment">// 3 bytes
411                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[0] = 0xE0 | ((</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0xF000) &gt;&gt;&gt; 12);
412                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[1] = 0x80 | ((</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0xFC0) &gt;&gt;&gt; 6);
413                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[2] = 0x80 | (</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0x3F);
414                 }</span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&gt; 0x80){
415                        </span><span class="jsdoc-comment">// 2 bytes
416                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[0] = 0xC0 | ((</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0x7C0) &gt;&gt;&gt; 6);
417                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[1] = 0x80 | (</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&amp; 0x3F);
418                 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
419                         </span><span class="jsdoc-comment">// 1 byte
420                     </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[0] = </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
421                 }
422                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">=0; </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">&lt;</span><span class="jsdoc-var">bs.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">++){
423                     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">];
424                     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nibble_to_hex</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">&amp; 0xF0) &gt;&gt;&gt; 4)
425                             + </span><span class="jsdoc-var">nibble_to_hex</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">&amp;0x0F);
426                     </span><span class="jsdoc-var">buffer </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'%'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">hex</span><span class="jsdoc-syntax">;
427                }
428             }
429             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">buffer</span><span class="jsdoc-syntax">;
430
431         },
432
433         </span><span class="jsdoc-comment">/**
434          * Takes an encoded URL and and converts it to an object. e.g. Roo.urlDecode(&quot;foo=1&amp;bar=2&quot;); would return {foo: 1, bar: 2} or Roo.urlDecode(&quot;foo=1&amp;bar=2&amp;bar=3&amp;bar=4&quot;, true); would return {foo: 1, bar: [2, 3, 4]}.
435          * @param {String} string
436          * @param {Boolean} overwrite (optional) Items of the same name will overwrite previous values instead of creating an an array (Defaults to false).
437          * @return {Object} A literal with members
438          */
439         </span><span class="jsdoc-var">urlDecode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">string</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overwrite</span><span class="jsdoc-syntax">){
440             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">string </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">string.length</span><span class="jsdoc-syntax">){
441                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{};
442             }
443             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">obj </span><span class="jsdoc-syntax">= {};
444             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pairs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">string.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'&amp;'</span><span class="jsdoc-syntax">);
445             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pair</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
446             </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">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pairs.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
447                 </span><span class="jsdoc-var">pair </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pairs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'='</span><span class="jsdoc-syntax">);
448                 </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">decodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pair</span><span class="jsdoc-syntax">[0]);
449                 </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">decodeURIComponent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pair</span><span class="jsdoc-syntax">[1]);
450                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">overwrite </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
451                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-string">&quot;undefined&quot;</span><span class="jsdoc-syntax">){
452                         </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
453                     }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
454                         </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">] = [</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">]];
455                         </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
456                     }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
457                         </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
458                     }
459                 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
460                     </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
461                 }
462             }
463             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">;
464         },
465
466         </span><span class="jsdoc-comment">/**
467          * Iterates an array calling the passed function with each item, stopping if your function returns false. If the
468          * passed array is not really an array, your function is called once with it.
469          * The supplied function is called with (Object item, Number index, Array allItems).
470          * @param {Array/NodeList/Mixed} array
471          * @param {Function} fn
472          * @param {Object} scope
473          */
474         </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">array</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">){
475             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">array.length </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;undefined&quot; </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">array </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
476                 </span><span class="jsdoc-var">array </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-var">array</span><span class="jsdoc-syntax">];
477             }
478             </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">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">array.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
479                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">array</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">array</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">array</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">; };
480             }
481         },
482
483         </span><span class="jsdoc-comment">// deprecated
484         </span><span class="jsdoc-var">combine </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
485             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">as </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">as.length</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= [];
486             </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">&lt; </span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
487                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">as</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
488                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">){
489                     </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">r.concat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">);
490                 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.length </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">a.substr</span><span class="jsdoc-syntax">){
491                     </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">r.concat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Array.prototype.slice.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">, 0));
492                 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
493                     </span><span class="jsdoc-var">r.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">);
494                 }
495             }
496             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
497         },
498
499         </span><span class="jsdoc-comment">/**
500          * Escapes the passed string for use in a regular expression
501          * @param {String} str
502          * @return {String}
503          */
504         </span><span class="jsdoc-var">escapeRe </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">) {
505             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">s.replace</span><span class="jsdoc-syntax">(/([.*+?^${}()|[\]\/\\])/g, </span><span class="jsdoc-string">&quot;\\$1&quot;</span><span class="jsdoc-syntax">);
506         },
507
508         </span><span class="jsdoc-comment">// internal
509         </span><span class="jsdoc-var">callback </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">delay</span><span class="jsdoc-syntax">){
510             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">cb </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;function&quot;</span><span class="jsdoc-syntax">){
511                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">delay</span><span class="jsdoc-syntax">){
512                     </span><span class="jsdoc-var">cb.defer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">delay</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">|| []);
513                 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
514                     </span><span class="jsdoc-var">cb.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">|| []);
515                 }
516             }
517         },
518
519         </span><span class="jsdoc-comment">/**
520          * Return the dom node for the passed string (id), dom node, or Roo.Element
521          * @param {String/HTMLElement/Roo.Element} el
522          * @return HTMLElement
523          */
524         </span><span class="jsdoc-var">getDom </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
525             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
526                 </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
527             }
528             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.dom </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">el.dom </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">document.getElementById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
529         },
530
531         </span><span class="jsdoc-comment">/**
532         * Shorthand for {@link Roo.ComponentMgr#get}
533         * @param {String} id
534         * @return Roo.Component
535         */
536         </span><span class="jsdoc-var">getCmp </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
537             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.ComponentMgr.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
538         },
539
540         </span><span class="jsdoc-var">num </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">defaultValue</span><span class="jsdoc-syntax">){
541             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'number'</span><span class="jsdoc-syntax">){
542                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">defaultValue</span><span class="jsdoc-syntax">;
543             }
544             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
545         },
546
547         </span><span class="jsdoc-var">destroy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
548             </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">a </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">a.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
549                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">as </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
550                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">as</span><span class="jsdoc-syntax">){
551                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">as.dom</span><span class="jsdoc-syntax">){
552                         </span><span class="jsdoc-var">as.removeAllListeners</span><span class="jsdoc-syntax">();
553                         </span><span class="jsdoc-var">as.remove</span><span class="jsdoc-syntax">();
554                         </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
555                     }
556                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">as.purgeListeners </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">){
557                         </span><span class="jsdoc-var">as.purgeListeners</span><span class="jsdoc-syntax">();
558                     }
559                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">as.destroy </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">){
560                         </span><span class="jsdoc-var">as.destroy</span><span class="jsdoc-syntax">();
561                     }
562                 }
563             }
564         },
565
566         </span><span class="jsdoc-comment">// inpired by a similar function in mootools library
567         /**
568          * Returns the type of object that is passed in. If the object passed in is null or undefined it
569          * return false otherwise it returns one of the following values:&lt;ul&gt;
570          * &lt;li&gt;&lt;b&gt;string&lt;/b&gt;: If the object passed is a string&lt;/li&gt;
571          * &lt;li&gt;&lt;b&gt;number&lt;/b&gt;: If the object passed is a number&lt;/li&gt;
572          * &lt;li&gt;&lt;b&gt;boolean&lt;/b&gt;: If the object passed is a boolean value&lt;/li&gt;
573          * &lt;li&gt;&lt;b&gt;function&lt;/b&gt;: If the object passed is a function reference&lt;/li&gt;
574          * &lt;li&gt;&lt;b&gt;object&lt;/b&gt;: If the object passed is an object&lt;/li&gt;
575          * &lt;li&gt;&lt;b&gt;array&lt;/b&gt;: If the object passed is an array&lt;/li&gt;
576          * &lt;li&gt;&lt;b&gt;regexp&lt;/b&gt;: If the object passed is a regular expression&lt;/li&gt;
577          * &lt;li&gt;&lt;b&gt;element&lt;/b&gt;: If the object passed is a DOM Element&lt;/li&gt;
578          * &lt;li&gt;&lt;b&gt;nodelist&lt;/b&gt;: If the object passed is a DOM NodeList&lt;/li&gt;
579          * &lt;li&gt;&lt;b&gt;textnode&lt;/b&gt;: If the object passed is a DOM text node and contains something other than whitespace&lt;/li&gt;
580          * &lt;li&gt;&lt;b&gt;whitespace&lt;/b&gt;: If the object passed is a DOM text node and contains only whitespace&lt;/li&gt;
581          * @param {Mixed} object
582          * @return {String}
583          */
584         </span><span class="jsdoc-var">type </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
585             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">){
586                 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
587             }
588             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.htmlElement</span><span class="jsdoc-syntax">){
589                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'element'</span><span class="jsdoc-syntax">;
590             }
591             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
592             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'object' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">o.nodeName</span><span class="jsdoc-syntax">) {
593                 </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.nodeType</span><span class="jsdoc-syntax">) {
594                     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">1: </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'element'</span><span class="jsdoc-syntax">;
595                     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">3: </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(/\S/)</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.nodeValue</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-string">'textnode' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'whitespace'</span><span class="jsdoc-syntax">;
596                 }
597             }
598             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'object' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">) {
599                 </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.constructor</span><span class="jsdoc-syntax">) {
600                     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'array'</span><span class="jsdoc-syntax">;
601                     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">RegExp</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'regexp'</span><span class="jsdoc-syntax">;
602                 }
603                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">o.length </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'number' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">o.item </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">) {
604                     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'nodelist'</span><span class="jsdoc-syntax">;
605                 }
606             }
607             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">;
608         },
609
610         </span><span class="jsdoc-comment">/**
611          * Returns true if the passed value is null, undefined or an empty string (optional).
612          * @param {Mixed} value The value to test
613          * @param {Boolean} allowBlank (optional) Pass true if an empty string is not considered empty
614          * @return {Boolean}
615          */
616         </span><span class="jsdoc-var">isEmpty </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">allowBlank</span><span class="jsdoc-syntax">){
617             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">null </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">|| (!</span><span class="jsdoc-var">allowBlank </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
618         },
619
620         </span><span class="jsdoc-comment">/** @type Boolean */
621         </span><span class="jsdoc-var">isOpera </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isOpera</span><span class="jsdoc-syntax">,
622         </span><span class="jsdoc-comment">/** @type Boolean */
623         </span><span class="jsdoc-var">isSafari </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isSafari</span><span class="jsdoc-syntax">,
624         </span><span class="jsdoc-comment">/** @type Boolean */
625         </span><span class="jsdoc-var">isFirefox </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isFirefox</span><span class="jsdoc-syntax">,
626         </span><span class="jsdoc-comment">/** @type Boolean */
627         </span><span class="jsdoc-var">isIE </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIE</span><span class="jsdoc-syntax">,
628         </span><span class="jsdoc-comment">/** @type Boolean */
629         </span><span class="jsdoc-var">isIE7 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIE7</span><span class="jsdoc-syntax">,
630         </span><span class="jsdoc-comment">/** @type Boolean */
631         </span><span class="jsdoc-var">isIE11 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIE11</span><span class="jsdoc-syntax">,
632         </span><span class="jsdoc-comment">/** @type Boolean */
633         </span><span class="jsdoc-var">isEdge </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isEdge</span><span class="jsdoc-syntax">,
634         </span><span class="jsdoc-comment">/** @type Boolean */
635         </span><span class="jsdoc-var">isGecko </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isGecko</span><span class="jsdoc-syntax">,
636         </span><span class="jsdoc-comment">/** @type Boolean */
637         </span><span class="jsdoc-var">isBorderBox </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isBorderBox</span><span class="jsdoc-syntax">,
638         </span><span class="jsdoc-comment">/** @type Boolean */
639         </span><span class="jsdoc-var">isWindows </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isWindows</span><span class="jsdoc-syntax">,
640         </span><span class="jsdoc-comment">/** @type Boolean */
641         </span><span class="jsdoc-var">isLinux </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isLinux</span><span class="jsdoc-syntax">,
642         </span><span class="jsdoc-comment">/** @type Boolean */
643         </span><span class="jsdoc-var">isMac </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isMac</span><span class="jsdoc-syntax">,
644         </span><span class="jsdoc-comment">/** @type Boolean */
645         </span><span class="jsdoc-var">isIOS </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIOS</span><span class="jsdoc-syntax">,
646         </span><span class="jsdoc-comment">/** @type Boolean */
647         </span><span class="jsdoc-var">isAndroid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isAndroid</span><span class="jsdoc-syntax">,
648         </span><span class="jsdoc-comment">/** @type Boolean */
649         </span><span class="jsdoc-var">isTouch </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isTouch</span><span class="jsdoc-syntax">,
650
651         </span><span class="jsdoc-comment">/**
652          * By default, Ext intelligently decides whether floating elements should be shimmed. If you are using flash,
653          * you may want to set this to true.
654          * @type Boolean
655          */
656         </span><span class="jsdoc-var">useShims </span><span class="jsdoc-syntax">: ((</span><span class="jsdoc-var">isIE </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">isIE7</span><span class="jsdoc-syntax">) || (</span><span class="jsdoc-var">isGecko </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">isMac</span><span class="jsdoc-syntax">)),
657
658
659
660         </span><span class="jsdoc-comment">/**
661          * Selects a single element as a Roo Element
662          * This is about as close as you can get to jQuery's $('do crazy stuff')
663          * @param {String} selector The selector/xpath query
664          * @param {Node} root (optional) The start of the query (defaults to document).
665          * @return {Roo.Element}
666          */
667         </span><span class="jsdoc-var">selectNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selector</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">root</span><span class="jsdoc-syntax">)
668         {
669             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.DomQuery.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selector</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">root</span><span class="jsdoc-syntax">);
670             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Element</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
671         }
672
673     });
674
675
676 })();
677
678 </span><span class="jsdoc-var">Roo.namespace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Roo&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.util&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.grid&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.dd&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.tree&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.data&quot;</span><span class="jsdoc-syntax">,
679                 </span><span class="jsdoc-string">&quot;Roo.form&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.menu&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.state&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.lib&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.layout&quot;</span><span class="jsdoc-syntax">,
680                 </span><span class="jsdoc-string">&quot;Roo.app&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.ux&quot;</span><span class="jsdoc-syntax">,
681                 </span><span class="jsdoc-string">&quot;Roo.bootstrap&quot;</span><span class="jsdoc-syntax">,
682                 </span><span class="jsdoc-string">&quot;Roo.bootstrap.dash&quot;</span><span class="jsdoc-syntax">);
683 </span></code></body></html>