Fix #5654 - roojspacker - get it working as a doc tool...
[roojs1] / docs.old / symbols / src / Roo.js.html
diff --git a/docs.old/symbols/src/Roo.js.html b/docs.old/symbols/src/Roo.js.html
new file mode 100644 (file)
index 0000000..2034154
--- /dev/null
@@ -0,0 +1,683 @@
+<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">/*
+ * Based on:
+ * Ext JS Library 1.1.1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ *
+ * Originally Released Under LGPL - original licence link has changed is not relivant.
+ *
+ * Fork - LGPL
+ * &lt;script type=&quot;text/javascript&quot;&gt;
+ */
+
+
+
+
+// for old browsers
+</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">];
+
+</span><span class="jsdoc-comment">/**
+ * @class Roo
+ * Roo core utilities and functions.
+ * @singleton
+ */
+</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">Roo </span><span class="jsdoc-syntax">= {}; 
+</span><span class="jsdoc-comment">/**
+ * Copies all the properties of config to obj.
+ * @param {Object} obj The receiver of the properties
+ * @param {Object} config The source of the properties
+ * @param {Object} defaults A different object that will also be applied for default values
+ * @return {Object} returns obj
+ * @member Roo apply
+ */
+
+</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">){
+    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">defaults</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-comment">// no &quot;this&quot; reference for friendly out of scope calls
+        </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">);
+    }
+    </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">){
+        </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">){
+            </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">];
+        }
+    }
+    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
+};
+
+
+(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">idSeed </span><span class="jsdoc-syntax">= 0;
+    </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">();
+
+    </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">,
+        </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,
+        </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">),
+        </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,
+        </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,
+        </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,
+        </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">),
+        </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,
+        </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,
+        </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">,
+        </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),
+        </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),
+        </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),
+        </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,
+        </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">),
+        </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">),
+        </span><span class="jsdoc-var">isTouch </span><span class="jsdoc-syntax">=  (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+            </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
+                </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) {
+                    </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">() {
+                        </span><span class="jsdoc-var">Roo.isTouch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+                        </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">);
+                    });
+                    </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// no touch on chrome!?
+                </span><span class="jsdoc-syntax">}
+                </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">);  
+                </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;  
+            } </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-keyword">return false</span><span class="jsdoc-syntax">;  
+            } 
+            
+        })();
+    </span><span class="jsdoc-comment">// remove css image flicker
+       </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">){
+        </span><span class="jsdoc-keyword">try</span><span class="jsdoc-syntax">{
+            </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">);
+        }</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-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo</span><span class="jsdoc-syntax">, {
+        </span><span class="jsdoc-comment">/**
+         * True if the browser is in strict mode
+         * @type Boolean
+         */
+        </span><span class="jsdoc-var">isStrict </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isStrict</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/**
+         * True if the page is running over SSL
+         * @type Boolean
+         */
+        </span><span class="jsdoc-var">isSecure </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isSecure</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/**
+         * True when the document is fully initialized and ready for action
+         * @type Boolean
+         */
+        </span><span class="jsdoc-var">isReady </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/**
+         * Turn on debugging output (currently only the factory uses this)
+         * @type Boolean
+         */
+        
+        </span><span class="jsdoc-var">debug</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
+        </span><span class="jsdoc-comment">/**
+         * True to automatically uncache orphaned Roo.Elements periodically (defaults to true)
+         * @type Boolean
+         */
+        </span><span class="jsdoc-var">enableGarbageCollector </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+
+        </span><span class="jsdoc-comment">/**
+         * True to automatically purge event listeners after uncaching an element (defaults to false).
+         * Note: this only happens if enableGarbageCollector is true.
+         * @type Boolean
+         */
+        </span><span class="jsdoc-var">enableListenerCollection</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
+        </span><span class="jsdoc-comment">/**
+         * URL to a blank file used by Roo when in secure mode for iframe src and onReady src to prevent
+         * the IE insecure content warning (defaults to javascript:false).
+         * @type String
+         */
+        </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">,
+
+        </span><span class="jsdoc-comment">/**
+         * URL to a 1x1 transparent gif image used by Roo to create inline icons with CSS background images. (Defaults to
+         * &quot;http://Roojs.com/s.gif&quot; and you should change this to a URL on your server).
+         * @type String
+         */
+        </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">,
+
+        </span><span class="jsdoc-var">emptyFn </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){},
+        
+        </span><span class="jsdoc-comment">/**
+         * Copies all the properties of config to obj if they don't already exist.
+         * @param {Object} obj The receiver of the properties
+         * @param {Object} config The source of the properties
+         * @return {Object} returns obj
+         */
+        </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">){
+            </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">){
+                </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">){
+                    </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">]; }
+                }
+            }
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Applies event listeners to elements by selectors when the document is ready.
+         * The event name is specified with an @ suffix.
+&lt;pre&gt;&lt;code&gt;
+Roo.addBehaviors({
+   // add a listener for click on all anchors in element with id foo
+   '#foo a@click' : function(e, t){
+       // do something
+   },
+
+   // add the same listener to multiple selectors (separated by comma BEFORE the @)
+   '#foo a, #bar span.some-class@mouseover' : function(){
+       // do something
+   }
+});
+&lt;/code&gt;&lt;/pre&gt;
+         * @param {Object} obj The list of behaviors to apply
+         */
+        </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">){
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.isReady</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">Roo.onReady</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+                    </span><span class="jsdoc-var">Roo.addBehaviors</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
+                });
+                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+            }
+            </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
+            </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">){
+                </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">);
+                </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
+                    </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];
+                    </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">]){
+                        </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">);
+                    }
+                    </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">]);
+                }
+            }
+            </span><span class="jsdoc-var">cache </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Generates unique ids. If the element already has an id, it is unchanged
+         * @param {String/HTMLElement/Element} el (optional) The element to generate an id for
+         * @param {String} prefix (optional) Id prefix (defaults &quot;Roo-gen&quot;)
+         * @return {String} The generated Id.
+         */
+        </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">){
+            </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">;
+            </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">);
+            </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">);
+            </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">;
+        },
+         
+       
+        </span><span class="jsdoc-comment">/**
+         * Extends one class with another class and optionally overrides members with the passed literal. This class
+         * also adds the function &quot;override()&quot; to the class that can be used to override
+         * members on an instance.
+         * @param {Object} subclass The class inheriting the functionality
+         * @param {Object} superclass The class being extended
+         * @param {Object} overrides (optional) A literal with members
+         * @method extend
+         */
+        </span><span class="jsdoc-var">extend </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+            </span><span class="jsdoc-comment">// inline overrides
+            </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">){
+                </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">){
+                    </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">];
+                }
+            };
+            </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">){
+                </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..
+                    </span><span class="jsdoc-var">overrides </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sp</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-var">sp </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">;
+                    </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">);};
+                }
+                </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">;
+                </span><span class="jsdoc-var">F.prototype </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">spp</span><span class="jsdoc-syntax">;
+                </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">();
+                </span><span class="jsdoc-var">sbp.constructor</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-var">sb.superclass</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">spp</span><span class="jsdoc-syntax">;
+                
+                </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">){
+                    </span><span class="jsdoc-var">spp.constructor</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">sp</span><span class="jsdoc-syntax">;
+                   
+                }
+                
+                </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">){
+                    </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">);
+                };
+                </span><span class="jsdoc-var">sbp.override </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">io</span><span class="jsdoc-syntax">;
+                </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">);
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">sb</span><span class="jsdoc-syntax">;
+            };
+        }(),
+
+        </span><span class="jsdoc-comment">/**
+         * Adds a list of functions to the prototype of an existing class, overwriting any existing methods with the same name.
+         * Usage:&lt;pre&gt;&lt;code&gt;
+Roo.override(MyClass, {
+    newMethod1: function(){
+        // etc.
+    },
+    newMethod2: function(foo){
+        // etc.
+    }
+});
+ &lt;/code&gt;&lt;/pre&gt;
+         * @param {Object} origclass The class to override
+         * @param {Object} overrides The list of functions to add to origClass.  This should be specified as an object literal
+         * containing one or more methods.
+         * @method override
+         */
+        </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">){
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">overrides</span><span class="jsdoc-syntax">){
+                </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">;
+                </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">){
+                    </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">];
+                }
+            }
+        },
+        </span><span class="jsdoc-comment">/**
+         * Creates namespaces to be used for scoping variables and classes so that they are not global.  Usage:
+         * &lt;pre&gt;&lt;code&gt;
+Roo.namespace('Company', 'Company.data');
+Company.Widget = function() { ... }
+Company.data.CustomStore = function(config) { ... }
+&lt;/code&gt;&lt;/pre&gt;
+         * @param {String} namespace1
+         * @param {String} namespace2
+         * @param {String} etc
+         * @method namespace
+         */
+        </span><span class="jsdoc-var">namespace </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+            </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">;
+            </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">) {
+                </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">);
+                </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">[0];
+                </span><span class="jsdoc-comment">/** eval:var:o */
+                </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">);
+                </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">) {
+                    </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">]] || {};
+                    </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">]];
+                }
+            }
+        },
+        </span><span class="jsdoc-comment">/**
+         * Creates namespaces to be used for scoping variables and classes so that they are not global.  Usage:
+         * &lt;pre&gt;&lt;code&gt;
+Roo.factory({ xns: Roo.data, xtype : 'Store', .....});
+Roo.factory(conf, Roo.data);
+&lt;/code&gt;&lt;/pre&gt;
+         * @param {String} classname
+         * @param {String} namespace (optional)
+         * @method factory
+         */
+         
+        </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">)
+        {
+            </span><span class="jsdoc-comment">// no xtype, no ns or c.xns - or forced off by c.xns
+            </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...
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
+            }
+            </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..
+            </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...
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
+            }
+            </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">]) {
+                </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">); }
+                </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">);
+                </span><span class="jsdoc-var">ret.xns </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">ret</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">// prevent recursion..
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
+        },
+         </span><span class="jsdoc-comment">/**
+         * Logs to console if it can.
+         *
+         * @param {String|Object} string
+         * @method log
+         */
+        </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">)
+        {
+            </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">)) {
+                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// alerT?
+            </span><span class="jsdoc-syntax">}
+            </span><span class="jsdoc-var">console.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
+            
+        },
+        </span><span class="jsdoc-comment">/**
+         * 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.
+         * @param {Object} o
+         * @return {String}
+         */
+        </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">){
+            </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-keyword">return </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">buf </span><span class="jsdoc-syntax">= [];
+            </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">){
+                </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">);
+                </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">;
+                </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">){
+                    </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">);
+                }</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">){
+                    </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">);
+                }</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">){
+                    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ov.length</span><span class="jsdoc-syntax">) {
+                           </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">++) {
+                               </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">);
+                           }
+                       } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                           </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">);
+                       }
+                }
+            }
+            </span><span class="jsdoc-var">buf.pop</span><span class="jsdoc-syntax">();
+            </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">);
+        },
+         </span><span class="jsdoc-comment">/**
+         * Safe version of encodeURIComponent
+         * @param {String} data 
+         * @return {String} 
+         */
+        
+        </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">)
+        {
+            </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
+                </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">);
+            } </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.
+            
+            </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">){
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-comment">// http://stackoverflow.com/questions/2596483/unicode-and-uri-encoding-decoding-and-escaping-in-javascript
+            </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">){
+                </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">;
+                </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">);
+            }
+            </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.toString</span><span class="jsdoc-syntax">();
+            </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">;
+            </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">++){
+                </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">);
+                </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">();
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&gt; 0x10000){
+                        </span><span class="jsdoc-comment">// 4 bytes
+                    </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);
+                    </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);
+                    </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);
+                    </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);
+                }</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){
+                         </span><span class="jsdoc-comment">// 3 bytes
+                    </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);
+                    </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);
+                    </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);
+                }</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){
+                       </span><span class="jsdoc-comment">// 2 bytes
+                    </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);
+                    </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);
+                }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                        </span><span class="jsdoc-comment">// 1 byte
+                    </span><span class="jsdoc-var">bs</span><span class="jsdoc-syntax">[0] = </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
+                }
+                </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">++){
+                    </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">];
+                    </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) 
+                            + </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);
+                    </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">;
+               }
+            }
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">buffer</span><span class="jsdoc-syntax">;    
+             
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * 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]}.
+         * @param {String} string
+         * @param {Boolean} overwrite (optional) Items of the same name will overwrite previous values instead of creating an an array (Defaults to false).
+         * @return {Object} A literal with members
+         */
+        </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">){
+            </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">){
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{};
+            }
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">obj </span><span class="jsdoc-syntax">= {};
+            </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">);
+            </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">;
+            </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">++){
+                </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">);
+                </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]);
+                </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]);
+                </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">){
+                    </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">){
+                        </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">;
+                    }</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">){
+                        </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">]];
+                        </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">);
+                    }</span><span class="jsdoc-keyword">else</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">]</span><span class="jsdoc-var">.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
+                    }
+                }</span><span class="jsdoc-keyword">else</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">] = </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
+                }
+            }
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Iterates an array calling the passed function with each item, stopping if your function returns false. If the
+         * passed array is not really an array, your function is called once with it.
+         * The supplied function is called with (Object item, Number index, Array allItems).
+         * @param {Array/NodeList/Mixed} array
+         * @param {Function} fn
+         * @param {Object} scope
+         */
+        </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">){
+            </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">){
+                </span><span class="jsdoc-var">array </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-var">array</span><span class="jsdoc-syntax">];
+            }
+            </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">++){
+                </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">; };
+            }
+        },
+
+        </span><span class="jsdoc-comment">// deprecated
+        </span><span class="jsdoc-var">combine </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+            </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">= [];
+            </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">++){
+                </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">];
+                </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">){
+                    </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">);
+                }</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">){
+                    </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));
+                }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                    </span><span class="jsdoc-var">r.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">);
+                }
+            }
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Escapes the passed string for use in a regular expression
+         * @param {String} str
+         * @return {String}
+         */
+        </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">) {
+            </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">);
+        },
+
+        </span><span class="jsdoc-comment">// internal
+        </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">){
+            </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">){
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">delay</span><span class="jsdoc-syntax">){
+                    </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">|| []);
+                }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                    </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">|| []);
+                }
+            }
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Return the dom node for the passed string (id), dom node, or Roo.Element
+         * @param {String/HTMLElement/Roo.Element} el
+         * @return HTMLElement
+         */
+        </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">){
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
+            }
+            </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">);
+        },
+
+        </span><span class="jsdoc-comment">/**
+        * Shorthand for {@link Roo.ComponentMgr#get}
+        * @param {String} id
+        * @return Roo.Component
+        */
+        </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">){
+            </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">);
+        },
+         
+        </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">){
+            </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">){
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">defaultValue</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-var">destroy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+            </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">++) {
+                </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">];
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">as</span><span class="jsdoc-syntax">){
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">as.dom</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-var">as.removeAllListeners</span><span class="jsdoc-syntax">();
+                        </span><span class="jsdoc-var">as.remove</span><span class="jsdoc-syntax">();
+                        </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+                    }
+                    </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">){
+                        </span><span class="jsdoc-var">as.purgeListeners</span><span class="jsdoc-syntax">();
+                    }
+                    </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">){
+                        </span><span class="jsdoc-var">as.destroy</span><span class="jsdoc-syntax">();
+                    }
+                }
+            }
+        },
+
+        </span><span class="jsdoc-comment">// inpired by a similar function in mootools library
+        /**
+         * Returns the type of object that is passed in. If the object passed in is null or undefined it
+         * return false otherwise it returns one of the following values:&lt;ul&gt;
+         * &lt;li&gt;&lt;b&gt;string&lt;/b&gt;: If the object passed is a string&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;number&lt;/b&gt;: If the object passed is a number&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;boolean&lt;/b&gt;: If the object passed is a boolean value&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;function&lt;/b&gt;: If the object passed is a function reference&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;object&lt;/b&gt;: If the object passed is an object&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;array&lt;/b&gt;: If the object passed is an array&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;regexp&lt;/b&gt;: If the object passed is a regular expression&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;element&lt;/b&gt;: If the object passed is a DOM Element&lt;/li&gt;
+         * &lt;li&gt;&lt;b&gt;nodelist&lt;/b&gt;: If the object passed is a DOM NodeList&lt;/li&gt;
+         * &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;
+         * &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;
+         * @param {Mixed} object
+         * @return {String}
+         */
+        </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">){
+            </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">){
+                </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.htmlElement</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'element'</span><span class="jsdoc-syntax">;
+            }
+            </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">;
+            </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">) {
+                </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.nodeType</span><span class="jsdoc-syntax">) {
+                    </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">;
+                    </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">;
+                }
+            }
+            </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">) {
+                </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.constructor</span><span class="jsdoc-syntax">) {
+                    </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">;
+                    </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">;
+                }
+                </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">) {
+                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'nodelist'</span><span class="jsdoc-syntax">;
+                }
+            }
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Returns true if the passed value is null, undefined or an empty string (optional).
+         * @param {Mixed} value The value to test
+         * @param {Boolean} allowBlank (optional) Pass true if an empty string is not considered empty
+         * @return {Boolean}
+         */
+        </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">){
+            </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">);
+        },
+        
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isOpera </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isOpera</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isSafari </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isSafari</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isFirefox </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isFirefox</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isIE </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIE</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isIE7 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIE7</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isIE11 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIE11</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isEdge </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isEdge</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isGecko </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isGecko</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isBorderBox </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isBorderBox</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isWindows </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isWindows</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isLinux </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isLinux</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isMac </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isMac</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isIOS </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isIOS</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isAndroid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isAndroid</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** @type Boolean */
+        </span><span class="jsdoc-var">isTouch </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">isTouch</span><span class="jsdoc-syntax">,
+
+        </span><span class="jsdoc-comment">/**
+         * By default, Ext intelligently decides whether floating elements should be shimmed. If you are using flash,
+         * you may want to set this to true.
+         * @type Boolean
+         */
+        </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">)),
+        
+        
+                
+        </span><span class="jsdoc-comment">/**
+         * Selects a single element as a Roo Element
+         * This is about as close as you can get to jQuery's $('do crazy stuff')
+         * @param {String} selector The selector/xpath query
+         * @param {Node} root (optional) The start of the query (defaults to document).
+         * @return {Roo.Element}
+         */
+        </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">) 
+        {
+            </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">);
+            </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">);
+        }
+        
+    });
+
+
+})();
+
+</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">,
+                </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">,
+                </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">,
+                </span><span class="jsdoc-string">&quot;Roo.bootstrap&quot;</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-string">&quot;Roo.bootstrap.dash&quot;</span><span class="jsdoc-syntax">);
+</span></code></body></html>
\ No newline at end of file