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