[!!!][TASK] Remove flash and chart from ExtJS 78/42878/5
authorAlexander Opitz <opitz.alexander@googlemail.com>
Wed, 26 Aug 2015 07:48:19 +0000 (09:48 +0200)
committerMarkus Klein <markus.klein@typo3.org>
Thu, 27 Aug 2015 08:31:10 +0000 (10:31 +0200)
As we don't use the flash and chart module from ExtJS we remove it to
reduce loading time of backend which is needed to initialize flash on
every module page.

Resolves: #66190
Releases: master
Change-Id: I822887d5d56225abf0498965dd7cbf64220077a2
Reviewed-on: http://review.typo3.org/42878
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Daniel Maier <dani-maier@gmx.de>
Tested-by: Daniel Maier <dani-maier@gmx.de>
Reviewed-by: Josef Glatz <jousch@gmail.com>
Tested-by: Josef Glatz <jousch@gmail.com>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/core/Documentation/Changelog/master/Breaking-66190-RemoveFlashAndChartFromExtJS.rst [new file with mode: 0644]
typo3/sysext/core/Resources/Public/JavaScript/Contrib/extjs/ext-all-debug.js
typo3/sysext/core/Resources/Public/JavaScript/Contrib/extjs/ext-all.js
typo3/sysext/core/Resources/Public/JavaScript/Contrib/extjs/ext.jsb2

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-66190-RemoveFlashAndChartFromExtJS.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-66190-RemoveFlashAndChartFromExtJS.rst
new file mode 100644 (file)
index 0000000..dfa7227
--- /dev/null
@@ -0,0 +1,26 @@
+====================================================
+Breaking: #66190 - Remove flash and chart from ExtJS
+====================================================
+
+Description
+===========
+
+The flash and chart module is removed from ExtJS. As we will remove the ExtJS components this is a first step to reduce it.
+
+
+Impact
+======
+
+Extensions which use the flash and chart module from ExtJS will not work anymore.
+
+
+Affected Installations
+======================
+
+Installations that use flash or chart module of ExtJS.
+
+
+Migration
+=========
+
+Don't use cores ExtJS anymore, as we migrate away from it. Use other JS frameworks which implement such functionality for you.
\ No newline at end of file
index 616dae1..3ec6698 100644 (file)
@@ -26,7 +26,7 @@ var EXTUTIL = Ext.util,
     FALSE = false;
 
 EXTUTIL.Observable = function(){
-    
+
     var me = this, e = me.events;
     if(me.listeners){
         me.on(me.listeners);
@@ -36,10 +36,10 @@ EXTUTIL.Observable = function(){
 };
 
 EXTUTIL.Observable.prototype = {
-    
+
     filterOptRe : /^(?:scope|delay|buffer|single)$/,
 
-    
+
     fireEvent : function(){
         var a = Array.prototype.slice.call(arguments, 0),
             ename = a[0].toLowerCase(),
@@ -76,13 +76,13 @@ EXTUTIL.Observable.prototype = {
         return ret;
     },
 
-    
+
     addListener : function(eventName, fn, scope, o){
         var me = this,
             e,
             oe,
             ce;
-            
+
         if (typeof eventName == 'object') {
             o = eventName;
             for (e in o) {
@@ -101,7 +101,7 @@ EXTUTIL.Observable.prototype = {
         }
     },
 
-    
+
     removeListener : function(eventName, fn, scope){
         var ce = this.events[eventName.toLowerCase()];
         if (typeof ce == 'object') {
@@ -109,7 +109,7 @@ EXTUTIL.Observable.prototype = {
         }
     },
 
-    
+
     purgeListeners : function(){
         var events = this.events,
             evt,
@@ -122,7 +122,7 @@ EXTUTIL.Observable.prototype = {
         }
     },
 
-    
+
     addEvents : function(o){
         var me = this;
         me.events = me.events || {};
@@ -137,13 +137,13 @@ EXTUTIL.Observable.prototype = {
         }
     },
 
-    
+
     hasListener : function(eventName){
         var e = this.events[eventName.toLowerCase()];
         return typeof e == 'object' && e.listeners.length > 0;
     },
 
-    
+
     suspendEvents : function(queueSuspended){
         this.eventsSuspended = TRUE;
         if(queueSuspended && !this.eventQueue){
@@ -151,7 +151,7 @@ EXTUTIL.Observable.prototype = {
         }
     },
 
-    
+
     resumeEvents : function(){
         var me = this,
             queued = me.eventQueue || [];
@@ -224,7 +224,7 @@ EXTUTIL.Event.prototype = {
         scope = scope || me.obj;
         if(!me.isListening(fn, scope)){
             l = me.createListener(fn, scope, options);
-            if(me.firing){ 
+            if(me.firing){
                 me.listeners = me.listeners.slice(0);
             }
             me.listeners.push(l);
@@ -304,7 +304,7 @@ EXTUTIL.Event.prototype = {
         return ret;
     },
 
-    
+
     clearListeners : function(){
         var me = this,
             l = me.listeners,
@@ -347,7 +347,7 @@ Ext.DomHelper = function(){
         cssRe = /([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,
         endRe = /end/i,
         pub,
-        
+
         afterbegin = 'afterbegin',
         afterend = 'afterend',
         beforebegin = 'beforebegin',
@@ -359,13 +359,13 @@ Ext.DomHelper = function(){
         trs = tbs + '<tr>',
         tre = '</tr>'+tbe;
 
-    
+
     function doInsert(el, o, returnElement, pos, sibling, append){
         var newNode = pub.insertHtml(pos, Ext.getDom(el), createHtml(o));
         return returnElement ? Ext.get(newNode, true) : newNode;
     }
 
-    
+
     function createHtml(o){
         var b = '',
             attr,
@@ -397,7 +397,7 @@ Ext.DomHelper = function(){
                     }
                 }
             };
-            
+
             if (emptyTags.test(o.tag)) {
                 b += '/>';
             } else {
@@ -434,7 +434,7 @@ Ext.DomHelper = function(){
         return el;
     }
 
-    
+
     function insertIntoTable(tag, where, el, html) {
         var node,
             before;
@@ -465,31 +465,31 @@ Ext.DomHelper = function(){
         return node;
     }
 
-       
+
     function createContextualFragment(html){
         var div = document.createElement("div"),
             fragment = document.createDocumentFragment(),
             i = 0,
             length, childNodes;
-        
+
         div.innerHTML = html;
         childNodes = div.childNodes;
         length = childNodes.length;
-        
+
         for (; i < length; i++) {
             fragment.appendChild(childNodes[i].cloneNode(true));
         }
-        
+
         return fragment;
     }
-    
+
     pub = {
-        
+
         markup : function(o){
             return createHtml(o);
         },
 
-        
+
         applyStyles : function(el, styles){
             if (styles) {
                 var matches;
@@ -499,7 +499,7 @@ Ext.DomHelper = function(){
                     styles = styles.call();
                 }
                 if (typeof styles == "string") {
-                    
+
                     cssRe.lastIndex = 0;
                     while ((matches = cssRe.exec(styles))) {
                         el.setStyle(matches[1], matches[2]);
@@ -509,7 +509,7 @@ Ext.DomHelper = function(){
                 }
             }
         },
-        
+
         insertHtml : function(where, el, html){
             var hash = {},
                 hashVal,
@@ -520,7 +520,7 @@ Ext.DomHelper = function(){
                 rs;
 
             where = where.toLowerCase();
-            
+
             hash[beforebegin] = ['BeforeBegin', 'previousSibling'];
             hash[afterend] = ['AfterEnd', 'nextSibling'];
 
@@ -528,7 +528,7 @@ Ext.DomHelper = function(){
                 if(tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))){
                     return rs;
                 }
-                
+
                 hash[afterbegin] = ['AfterBegin', 'firstChild'];
                 hash[beforeend] = ['BeforeEnd', 'lastChild'];
                 if ((hashVal = hash[where])) {
@@ -572,27 +572,27 @@ Ext.DomHelper = function(){
             throw 'Illegal insertion point -> "' + where + '"';
         },
 
-        
+
         insertBefore : function(el, o, returnElement){
             return doInsert(el, o, returnElement, beforebegin);
         },
 
-        
+
         insertAfter : function(el, o, returnElement){
             return doInsert(el, o, returnElement, afterend, 'nextSibling');
         },
 
-        
+
         insertFirst : function(el, o, returnElement){
             return doInsert(el, o, returnElement, afterbegin, 'firstChild');
         },
 
-        
+
         append : function(el, o, returnElement){
             return doInsert(el, o, returnElement, beforeend, '', true);
         },
 
-        
+
         overwrite : function(el, o, returnElement){
             el = Ext.getDom(el);
             el.innerHTML = createHtml(o);
@@ -624,19 +624,19 @@ Ext.Template = function(html){
         html = buf.join('');
     }
 
-    
+
     me.html = html;
-    
+
     if (me.compiled) {
         me.compile();
     }
 };
 Ext.Template.prototype = {
-    
+
     re : /\{([\w\-]+)\}/g,
-    
 
-    
+
+
     applyTemplate : function(values){
         var me = this;
 
@@ -647,7 +647,7 @@ Ext.Template.prototype = {
                 });
     },
 
-    
+
     set : function(html, compile){
         var me = this;
         me.html = html;
@@ -655,7 +655,7 @@ Ext.Template.prototype = {
         return compile ? me.compile() : me;
     },
 
-    
+
     compile : function(){
         var me = this,
             sep = Ext.isGecko ? "+" : ",";
@@ -671,22 +671,22 @@ Ext.Template.prototype = {
         return me;
     },
 
-    
+
     insertFirst: function(el, values, returnElement){
         return this.doInsert('afterBegin', el, values, returnElement);
     },
 
-    
+
     insertBefore: function(el, values, returnElement){
         return this.doInsert('beforeBegin', el, values, returnElement);
     },
 
-    
+
     insertAfter : function(el, values, returnElement){
         return this.doInsert('afterEnd', el, values, returnElement);
     },
 
-    
+
     append : function(el, values, returnElement){
         return this.doInsert('beforeEnd', el, values, returnElement);
     },
@@ -697,7 +697,7 @@ Ext.Template.prototype = {
         return returnEl ? Ext.get(newNode, true) : newNode;
     },
 
-    
+
     overwrite : function(el, values, returnElement){
         el = Ext.getDom(el);
         el.innerHTML = this.applyTemplate(values);
@@ -715,28 +715,28 @@ Ext.Template.from = function(el, config){
 
 
 Ext.DomQuery = function(){
-    var cache = {}, 
-       simpleCache = {}, 
+    var cache = {},
+       simpleCache = {},
        valueCache = {},
        nonSpace = /\S/,
        trimRe = /^\s+|\s+$/g,
        tplRe = /\{(\d+)\}/g,
        modeRe = /^(\s?[\/>+~]\s?|\s|$)/,
        tagTokenRe = /^(#)?([\w\-\*]+)/,
-       nthRe = /(\d*)n\+?(\d*)/, 
+       nthRe = /(\d*)n\+?(\d*)/,
        nthRe2 = /\D/,
-       
-       
-       
+
+
+
        isIE = window.ActiveXObject ? true : false,
        key = 30803;
-    
-    
-    
-    eval("var batch = 30803;");        
 
-    
-    
+
+
+    eval("var batch = 30803;");
+
+
+
     function child(parent, index){
         var i = 0,
             n = parent.firstChild;
@@ -751,31 +751,31 @@ Ext.DomQuery = function(){
         return null;
     }
 
-    
-    function next(n){  
+
+    function next(n){
         while((n = n.nextSibling) && n.nodeType != 1);
         return n;
     }
 
-    
+
     function prev(n){
         while((n = n.previousSibling) && n.nodeType != 1);
         return n;
     }
 
-    
-    
+
+
     function children(parent){
         var n = parent.firstChild,
            nodeIndex = -1,
            nextNode;
        while(n){
            nextNode = n.nextSibling;
-           
+
            if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){
                parent.removeChild(n);
            }else{
-               
+
                n.nodeIndex = ++nodeIndex;
            }
            n = nextNode;
@@ -784,8 +784,8 @@ Ext.DomQuery = function(){
     }
 
 
-    
-    
+
+
     function byClassName(nodeSet, cls){
         if(!cls){
             return nodeSet;
@@ -800,7 +800,7 @@ Ext.DomQuery = function(){
     };
 
     function attrValue(n, attr){
-       
+
         if(!n.tagName && typeof n.length != "undefined"){
             n = n[0];
         }
@@ -819,22 +819,22 @@ Ext.DomQuery = function(){
     };
 
 
-    
-    
-    
+
+
+
     function getNodes(ns, mode, tagName){
         var result = [], ri = -1, cs;
         if(!ns){
             return result;
         }
         tagName = tagName || "*";
-       
+
         if(typeof ns.getElementsByTagName != "undefined"){
             ns = [ns];
         }
-       
-       
-       
+
+
+
         if(!mode){
             for(var i = 0, ni; ni = ns[i]; i++){
                 cs = ni.getElementsByTagName(tagName);
@@ -842,8 +842,8 @@ Ext.DomQuery = function(){
                     result[++ri] = ci;
                 }
             }
-       
-       
+
+
         } else if(mode == "/" || mode == ">"){
             var utag = tagName.toUpperCase();
             for(var i = 0, ni, cn; ni = ns[i]; i++){
@@ -854,8 +854,8 @@ Ext.DomQuery = function(){
                     }
                 }
             }
-       
-       
+
+
         }else if(mode == "+"){
             var utag = tagName.toUpperCase();
             for(var i = 0, n; n = ns[i]; i++){
@@ -864,8 +864,8 @@ Ext.DomQuery = function(){
                     result[++ri] = n;
                 }
             }
-       
-       
+
+
         }else if(mode == "~"){
             var utag = tagName.toUpperCase();
             for(var i = 0, n; n = ns[i]; i++){
@@ -923,29 +923,29 @@ Ext.DomQuery = function(){
         return result;
     }
 
-    
-    
+
+
     function byAttribute(cs, attr, value, op, custom){
-        var result = [], 
-            ri = -1, 
-            useGetStyle = custom == "{",           
-            fn = Ext.DomQuery.operators[op],       
+        var result = [],
+            ri = -1,
+            useGetStyle = custom == "{",
+            fn = Ext.DomQuery.operators[op],
             a,
             xml,
             hasXml;
-            
+
         for(var i = 0, ci; ci = cs[i]; i++){
-           
+
             if(ci.nodeType != 1){
                 continue;
             }
-            
+
             if(!hasXml){
                 xml = Ext.DomQuery.isXml(ci);
                 hasXml = true;
             }
-           
-            
+
+
             if(!xml){
                 if(useGetStyle){
                     a = Ext.DomQuery.getStyle(ci, attr);
@@ -954,8 +954,8 @@ Ext.DomQuery = function(){
                 } else if (attr == "for"){
                     a = ci.htmlFor;
                 } else if (attr == "href"){
-                   
-                   
+
+
                     a = ci.getAttribute("href", 2);
                 } else{
                     a = ci.getAttribute(attr);
@@ -975,7 +975,7 @@ Ext.DomQuery = function(){
     }
 
     function nodupIEXml(cs){
-        var d = ++key, 
+        var d = ++key,
             r;
         cs[0].setAttribute("_nodup", d);
         r = [cs[0]];
@@ -1030,7 +1030,7 @@ Ext.DomQuery = function(){
             r = [];
         for(var i = 0, len = c1.length; i < len; i++){
             c1[i].setAttribute("_qdiff", d);
-        }        
+        }
         for(var i = 0, len = c2.length; i < len; i++){
             if(c2[i].getAttribute("_qdiff") != d){
                 r[r.length] = c2[i];
@@ -1051,10 +1051,10 @@ Ext.DomQuery = function(){
         }
         if(isIE && typeof c1[0].selectSingleNode != "undefined"){
             return quickDiffIEXml(c1, c2);
-        }        
+        }
         for(var i = 0; i < len1; i++){
             c1[i]._qdiff = d;
-        }        
+        }
         for(var i = 0, len = c2.length; i < len; i++){
             if(c2[i]._qdiff != d){
                 r[r.length] = c2[i];
@@ -1076,26 +1076,26 @@ Ext.DomQuery = function(){
         getStyle : function(el, name){
             return Ext.fly(el).getStyle(name);
         },
-        
+
         compile : function(path, type){
             type = type || "select";
 
-           
+
             var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],
-                       mode,           
+                       mode,
                        lastPath,
                matchers = Ext.DomQuery.matchers,
                matchersLn = matchers.length,
                modeMatch,
-               
+
                lmode = path.match(modeRe);
-            
+
             if(lmode && lmode[1]){
                 fn[fn.length] = 'mode="'+lmode[1].replace(trimRe, "")+'";';
                 path = path.replace(lmode[1], "");
             }
-           
-            
+
+
             while(path.substr(0, 1)=="/"){
                 path = path.substr(1);
             }
@@ -1105,9 +1105,9 @@ Ext.DomQuery = function(){
                 var tokenMatch = path.match(tagTokenRe);
                 if(type == "select"){
                     if(tokenMatch){
-                       
+
                         if(tokenMatch[1] == "#"){
-                            fn[fn.length] = 'n = quickId(n, mode, root, "'+tokenMatch[2]+'");';                        
+                            fn[fn.length] = 'n = quickId(n, mode, root, "'+tokenMatch[2]+'");';
                         }else{
                             fn[fn.length] = 'n = getNodes(n, mode, "'+tokenMatch[2]+'");';
                         }
@@ -1115,7 +1115,7 @@ Ext.DomQuery = function(){
                     }else if(path.substr(0, 1) != '@'){
                         fn[fn.length] = 'n = getNodes(n, mode, "*");';
                     }
-               
+
                 }else{
                     if(tokenMatch){
                         if(tokenMatch[1] == "#"){
@@ -1140,7 +1140,7 @@ Ext.DomQuery = function(){
                             break;
                         }
                     }
-                    
+
                     if(!matched){
                         throw 'Error parsing selector, parsing failed at "' + path + '"';
                     }
@@ -1150,29 +1150,29 @@ Ext.DomQuery = function(){
                     path = path.replace(modeMatch[1], "");
                 }
             }
-           
+
             fn[fn.length] = "return nodup(n);\n}";
-           
-           
+
+
             eval(fn.join(""));
             return f;
         },
 
-        
+
        jsSelect: function(path, root, type){
-           
+
            root = root || document;
-           
+
             if(typeof root == "string"){
                 root = document.getElementById(root);
             }
             var paths = path.split(","),
                results = [];
-               
-           
-            for(var i = 0, len = paths.length; i < len; i++){          
+
+
+            for(var i = 0, len = paths.length; i < len; i++){
                 var subPath = paths[i].replace(trimRe, "");
-               
+
                 if(!cache[subPath]){
                     cache[subPath] = Ext.DomQuery.compile(subPath);
                     if(!cache[subPath]){
@@ -1184,9 +1184,9 @@ Ext.DomQuery = function(){
                     results = results.concat(result);
                 }
             }
-           
-           
-           
+
+
+
             if(paths.length > 1){
                 return nodup(results);
             }
@@ -1203,19 +1203,19 @@ Ext.DomQuery = function(){
                    var cs = root.querySelectorAll(path);
                    return Ext.toArray(cs);
                }
-               catch (ex) {}           
-           }       
+               catch (ex) {}
+           }
            return Ext.DomQuery.jsSelect.call(this, path, root, type);
        } : function(path, root, type) {
            return Ext.DomQuery.jsSelect.call(this, path, root, type);
        },
 
-        
+
         selectNode : function(path, root){
             return Ext.DomQuery.select(path, root)[0];
         },
 
-        
+
         selectValue : function(path, root, defaultValue){
             path = path.replace(trimRe, "");
             if(!valueCache[path]){
@@ -1223,24 +1223,24 @@ Ext.DomQuery = function(){
             }
             var n = valueCache[path](root), v;
             n = n[0] ? n[0] : n;
-                   
-           
-           
-           
-           
+
+
+
+
+
             if (typeof n.normalize == 'function') n.normalize();
-            
+
             v = (n && n.firstChild ? n.firstChild.nodeValue : null);
             return ((v === null||v === undefined||v==='') ? defaultValue : v);
         },
 
-        
+
         selectNumber : function(path, root, defaultValue){
             var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0);
             return parseFloat(v);
         },
 
-        
+
         is : function(el, ss){
             if(typeof el == "string"){
                 el = document.getElementById(el);
@@ -1250,7 +1250,7 @@ Ext.DomQuery = function(){
             return isArray ? (result.length == el.length) : (result.length > 0);
         },
 
-        
+
         filter : function(els, ss, nonMatches){
             ss = ss.replace(trimRe, "");
             if(!simpleCache[ss]){
@@ -1260,7 +1260,7 @@ Ext.DomQuery = function(){
             return nonMatches ? quickDiff(result, els) : result;
         },
 
-        
+
         matchers : [{
                 re: /^\.([\w\-]+)/,
                 select: 'n = byClassName(n, " {1} ");'
@@ -1542,15 +1542,15 @@ Ext.query = Ext.DomQuery.select;
 var task = new Ext.util.DelayedTask(function(){
     alert(Ext.getDom('myInputField').value.length);
 });
-// Wait 500ms before calling our function. If the user presses another key 
+// Wait 500ms before calling our function. If the user presses another key
 // during that 500ms, it will be cancelled and we'll wait another 500ms.
 Ext.get('myInputField').on('keypress', function(){
-    task.{@link #delay}(500); 
+    task.{@link #delay}(500);
 });
- * </code></pre> 
+ * </code></pre>
  * <p>Note that we are using a DelayedTask here to illustrate a point. The configuration
  * option <tt>buffer</tt> for {@link Ext.util.Observable#addListener addListener/on} will
- * also setup a delayed task for you to buffer events.</p> 
+ * also setup a delayed task for you to buffer events.</p>
  * @constructor The parameters to this constructor serve as defaults and are not required.
  * @param {Function} fn (optional) The default function to call.
  * @param {Object} scope (optional) The default scope (The <code><b>this</b></code> reference) in which the
@@ -1559,13 +1559,13 @@ Ext.get('myInputField').on('keypress', function(){
  */
 Ext.util.DelayedTask = function(fn, scope, args){
     var me = this,
-       id,     
+       id,
        call = function(){
                clearInterval(id);
                id = null;
                fn.apply(scope, args || []);
            };
-           
+
     /**
      * Cancels any pending timeout and queues a new one
      * @param {Number} delay The milliseconds to delay
@@ -2214,12 +2214,12 @@ el.un('click', this.handlerFn);
         return this;
     },
 
-    
+
     isBorderBox : function(){
         return Ext.isBorderBox || Ext.isForcedBorderBox || noBoxAdjust[(this.dom.tagName || "").toLowerCase()];
     },
 
-    
+
     remove : function(){
         var me = this,
             dom = me.dom;
@@ -2230,7 +2230,7 @@ el.un('click', this.handlerFn);
         }
     },
 
-    
+
     hover : function(overFn, outFn, scope, options){
         var me = this;
         me.on('mouseenter', overFn, scope || me.dom, options);
@@ -2238,17 +2238,17 @@ el.un('click', this.handlerFn);
         return me;
     },
 
-    
+
     contains : function(el){
         return !el ? false : Ext.lib.Dom.isAncestor(this.dom, el.dom ? el.dom : el);
     },
 
-    
+
     getAttributeNS : function(ns, name){
         return this.getAttribute(name, ns);
     },
 
-    
+
     getAttribute: (function(){
         var test = document.createElement('table'),
             isBrokenOnTable = false,
@@ -2306,7 +2306,7 @@ el.un('click', this.handlerFn);
         test = null;
     })(),
 
-    
+
     update : function(html) {
         if (this.dom) {
             this.dom.innerHTML = html;
@@ -2340,7 +2340,7 @@ El.get = function(el){
         elm,
         id;
     if(!el){ return null; }
-    if (typeof el == "string") { 
+    if (typeof el == "string") {
         if (!(elm = DOC.getElementById(el))) {
             return null;
         }
@@ -2351,7 +2351,7 @@ El.get = function(el){
             ex = El.addToCache(new El(elm));
         }
         return ex;
-    } else if (el.tagName) { 
+    } else if (el.tagName) {
         if(!(id = el.id)){
             id = Ext.id(el);
         }
@@ -2364,10 +2364,10 @@ El.get = function(el){
         return ex;
     } else if (el instanceof El) {
         if(el != docEl){
-            
-            
 
-            
+
+
+
             if (Ext.isIE && (el.id == undefined || el.id == '')) {
                 el.dom = el.dom;
             } else {
@@ -2380,7 +2380,7 @@ El.get = function(el){
     } else if(Ext.isArray(el)) {
         return El.select(el);
     } else if(el == DOC) {
-        
+
         if(!docEl){
             var f = function(){};
             f.prototype = El.prototype;
@@ -2436,23 +2436,23 @@ function garbageCollect(){
             }
             el = o.el;
             d = el.dom;
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
-            
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
             if(!d || !d.parentNode || (!d.offsetParent && !DOC.getElementById(eid))){
                 if(Ext.enableListenerCollection){
                     Ext.EventManager.removeAll(d);
@@ -2460,7 +2460,7 @@ function garbageCollect(){
                 delete EC[eid];
             }
         }
-        
+
         if (Ext.isIE) {
             var t = {};
             for (eid in EC) {
@@ -2520,14 +2520,14 @@ Ext.Element.addMethods(function(){
                PREVIOUSSIBLING = 'previousSibling',
                DQ = Ext.DomQuery,
                GET = Ext.get;
-       
+
        return {
-               
+
            findParent : function(simpleSelector, maxDepth, returnEl){
                var p = this.dom,
-                       b = document.body, 
-                       depth = 0,                      
-                       stopEl;         
+                       b = document.body,
+                       depth = 0,
+                       stopEl;
             if(Ext.isGecko && Object.prototype.toString.call(p) == '[object XULElement]') {
                 return null;
             }
@@ -2545,66 +2545,66 @@ Ext.Element.addMethods(function(){
                }
                return null;
            },
-       
-           
+
+
            findParentNode : function(simpleSelector, maxDepth, returnEl){
                var p = Ext.fly(this.dom.parentNode, '_internal');
                return p ? p.findParent(simpleSelector, maxDepth, returnEl) : null;
            },
-       
-           
+
+
            up : function(simpleSelector, maxDepth){
                return this.findParentNode(simpleSelector, maxDepth, true);
            },
-       
-           
+
+
            select : function(selector){
                return Ext.Element.select(selector, this.dom);
            },
-       
-           
+
+
            query : function(selector){
                return DQ.select(selector, this.dom);
            },
-       
-           
+
+
            child : function(selector, returnDom){
                var n = DQ.selectNode(selector, this.dom);
                return returnDom ? n : GET(n);
            },
-       
-           
+
+
            down : function(selector, returnDom){
                var n = DQ.selectNode(" > " + selector, this.dom);
                return returnDom ? n : GET(n);
            },
-       
-                
+
+
            parent : function(selector, returnDom){
                return this.matchNode(PARENTNODE, PARENTNODE, selector, returnDom);
            },
-       
-            
+
+
            next : function(selector, returnDom){
                return this.matchNode(NEXTSIBLING, NEXTSIBLING, selector, returnDom);
            },
-       
-           
+
+
            prev : function(selector, returnDom){
                return this.matchNode(PREVIOUSSIBLING, PREVIOUSSIBLING, selector, returnDom);
            },
-       
-       
-           
+
+
+
            first : function(selector, returnDom){
                return this.matchNode(NEXTSIBLING, 'firstChild', selector, returnDom);
            },
-       
-           
+
+
            last : function(selector, returnDom){
                return this.matchNode(PREVIOUSSIBLING, 'lastChild', selector, returnDom);
            },
-           
+
            matchNode : function(dir, start, selector, returnDom){
                var n = this.dom[start];
                while(n){
@@ -2614,7 +2614,7 @@ Ext.Element.addMethods(function(){
                    n = n[dir];
                }
                return null;
-           }   
+           }
     };
 }());
 Ext.Element.addMethods(
@@ -2622,85 +2622,85 @@ function() {
        var GETDOM = Ext.getDom,
                GET = Ext.get,
                DH = Ext.DomHelper;
-       
+
        return {
-           
-           appendChild: function(el){        
-               return GET(el).appendTo(this);        
+
+           appendChild: function(el){
+               return GET(el).appendTo(this);
            },
-       
-           
-           appendTo: function(el){        
-               GETDOM(el).appendChild(this.dom);        
+
+
+           appendTo: function(el){
+               GETDOM(el).appendChild(this.dom);
                return this;
            },
-       
-           
-           insertBefore: function(el){                   
+
+
+           insertBefore: function(el){
                (el = GETDOM(el)).parentNode.insertBefore(this.dom, el);
                return this;
            },
-       
-           
+
+
            insertAfter: function(el){
                (el = GETDOM(el)).parentNode.insertBefore(this.dom, el.nextSibling);
                return this;
            },
-       
-           
+
+
            insertFirst: function(el, returnDom){
             el = el || {};
-            if(el.nodeType || el.dom || typeof el == 'string'){ 
+            if(el.nodeType || el.dom || typeof el == 'string'){
                 el = GETDOM(el);
                 this.dom.insertBefore(el, this.dom.firstChild);
                 return !returnDom ? GET(el) : el;
-            }else{ 
+            }else{
                 return this.createChild(el, this.dom.firstChild, returnDom);
             }
         },
-       
-           
+
+
            replace: function(el){
                el = GET(el);
                this.insertBefore(el);
                el.remove();
                return this;
            },
-       
-           
+
+
            replaceWith: function(el){
                    var me = this;
-                
+
             if(el.nodeType || el.dom || typeof el == 'string'){
                 el = GETDOM(el);
                 me.dom.parentNode.insertBefore(el, me.dom);
             }else{
                 el = DH.insertBefore(me.dom, el);
             }
-               
+
                delete Ext.elCache[me.id];
-               Ext.removeNode(me.dom);      
+               Ext.removeNode(me.dom);
                me.id = Ext.id(me.dom = el);
-               Ext.Element.addToCache(me.isFlyweight ? new Ext.Element(me.dom) : me);     
+               Ext.Element.addToCache(me.isFlyweight ? new Ext.Element(me.dom) : me);
             return me;
            },
-           
-               
+
+
                createChild: function(config, insertBefore, returnDom){
                    config = config || {tag:'div'};
-                   return insertBefore ? 
-                          DH.insertBefore(insertBefore, config, returnDom !== true) :  
+                   return insertBefore ?
+                          DH.insertBefore(insertBefore, config, returnDom !== true) :
                           DH[!this.dom.firstChild ? 'overwrite' : 'append'](this.dom, config,  returnDom !== true);
                },
-               
-               
-               wrap: function(config, returnDom){        
+
+
+               wrap: function(config, returnDom){
                    var newEl = DH.insertBefore(this.dom, config || {tag: "div"}, !returnDom);
                    newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom);
                    return newEl;
                },
-               
-               
+
+
                insertHtml : function(where, html, returnEl){
                    var el = DH.insertHtml(where, this.dom, html);
                    return returnEl ? Ext.get(el) : el;
@@ -2708,7 +2708,7 @@ function() {
        };
 }());
 Ext.Element.addMethods(function(){
-    
+
     var supports = Ext.supports,
         propCache = {},
         camelRe = /(-[a-z])/gi,
@@ -2733,14 +2733,14 @@ Ext.Element.addMethods(function(){
         OVERFLOWX = 'overflow-x',
         OVERFLOWY = 'overflow-y',
         ORIGINALCLIP = 'originalClip',
-        
+
         borders = {l: BORDER + LEFT + WIDTH, r: BORDER + RIGHT + WIDTH, t: BORDER + TOP + WIDTH, b: BORDER + BOTTOM + WIDTH},
         paddings = {l: PADDING + LEFT, r: PADDING + RIGHT, t: PADDING + TOP, b: PADDING + BOTTOM},
         margins = {l: MARGIN + LEFT, r: MARGIN + RIGHT, t: MARGIN + TOP, b: MARGIN + BOTTOM},
         data = Ext.Element.data;
 
 
-    
+
     function camelFn(m, a) {
         return a.charAt(1).toUpperCase();
     }
@@ -2750,7 +2750,7 @@ Ext.Element.addMethods(function(){
     }
 
     return {
-        
+
         adjustWidth : function(width) {
             var me = this;
             var isNum = (typeof width == "number");
@@ -2760,7 +2760,7 @@ Ext.Element.addMethods(function(){
             return (isNum && width < 0) ? 0 : width;
         },
 
-        
+
         adjustHeight : function(height) {
             var me = this;
             var isNum = (typeof height == "number");
@@ -2771,14 +2771,14 @@ Ext.Element.addMethods(function(){
         },
 
 
-        
+
         addClass : function(className){
             var me = this,
                 i,
                 len,
                 v,
                 cls = [];
-            
+
             if (!Ext.isArray(className)) {
                 if (typeof className == 'string' && !this.hasClass(className)) {
                     me.dom.className += " " + className;
@@ -2798,7 +2798,7 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
         removeClass : function(className){
             var me = this,
                 i,
@@ -2826,7 +2826,7 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
         radioClass : function(className){
             var cn = this.dom.parentNode.childNodes,
                 v,
@@ -2842,17 +2842,17 @@ Ext.Element.addMethods(function(){
             return this.addClass(className);
         },
 
-        
+
         toggleClass : function(className){
             return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
         },
 
-        
+
         hasClass : function(className){
             return className && (' '+this.dom.className+' ').indexOf(' '+className+' ') != -1;
         },
 
-        
+
         replaceClass : function(oldClassName, newClassName){
             return this.removeClass(oldClassName).addClass(newClassName);
         },
@@ -2861,7 +2861,7 @@ Ext.Element.addMethods(function(){
             return this.getStyle(style) == val;
         },
 
-        
+
         getStyle : function(){
             return view && view.getComputedStyle ?
                 function(prop){
@@ -2877,16 +2877,16 @@ Ext.Element.addMethods(function(){
                     prop = chkCache(prop);
                     out = (v = el.style[prop]) ? v :
                            (cs = view.getComputedStyle(el, "")) ? cs[prop] : null;
-                           
-                    
-                    
+
+
+
                     if(prop == 'marginRight' && out != '0px' && !supports.correctRightMargin){
                         display = el.style.display;
                         el.style.display = 'inline-block';
                         out = view.getComputedStyle(el, '').marginRight;
                         el.style.display = display;
                     }
-                    
+
                     if(prop == 'backgroundColor' && out == 'rgba(0, 0, 0, 0)' && !supports.correctTransparentColor){
                         out = 'transparent';
                     }
@@ -2914,7 +2914,7 @@ Ext.Element.addMethods(function(){
                 };
         }(),
 
-        
+
         getColor : function(attr, defaultValue, prefix){
             var v = this.getStyle(attr),
                 color = (typeof prefix != 'undefined') ? prefix : '#',
@@ -2935,10 +2935,10 @@ Ext.Element.addMethods(function(){
             return(color.length > 5 ? color.toLowerCase() : defaultValue);
         },
 
-        
+
         setStyle : function(prop, value){
             var tmp, style;
-            
+
             if (typeof prop != 'object') {
                 tmp = {};
                 tmp[prop] = value;
@@ -2953,7 +2953,7 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
          setOpacity : function(opacity, animate){
             var me = this,
                 s = me.dom.style;
@@ -2974,7 +2974,7 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
         clearOpacity : function(){
             var style = this.dom.style;
             if(Ext.isIE9m){
@@ -2987,7 +2987,7 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
         getHeight : function(contentHeight){
             var me = this,
                 dom = me.dom,
@@ -2998,7 +2998,7 @@ Ext.Element.addMethods(function(){
             return h < 0 ? 0 : h;
         },
 
-        
+
         getWidth : function(contentWidth){
             var me = this,
                 dom = me.dom,
@@ -3008,7 +3008,7 @@ Ext.Element.addMethods(function(){
             return w < 0 ? 0 : w;
         },
 
-        
+
         setWidth : function(width, animate){
             var me = this;
             width = me.adjustWidth(width);
@@ -3018,7 +3018,7 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
          setHeight : function(height, animate){
             var me = this;
             height = me.adjustHeight(height);
@@ -3028,17 +3028,17 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
         getBorderWidth : function(side){
             return this.addStyles(side, borders);
         },
 
-        
+
         getPadding : function(side){
             return this.addStyles(side, paddings);
         },
 
-        
+
         clip : function(){
             var me = this,
                 dom = me.dom;
@@ -3057,7 +3057,7 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
         unclip : function(){
             var me = this,
                 dom = me.dom;
@@ -3078,7 +3078,7 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
         addStyles : function(sides, styles){
             var ttlSize = 0,
                 sidesArr = sides.match(wordsRe),
@@ -3114,63 +3114,63 @@ var D = Ext.lib.Dom,
         ZINDEX = "z-index";
 
 Ext.Element.addMethods({
-       
+
     getX : function(){
         return D.getX(this.dom);
     },
 
-    
+
     getY : function(){
         return D.getY(this.dom);
     },
 
-    
+
     getXY : function(){
         return D.getXY(this.dom);
     },
 
-    
+
     getOffsetsTo : function(el){
         var o = this.getXY(),
                e = Ext.fly(el, '_internal').getXY();
         return [o[0]-e[0],o[1]-e[1]];
     },
 
-    
-    setX : function(x, animate){           
+
+    setX : function(x, animate){
            return this.setXY([x, this.getY()], this.animTest(arguments, animate, 1));
     },
 
-    
-    setY : function(y, animate){           
+
+    setY : function(y, animate){
            return this.setXY([this.getX(), y], this.animTest(arguments, animate, 1));
     },
 
-    
+
     setLeft : function(left){
         this.setStyle(LEFT, this.addUnits(left));
         return this;
     },
 
-    
+
     setTop : function(top){
         this.setStyle(TOP, this.addUnits(top));
         return this;
     },
 
-    
+
     setRight : function(right){
         this.setStyle(RIGHT, this.addUnits(right));
         return this;
     },
 
-    
+
     setBottom : function(bottom){
         this.setStyle(BOTTOM, this.addUnits(bottom));
         return this;
     },
 
-    
+
     setXY : function(pos, animate){
            var me = this;
         if(!animate || !me.anim){
@@ -3181,44 +3181,44 @@ Ext.Element.addMethods({
         return me;
     },
 
-    
+
     setLocation : function(x, y, animate){
         return this.setXY([x, y], this.animTest(arguments, animate, 2));
     },
 
-    
+
     moveTo : function(x, y, animate){
-        return this.setXY([x, y], this.animTest(arguments, animate, 2));        
-    },    
-    
-    
+        return this.setXY([x, y], this.animTest(arguments, animate, 2));
+    },
+
+
     getLeft : function(local){
            return !local ? this.getX() : parseInt(this.getStyle(LEFT), 10) || 0;
     },
 
-    
+
     getRight : function(local){
            var me = this;
            return !local ? me.getX() + me.getWidth() : (me.getLeft(true) + me.getWidth()) || 0;
     },
 
-    
+
     getTop : function(local) {
            return !local ? this.getY() : parseInt(this.getStyle(TOP), 10) || 0;
     },
 
-    
+
     getBottom : function(local){
            var me = this;
            return !local ? me.getY() + me.getHeight() : (me.getTop(true) + me.getHeight()) || 0;
     },
 
-    
+
     position : function(pos, zIndex, x, y){
            var me = this;
-           
-        if(!pos && me.isStyle(POSITION, STATIC)){           
-            me.setStyle(POSITION, RELATIVE);           
+
+        if(!pos && me.isStyle(POSITION, STATIC)){
+            me.setStyle(POSITION, RELATIVE);
         } else if(pos) {
             me.setStyle(POSITION, pos);
         }
@@ -3228,7 +3228,7 @@ Ext.Element.addMethods({
         if(x || y) me.setXY([x || false, y || false]);
     },
 
-    
+
     clearPositioning : function(value){
         value = value || '';
         this.setStyle({
@@ -3242,7 +3242,7 @@ Ext.Element.addMethods({
         return this;
     },
 
-    
+
     getPositioning : function(){
         var l = this.getStyle(LEFT);
         var t = this.getStyle(TOP);
@@ -3255,26 +3255,26 @@ Ext.Element.addMethods({
             "z-index" : this.getStyle(ZINDEX)
         };
     },
-    
-    
+
+
     setPositioning : function(pc){
            var me = this,
                style = me.dom.style;
-               
+
         me.setStyle(pc);
-        
+
         if(pc.right == AUTO){
             style.right = "";
         }
         if(pc.bottom == AUTO){
             style.bottom = "";
         }
-        
+
         return me;
-    },    
-       
-    
-    translatePoints : function(x, y){               
+    },
+
+
+    translatePoints : function(x, y){
            y = isNaN(x[1]) ? y : x[1];
         x = isNaN(x[0]) ? x : x[0];
         var me = this,
@@ -3282,34 +3282,34 @@ Ext.Element.addMethods({
                o = me.getXY(),
                l = parseInt(me.getStyle(LEFT), 10),
                t = parseInt(me.getStyle(TOP), 10);
-        
+
         l = !isNaN(l) ? l : (relative ? 0 : me.dom.offsetLeft);
-        t = !isNaN(t) ? t : (relative ? 0 : me.dom.offsetTop);        
+        t = !isNaN(t) ? t : (relative ? 0 : me.dom.offsetTop);
 
-        return {left: (x - o[0] + l), top: (y - o[1] + t)}; 
+        return {left: (x - o[0] + l), top: (y - o[1] + t)};
     },
-    
+
     animTest : function(args, animate, i) {
         return !!animate && this.preanim ? this.preanim(args, i) : false;
     }
 });
 })();
 Ext.Element.addMethods({
-    
+
     isScrollable : function(){
         var dom = this.dom;
         return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;
     },
 
-    
+
     scrollTo : function(side, value){
         this.dom["scroll" + (/top/i.test(side) ? "Top" : "Left")] = value;
         return this;
     },
 
-    
+
     getScroll : function(){
-        var d = this.dom, 
+        var d = this.dom,
             doc = document,
             body = doc.body,
             docElement = doc.documentElement,
@@ -3319,7 +3319,7 @@ Ext.Element.addMethods({
 
         if(d == doc || d == body){
             if(Ext.isIE && Ext.isStrict){
-                l = docElement.scrollLeft; 
+                l = docElement.scrollLeft;
                 t = docElement.scrollTop;
             }else{
                 l = window.pageXOffset;
@@ -3376,23 +3376,23 @@ Ext.Element.addMethods(function(){
         };
 
     return {
-        
+
         originalDisplay : "",
         visibilityMode : 1,
 
-        
+
         setVisibilityMode : function(visMode){
             data(this.dom, VISMODE, visMode);
             return this;
         },
 
-        
+
         animate : function(args, duration, onComplete, easing, animType){
             this.anim(args, {duration: duration, callback: onComplete, easing: easing}, animType);
             return this;
         },
 
-        
+
         anim : function(args, opt, animType, defaultDur, defaultEase, cb){
             animType = animType || 'run';
             opt = opt || {};
@@ -3412,21 +3412,21 @@ Ext.Element.addMethods(function(){
             return anim;
         },
 
-        
+
         preanim : function(a, i){
             return !a[i] ? false : (typeof a[i] == 'object' ? a[i]: {duration: a[i+1], callback: a[i+2], easing: a[i+3]});
         },
 
-        
+
         isVisible : function() {
             var me = this,
                 dom = me.dom,
                 visible = data(dom, ISVISIBLE);
 
-            if(typeof visible == 'boolean'){ 
+            if(typeof visible == 'boolean'){
                 return visible;
             }
-            
+
             visible = !me.isStyle(VISIBILITY, HIDDEN) &&
                       !me.isStyle(DISPLAY, NONE) &&
                       !((getVisMode(dom) == El.ASCLASS) && me.hasClass(me.visibilityCls || El.visibilityCls));
@@ -3435,14 +3435,14 @@ Ext.Element.addMethods(function(){
             return visible;
         },
 
-        
+
         setVisible : function(visible, animate){
             var me = this, isDisplay, isVisibility, isOffsets, isNosize,
                 dom = me.dom,
                 visMode = getVisMode(dom);
 
 
-            
+
             if (typeof animate == 'string'){
                 switch (animate) {
                     case DISPLAY:
@@ -3491,7 +3491,7 @@ Ext.Element.addMethods(function(){
                     dom.style.visibility = visible ? "visible" : HIDDEN;
                 }
             }else{
-                
+
                 if(visible){
                     me.setOpacity(.01);
                     me.setVisible(true);
@@ -3505,25 +3505,25 @@ Ext.Element.addMethods(function(){
                             visible || me.setVisible(false).setOpacity(1);
                         });
             }
-            data(dom, ISVISIBLE, visible);  
+            data(dom, ISVISIBLE, visible);
             return me;
         },
 
 
-        
+
         hasMetrics  : function(){
             var dom = this.dom;
             return this.isVisible() || (getVisMode(dom) == El.VISIBILITY);
         },
 
-        
+
         toggle : function(animate){
             var me = this;
             me.setVisible(!me.isVisible(), me.preanim(arguments, 0));
             return me;
         },
 
-        
+
         setDisplayed : function(value) {
             if(typeof value == "boolean"){
                value = value ? getDisplay(this.dom) : NONE;
@@ -3532,21 +3532,21 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
         fixDisplay : function(){
             var me = this;
             if(me.isStyle(DISPLAY, NONE)){
                 me.setStyle(VISIBILITY, HIDDEN);
-                me.setStyle(DISPLAY, getDisplay(this.dom)); 
-                if(me.isStyle(DISPLAY, NONE)){ 
+                me.setStyle(DISPLAY, getDisplay(this.dom));
+                if(me.isStyle(DISPLAY, NONE)){
                     me.setStyle(DISPLAY, "block");
                 }
             }
         },
 
-        
+
         hide : function(animate){
-            
+
             if (typeof animate == 'string'){
                 this.setVisible(false, animate);
                 return this;
@@ -3555,9 +3555,9 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
         show : function(animate){
-            
+
             if (typeof animate == 'string'){
                 this.setVisible(true, animate);
                 return this;
@@ -3567,7 +3567,7 @@ Ext.Element.addMethods(function(){
         }
     };
 }());(function(){
-    
+
     var NULL = null,
         UNDEFINED = undefined,
         TRUE = true,
@@ -3588,7 +3588,7 @@ Ext.Element.addMethods(function(){
         MOTION = "motion",
         POSITION = "position",
         EASEOUT = "easeOut",
-        
+
         flyEl = new Ext.Element.Flyweight(),
         queues = {},
         getObject = function(o){
@@ -3599,7 +3599,7 @@ Ext.Element.addMethods(function(){
             flyEl.id = Ext.id(dom);
             return flyEl;
         },
-        
+
         getQueue = function(id){
             if(!queues[id]){
                 queues[id] = [];
@@ -3609,78 +3609,78 @@ Ext.Element.addMethods(function(){
         setQueue = function(id, value){
             queues[id] = value;
         };
-        
+
 
 Ext.enableFx = TRUE;
 
 
 Ext.Fx = {
-    
-    
-    
+
+
+
     switchStatements : function(key, fn, argHash){
         return fn.apply(this, argHash[key]);
     },
-    
-    
-    slideIn : function(anchor, o){ 
+
+
+    slideIn : function(anchor, o){
         o = getObject(o);
         var me = this,
             dom = me.dom,
             st = dom.style,
             xy,
             r,
-            b,              
-            wrap,               
+            b,
+            wrap,
             after,
             st,
-            args, 
+            args,
             pt,
             bw,
             bh;
-            
+
         anchor = anchor || "t";
 
-        me.queueFx(o, function(){            
+        me.queueFx(o, function(){
             xy = fly(dom).getXY();
-            
-            fly(dom).fixDisplay();            
-            
-            
-            r = fly(dom).getFxRestore();      
+
+            fly(dom).fixDisplay();
+
+
+            r = fly(dom).getFxRestore();
             b = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: dom.offsetWidth, height: dom.offsetHeight};
             b.right = b.x + b.width;
             b.bottom = b.y + b.height;
-            
-            
-            fly(dom).setWidth(b.width).setHeight(b.height);            
-            
-            
+
+
+            fly(dom).setWidth(b.width).setHeight(b.height);
+
+
             wrap = fly(dom).fxWrap(r.pos, o, HIDDEN);
-            
+
             st.visibility = VISIBLE;
             st.position = ABSOLUTE;
-            
-            
+
+
             function after(){
                  fly(dom).fxUnwrap(wrap, r.pos, o);
                  st.width = r.width;
                  st.height = r.height;
                  fly(dom).afterFx(o);
             }
-            
-            
-            pt = {to: [b.x, b.y]}; 
+
+
+            pt = {to: [b.x, b.y]};
             bw = {to: b.width};
             bh = {to: b.height};
-                
-            function argCalc(wrap, style, ww, wh, sXY, sXYval, s1, s2, w, h, p){                    
+
+            function argCalc(wrap, style, ww, wh, sXY, sXYval, s1, s2, w, h, p){
                 var ret = {};
                 fly(wrap).setWidth(ww).setHeight(wh);
                 if(fly(wrap)[sXY]){
-                    fly(wrap)[sXY](sXYval);                  
+                    fly(wrap)[sXY](sXYval);
                 }
-                style[s1] = style[s2] = "0";                    
+                style[s1] = style[s2] = "0";
                 if(w){
                     ret.width = w;
                 }
@@ -3703,7 +3703,7 @@ Ext.Fx = {
                     br : [wrap, st, 0, 0, SETXY, [b.right, b.bottom], LEFT, TOP, bw, bh, pt],
                     tr : [wrap, st, 0, 0, SETX, b.x + b.width, LEFT, BOTTOM, bw, bh, pt]
                 });
-            
+
             st.visibility = VISIBLE;
             fly(wrap).show();
 
@@ -3711,13 +3711,13 @@ Ext.Fx = {
                 o,
                 MOTION,
                 .5,
-                EASEOUT, 
+                EASEOUT,
                 after);
         });
         return me;
     },
-    
-    
+
+
     slideOut : function(anchor, o){
         o = getObject(o);
         var me = this,
@@ -3728,51 +3728,51 @@ Ext.Fx = {
             r,
             b,
             a,
-            zero = {to: 0}; 
-                    
+            zero = {to: 0};
+
         anchor = anchor || "t";
 
         me.queueFx(o, function(){
-            
-            
-            r = fly(dom).getFxRestore(); 
+
+
+            r = fly(dom).getFxRestore();
             b = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: dom.offsetWidth, height: dom.offsetHeight};
             b.right = b.x + b.width;
             b.bottom = b.y + b.height;
-                
-            
+
+
             fly(dom).setWidth(b.width).setHeight(b.height);
 
-            
+
             wrap = fly(dom).fxWrap(r.pos, o, VISIBLE);
-                
+
             st.visibility = VISIBLE;
             st.position = ABSOLUTE;
-            fly(wrap).setWidth(b.width).setHeight(b.height);            
+            fly(wrap).setWidth(b.width).setHeight(b.height);
 
             function after(){
-                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();                
+                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
                 fly(dom).fxUnwrap(wrap, r.pos, o);
                 st.width = r.width;
                 st.height = r.height;
                 fly(dom).afterFx(o);
-            }            
-            
-            function argCalc(style, s1, s2, p1, v1, p2, v2, p3, v3){                    
+            }
+
+            function argCalc(style, s1, s2, p1, v1, p2, v2, p3, v3){
                 var ret = {};
-                
+
                 style[s1] = style[s2] = "0";
-                ret[p1] = v1;               
+                ret[p1] = v1;
                 if(p2){
-                    ret[p2] = v2;               
+                    ret[p2] = v2;
                 }
                 if(p3){
                     ret[p3] = v3;
                 }
-                
+
                 return ret;
             };
-            
+
             a = fly(dom).switchStatements(anchor.toLowerCase(), argCalc, {
                 t  : [st, LEFT, BOTTOM, HEIGHT, zero],
                 l  : [st, RIGHT, TOP, WIDTH, zero],
@@ -3783,18 +3783,18 @@ Ext.Fx = {
                 br : [st, LEFT, TOP, WIDTH, zero, HEIGHT, zero, POINTS, {to : [b.x + b.width, b.bottom]}],
                 tr : [st, LEFT, BOTTOM, WIDTH, zero, HEIGHT, zero, POINTS, {to : [b.right, b.y]}]
             });
-            
+
             arguments.callee.anim = fly(wrap).fxanim(a,
                 o,
                 MOTION,
                 .5,
-                EASEOUT, 
+                EASEOUT,
                 after);
         });
         return me;
     },
 
-    
+
     puff : function(o){
         o = getObject(o);
         var me = this,
@@ -3810,18 +3810,18 @@ Ext.Fx = {
             fly(dom).clearOpacity();
             fly(dom).show();
 
-            
-            r = fly(dom).getFxRestore();                   
-            
+
+            r = fly(dom).getFxRestore();
+
             function after(){
-                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();                  
-                fly(dom).clearOpacity();  
+                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
+                fly(dom).clearOpacity();
                 fly(dom).setPositioning(r.pos);
                 st.width = r.width;
                 st.height = r.height;
                 st.fontSize = '';
                 fly(dom).afterFx(o);
-            }   
+            }
 
             arguments.callee.anim = fly(dom).fxanim({
                     width : {to : fly(dom).adjustWidth(width * 2)},
@@ -3839,7 +3839,7 @@ Ext.Fx = {
         return me;
     },
 
-    
+
     switchOff : function(o){
         o = getObject(o);
         var me = this,
@@ -3851,34 +3851,34 @@ Ext.Fx = {
             fly(dom).clearOpacity();
             fly(dom).clip();
 
-            
+
             r = fly(dom).getFxRestore();
-                
+
             function after(){
-                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();  
+                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
                 fly(dom).clearOpacity();
                 fly(dom).setPositioning(r.pos);
                 st.width = r.width;
-                st.height = r.height;   
+                st.height = r.height;
                 fly(dom).afterFx(o);
             };
 
-            fly(dom).fxanim({opacity : {to : 0.3}}, 
-                NULL, 
-                NULL, 
-                .1, 
-                NULL, 
-                function(){                                 
+            fly(dom).fxanim({opacity : {to : 0.3}},
+                NULL,
+                NULL,
+                .1,
+                NULL,
+                function(){
                     fly(dom).clearOpacity();
-                        (function(){                            
+                        (function(){
                             fly(dom).fxanim({
                                 height : {to : 1},
                                 points : {by : [0, fly(dom).getHeight() * .5]}
-                            }, 
-                            o, 
-                            MOTION, 
-                            0.3, 
-                            'easeIn', 
+                            },
+                            o,
+                            MOTION,
+                            0.3,
+                            'easeIn',
                             after);
                         }).defer(100);
                 });
@@ -3886,7 +3886,7 @@ Ext.Fx = {
         return me;
     },
 
-     
+
     highlight : function(color, o){
         o = getObject(o);
         var me = this,
@@ -3902,20 +3902,20 @@ Ext.Fx = {
             function after(){
                 dom.style[attr] = restore;
                 fly(dom).afterFx(o);
-            }            
+            }
             restore = dom.style[attr];
             a[attr] = {from: color || "ffff9c", to: o.endColor || fly(dom).getColor(attr) || "ffffff"};
             arguments.callee.anim = fly(dom).fxanim(a,
                 o,
                 'color',
                 1,
-                'easeIn', 
+                'easeIn',
                 after);
         });
         return me;
     },
 
-   
+
     frame : function(color, count, o){
         o = getObject(o);
         var me = this,
@@ -3927,7 +3927,7 @@ Ext.Fx = {
             color = color || '#C3DAF9';
             if(color.length == 6){
                 color = '#' + color;
-            }            
+            }
             count = count || 1;
             fly(dom).show();
 
@@ -3937,14 +3937,14 @@ Ext.Fx = {
                     proxy = fly(document.body || document.documentElement).createChild({
                         style:{
                             position : ABSOLUTE,
-                            'z-index': 35000, 
+                            'z-index': 35000,
                             border : '0px solid ' + color
                         }
                     });
                     return proxy.queueFx({}, animFn);
                 };
-            
-            
+
+
             arguments.callee.anim = {
                 isAnimated: true,
                 stop: function() {
@@ -3952,7 +3952,7 @@ Ext.Fx = {
                     proxy.stopFx();
                 }
             };
-            
+
             function animFn(){
                 var scale = Ext.isBorderBox ? 2 : 1;
                 active = proxy.anim({
@@ -3981,8 +3981,8 @@ Ext.Fx = {
         return me;
     },
 
-   
-    pause : function(seconds){        
+
+    pause : function(seconds){
         var dom = this.dom,
             t;
 
@@ -4001,13 +4001,13 @@ Ext.Fx = {
         return this;
     },
 
-   
+
     fadeIn : function(o){
         o = getObject(o);
         var me = this,
             dom = me.dom,
             to = o.endOpacity || 1;
-        
+
         me.queueFx(o, function(){
             fly(dom).setOpacity(0);
             fly(dom).fixDisplay();
@@ -4023,27 +4023,27 @@ Ext.Fx = {
         return me;
     },
 
-   
+
     fadeOut : function(o){
         o = getObject(o);
         var me = this,
             dom = me.dom,
             style = dom.style,
-            to = o.endOpacity || 0;         
-        
-        me.queueFx(o, function(){  
-            arguments.callee.anim = fly(dom).fxanim({ 
+            to = o.endOpacity || 0;
+
+        me.queueFx(o, function(){
+            arguments.callee.anim = fly(dom).fxanim({
                 opacity : {to : to}},
-                o, 
-                NULL, 
-                .5, 
-                EASEOUT, 
+                o,
+                NULL,
+                .5,
+                EASEOUT,
                 function(){
                     if(to == 0){
-                        Ext.Element.data(dom, 'visibilityMode') == Ext.Element.DISPLAY || o.useDisplay ? 
+                        Ext.Element.data(dom, 'visibilityMode') == Ext.Element.DISPLAY || o.useDisplay ?
                             style.display = "none" :
                             style.visibility = HIDDEN;
-                            
+
                         fly(dom).clearOpacity();
                     }
                     fly(dom).afterFx(o);
@@ -4052,7 +4052,7 @@ Ext.Fx = {
         return me;
     },
 
-   
+
     scale : function(w, h, o){
         this.shift(Ext.apply({}, o, {
             width: w,
@@ -4061,33 +4061,33 @@ Ext.Fx = {
         return this;
     },
 
-   
+
     shift : function(o){
         o = getObject(o);
         var dom = this.dom,
             a = {};
-                
+
         this.queueFx(o, function(){
             for (var prop in o) {
-                if (o[prop] != UNDEFINED) {                                                 
-                    a[prop] = {to : o[prop]};                   
+                if (o[prop] != UNDEFINED) {
+                    a[prop] = {to : o[prop]};
                 }
-            } 
-            
+            }
+
             a.width ? a.width.to = fly(dom).adjustWidth(o.width) : a;
-            a.height ? a.height.to = fly(dom).adjustWidth(o.height) : a;   
-            
+            a.height ? a.height.to = fly(dom).adjustWidth(o.height) : a;
+
             if (a.x || a.y || a.xy) {
-                a.points = a.xy || 
+                a.points = a.xy ||
                            {to : [ a.x ? a.x.to : fly(dom).getX(),
-                                   a.y ? a.y.to : fly(dom).getY()]};                  
+                                   a.y ? a.y.to : fly(dom).getY()]};
             }
 
             arguments.callee.anim = fly(dom).fxanim(a,
-                o, 
-                MOTION, 
-                .35, 
-                EASEOUT, 
+                o,
+                MOTION,
+                .35,
+                EASEOUT,
                 function(){
                     fly(dom).afterFx(o);
                 });
@@ -4095,7 +4095,7 @@ Ext.Fx = {
         return this;
     },
 
-    
+
     ghost : function(anchor, o){
         o = getObject(o);
         var me = this,
@@ -4106,24 +4106,24 @@ Ext.Fx = {
             r,
             w,
             h;
-            
+
         anchor = anchor || "b";
 
         me.queueFx(o, function(){
-            
+
             r = fly(dom).getFxRestore();
             w = fly(dom).getWidth();
             h = fly(dom).getHeight();
-            
+
             function after(){
-                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();   
+                o.useDisplay ? fly(dom).setDisplayed(FALSE) : fly(dom).hide();
                 fly(dom).clearOpacity();
                 fly(dom).setPositioning(r.pos);
                 st.width = r.width;
                 st.height = r.height;
                 fly(dom).afterFx(o);
             }
-                
+
             pt.by = fly(dom).switchStatements(anchor.toLowerCase(), function(v1,v2){ return [v1, v2];}, {
                t  : [0, -h],
                l  : [-w, 0],
@@ -4132,9 +4132,9 @@ Ext.Fx = {
                tl : [-w, -h],
                bl : [-w, h],
                br : [w, h],
-               tr : [w, -h] 
+               tr : [w, -h]
             });
-                
+
             arguments.callee.anim = fly(dom).fxanim(a,
                 o,
                 MOTION,
@@ -4144,7 +4144,7 @@ Ext.Fx = {
         return me;
     },
 
-    
+
     syncFx : function(){
         var me = this;
         me.fxDefaults = Ext.apply(me.fxDefaults || {}, {
@@ -4155,7 +4155,7 @@ Ext.Fx = {
         return me;
     },
 
-    
+
     sequenceFx : function(){
         var me = this;
         me.fxDefaults = Ext.apply(me.fxDefaults || {}, {
@@ -4166,20 +4166,20 @@ Ext.Fx = {
         return me;
     },
 
-    
-    nextFx : function(){        
+
+    nextFx : function(){
         var ef = getQueue(this.dom.id)[0];
         if(ef){
             ef.call(this);
         }
     },
 
-    
+
     hasActiveFx : function(){
         return getQueue(this.dom.id)[0];
     },
 
-    
+
     stopFx : function(finish){
         var me = this,
             id = me.dom.id;
@@ -4187,7 +4187,7 @@ Ext.Fx = {
             var cur = getQueue(id)[0];
             if(cur && cur.anim){
                 if(cur.anim.isAnimated){
-                    setQueue(id, [cur]); 
+                    setQueue(id, [cur]);
                     cur.anim.stop(finish !== undefined ? finish : TRUE);
                 }else{
                     setQueue(id, []);
@@ -4197,7 +4197,7 @@ Ext.Fx = {
         return me;
     },
 
-    
+
     beforeFx : function(o){
         if(this.hasActiveFx() && !o.concurrent){
            if(o.stopFx){
@@ -4209,13 +4209,13 @@ Ext.Fx = {
         return TRUE;
     },
 
-    
+
     hasFxBlock : function(){
         var q = getQueue(this.dom.id);
         return q && q[0] && q[0].block;
     },
 
-    
+
     queueFx : function(o, fn){
         var me = fly(this.dom);
         if(!me.hasFxBlock()){
@@ -4234,12 +4234,12 @@ Ext.Fx = {
         return me;
     },
 
-    
-    fxWrap : function(pos, o, vis){ 
+
+    fxWrap : function(pos, o, vis){
         var dom = this.dom,
             wrap,
             wrapXY;
-        if(!o.wrap || !(wrap = Ext.getDom(o.wrap))){            
+        if(!o.wrap || !(wrap = Ext.getDom(o.wrap))){
             if(o.fixPosition){
                 wrapXY = fly(dom).getXY();
             }
@@ -4260,30 +4260,30 @@ Ext.Fx = {
         return wrap;
     },
 
-    
-    fxUnwrap : function(wrap, pos, o){      
+
+    fxUnwrap : function(wrap, pos, o){
         var dom = this.dom;
         fly(dom).clearPositioning();
         fly(dom).setPositioning(pos);
         if(!o.wrap){
             var pn = fly(wrap).dom.parentNode;
-            pn.insertBefore(dom, wrap); 
+            pn.insertBefore(dom, wrap);
             fly(wrap).remove();
         }
     },
 
-    
+
     getFxRestore : function(){
         var st = this.dom.style;
         return {pos: this.getPositioning(), width: st.width, height : st.height};
     },
 
-    
+
     afterFx : function(o){
         var dom = this.dom,
             id = dom.id;
         if(o.afterStyle){
-            fly(dom).setStyle(o.afterStyle);            
+            fly(dom).setStyle(o.afterStyle);
         }
         if(o.afterCls){
             fly(dom).addClass(o.afterCls);
@@ -4300,16 +4300,16 @@ Ext.Fx = {
         }
     },
 
-    
+
     fxanim : function(args, opt, animType, defaultDur, defaultEase, cb){
         animType = animType || 'run';
         opt = opt || {};
         var anim = Ext.lib.Anim[animType](
-                this.dom, 
+                this.dom,
                 args,
                 (opt.duration || defaultDur) || .35,
                 (opt.easing || defaultEase) || EASEOUT,
-                cb,            
+                cb,
                 this
             );
         opt.anim = anim;
@@ -4326,7 +4326,7 @@ Ext.Element.addMethods(Ext.Fx);
 })();
 
 Ext.CompositeElementLite = function(els, root){
-    
+
     this.elements = [];
     this.add(els, root);
     this.el = new Ext.Element.Flyweight();
@@ -4335,25 +4335,25 @@ Ext.CompositeElementLite = function(els, root){
 Ext.CompositeElementLite.prototype = {
     isComposite: true,
 
-    
+
     getElement : function(el){
-        
+
         var e = this.el;
         e.dom = el;
         e.id = el.id;
         return e;
     },
 
-    
+
     transformElement : function(el){
         return Ext.getDom(el);
     },
 
-    
+
     getCount : function(){
         return this.elements.length;
     },
-    
+
     add : function(els, root){
         var me = this,
             elements = me.elements;
@@ -4389,7 +4389,7 @@ Ext.CompositeElementLite.prototype = {
         }
         return me;
     },
-    
+
     item : function(index){
         var me = this,
             el = me.elements[index],
@@ -4401,7 +4401,7 @@ Ext.CompositeElementLite.prototype = {
         return out;
     },
 
-    
+
     addListener : function(eventName, handler, scope, opt){
         var els = this.elements,
             len = els.length,
@@ -4415,7 +4415,7 @@ Ext.CompositeElementLite.prototype = {
         }
         return this;
     },
-    
+
     each : function(fn, scope){
         var me = this,
             els = me.elements,
@@ -4434,7 +4434,7 @@ Ext.CompositeElementLite.prototype = {
         return me;
     },
 
-    
+
     fill : function(els){
         var me = this;
         me.elements = [];
@@ -4442,7 +4442,7 @@ Ext.CompositeElementLite.prototype = {
         return me;
     },
 
-    
+
     filter : function(selector){
         var els = [],
             me = this,
@@ -4456,17 +4456,17 @@ Ext.CompositeElementLite.prototype = {
                 els[els.length] = me.transformElement(el);
             }
         });
-        
+
         me.elements = els;
         return me;
     },
 
-    
+
     indexOf : function(el){
         return this.elements.indexOf(this.transformElement(el));
     },
 
-    
+
     replaceElement : function(el, replacement, domReplace){
         var index = !isNaN(el) ? el : this.indexOf(el),
             d;
@@ -4482,7 +4482,7 @@ Ext.CompositeElementLite.prototype = {
         return this;
     },
 
-    
+
     clear : function(){
         this.elements = [];
     }
@@ -4538,37 +4538,37 @@ Ext.select = Ext.Element.select;
         GET = 'GET',
         WINDOW = window;
 
-    
+
     Ext.data.Connection = function(config){
         Ext.apply(this, config);
         this.addEvents(
-            
+
             BEFOREREQUEST,
-            
+
             REQUESTCOMPLETE,
-            
+
             REQUESTEXCEPTION
         );
         Ext.data.Connection.superclass.constructor.call(this);
     };
 
     Ext.extend(Ext.data.Connection, Ext.util.Observable, {
-        
-        
-        
-        
-        
+
+
+
+
+
         timeout : 30000,
-        
+
         autoAbort:false,
 
-        
+
         disableCaching: true,
 
-        
+
         disableCachingParam: '_dc',
 
-        
+
         request : function(o){
             var me = this;
             if(me.fireEvent(BEFOREREQUEST, me, o)){
@@ -4639,19 +4639,19 @@ Ext.select = Ext.Element.select;
             }
         },
 
-        
+
         isLoading : function(transId){
             return transId ? Ext.lib.Ajax.isCallInProgress(transId) : !! this.transId;
         },
 
-        
+
         abort : function(transId){
             if(transId || this.isLoading()){
                 Ext.lib.Ajax.abort(transId || this.transId);
             }
         },
 
-        
+
         handleResponse : function(response){
             this.transId = false;
             var options = response.argument.options;
@@ -4665,7 +4665,7 @@ Ext.select = Ext.Element.select;
             }
         },
 
-        
+
         handleFailure : function(response, e){
             this.transId = false;
             var options = response.argument.options;
@@ -4679,7 +4679,7 @@ Ext.select = Ext.Element.select;
             }
         },
 
-        
+
         doFormUpload : function(o, ps, url){
             var id = Ext.id(),
                 doc = document,
@@ -4696,17 +4696,17 @@ Ext.select = Ext.Element.select;
                     action: form.action
                 };
 
-            
+
             Ext.fly(frame).set({
                 id: id,
                 name: id,
                 cls: 'x-hidden',
                 src: Ext.SSL_SECURE_URL
-            }); 
+            });
 
             doc.body.appendChild(frame);
 
-            
+
             if(Ext.isIE){
                document.frames[id].name = id;
             }
@@ -4720,7 +4720,7 @@ Ext.select = Ext.Element.select;
                 action: url || buf.action
             });
 
-            
+
             Ext.iterate(Ext.urlDecode(ps, false), function(k, v){
                 hd = doc.createElement('input');
                 Ext.fly(hd).set({
@@ -4734,7 +4734,7 @@ Ext.select = Ext.Element.select;
 
             function cb(){
                 var me = this,
-                    
+
                     r = {responseText : '',
                          responseXML : null,
                          argument : o.argument},
@@ -4745,13 +4745,13 @@ Ext.select = Ext.Element.select;
                     doc = frame.contentWindow.document || frame.contentDocument || WINDOW.frames[id].document;
                     if(doc){
                         if(doc.body){
-                            if(/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)){ 
+                            if(/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)){
                                 r.responseText = firstChild.value;
                             }else{
                                 r.responseText = doc.body.innerHTML;
                             }
                         }
-                        
+
                         r.responseXML = doc.XMLDocument || doc;
                     }
                 }
@@ -4788,26 +4788,26 @@ Ext.select = Ext.Element.select;
 
 
 Ext.Ajax = new Ext.data.Connection({
-    
-    
-    
-    
-    
-    
-
-    
-
-    
-    
-    
-    
-    
-    
-
-    
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     autoAbort : false,
 
-    
+
     serializeForm : function(form){
         return Ext.lib.Ajax.serializeForm(form);
     }
@@ -4822,7 +4822,7 @@ Ext.util.JSON = new (function(){
                 if (useNative === null) {
                     useNative = Ext.USE_NATIVE_JSON && window.JSON && JSON.toString() == '[object JSON]';
                 }
-        
+
                 return useNative;
             };
         }(),
@@ -4830,7 +4830,7 @@ Ext.util.JSON = new (function(){
             return n < 10 ? "0" + n : n;
         },
         doDecode = function(json){
-            return json ? eval("(" + json + ")") : "";    
+            return json ? eval("(" + json + ")") : "";
         },
         doEncode = function(o){
             if(!Ext.isDefined(o) || o === null){
@@ -4842,14 +4842,14 @@ Ext.util.JSON = new (function(){
             }else if(Ext.isString(o)){
                 return encodeString(o);
             }else if(typeof o == "number"){
-                
+
                 return isFinite(o) ? String(o) : "null";
             }else if(Ext.isBoolean(o)){
                 return String(o);
             }else {
                 var a = ["{"], b, i, v;
                 for (i in o) {
-                    
+
                     if(!o.getElementsByTagName){
                         if(!useHasOwn || o.hasOwnProperty(i)) {
                             v = o[i];
@@ -4871,7 +4871,7 @@ Ext.util.JSON = new (function(){
                 }
                 a.push("}");
                 return a.join("");
-            }    
+            }
         },
         m = {
             "\b": '\\b',
@@ -4918,7 +4918,7 @@ Ext.util.JSON = new (function(){
                 return a.join("");
         };
 
-    
+
     this.encodeDate = function(o){
         return '"' + o.getFullYear() + "-" +
                 pad(o.getMonth() + 1) + "-" +
@@ -4928,12 +4928,12 @@ Ext.util.JSON = new (function(){
                 pad(o.getSeconds()) + '"';
     };
 
-    
+
     this.encode = function() {
         var ec;
         return function(o) {
             if (!ec) {
-                
+
                 ec = isNative() ? JSON.stringify : doEncode;
             }
             return ec(o);
@@ -4941,12 +4941,12 @@ Ext.util.JSON = new (function(){
     }();
 
 
-    
+
     this.decode = function() {
         var dc;
         return function(json) {
             if (!dc) {
-                
+
                 dc = isNative() ? JSON.parse : doDecode;
             }
             return dc(json);
@@ -4971,7 +4971,7 @@ Ext.EventManager = function(){
         DOMCONTENTLOADED = "DOMContentLoaded",
         COMPLETE = 'complete',
         propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,
-        
+
         specialElCache = [];
 
      function getId(el){
@@ -4983,7 +4983,7 @@ Ext.EventManager = function(){
 
         if (el) {
             if (el.getElementById || el.navigator) {
-                
+
                 for(; i < len; ++i){
                     o = specialElCache[i];
                     if(o.el === el){
@@ -4992,7 +4992,7 @@ Ext.EventManager = function(){
                     }
                 }
                 if(!id){
-                    
+
                     id = Ext.id(el);
                     specialElCache.push({
                         id: id,
@@ -5013,7 +5013,7 @@ Ext.EventManager = function(){
         return id;
      }
 
-    
+
     function addListener(el, ename, fn, task, wrap, scope){
         el = Ext.getDom(el);
         var id = getId(el),
@@ -5023,13 +5023,13 @@ Ext.EventManager = function(){
         wfn = E.on(el, ename, wrap);
         es[ename] = es[ename] || [];
 
-        
+
         es[ename].push([fn, wrap, scope, wfn, task]);
 
-        
-        
 
-        
+
+
+
         if(el.addEventListener && ename == "mousewheel"){
             var args = ["DOMMouseScroll", wrap, false];
             el.addEventListener.apply(el, args);
@@ -5038,14 +5038,14 @@ Ext.EventManager = function(){
             });
         }
 
-        
+
         if(el == DOC && ename == "mousedown"){
             Ext.EventManager.stoppedMouseDownEvent.addListener(wrap);
         }
     }
 
     function doScrollChk(){
-        
+
         if(window != top){
             return false;
         }
@@ -5059,7 +5059,7 @@ Ext.EventManager = function(){
         fireDocReady();
         return true;
     }
-    
+
     function checkReadyState(e){
 
         if(Ext.isIE9m && doScrollChk()){
@@ -5091,7 +5091,7 @@ Ext.EventManager = function(){
 
     function fireDocReady(e){
         if(!docReadyState){
-            docReadyState = true; 
+            docReadyState = true;
 
             if(docReadyProcId){
                 clearTimeout(docReadyProcId);
@@ -5099,7 +5099,7 @@ Ext.EventManager = function(){
             if(DETECT_NATIVE) {
                 DOC.removeEventListener(DOMCONTENTLOADED, fireDocReady, false);
             }
-            if(Ext.isIE9m && checkReadyState.bindIE){  
+            if(Ext.isIE9m && checkReadyState.bindIE){
                 DOC.detachEvent('onreadystatechange', checkReadyState);
             }
             E.un(WINDOW, "load", arguments.callee);
@@ -5117,27 +5117,27 @@ Ext.EventManager = function(){
         if (DETECT_NATIVE) {
             DOC.addEventListener(DOMCONTENTLOADED, fireDocReady, false);
         }
-        
+
         if (Ext.isIE9m){
-            
-            
+
+
             if(!checkReadyState()){
                 checkReadyState.bindIE = true;
                 DOC.attachEvent('onreadystatechange', checkReadyState);
             }
 
         }else if(Ext.isOpera ){
-            
 
-            
+
+
             (DOC.readyState == COMPLETE && checkStyleSheets()) ||
                 DOC.addEventListener(DOMCONTENTLOADED, OperaDOMContentLoaded, false);
 
         }else if (Ext.isWebKit){
-            
+
             checkReadyState();
         }
-        
+
         E.on(WINDOW, "load", fireDocReady);
     }
 
@@ -5152,7 +5152,7 @@ Ext.EventManager = function(){
 
     function createBuffered(h, o, task){
         return function(e){
-            
+
             task.delay(o.buffer, h, null, [new Ext.EventObjectImpl(e)]);
         };
     }
@@ -5186,7 +5186,7 @@ Ext.EventManager = function(){
             throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.';
         }
         function h(e){
-            
+
             if(!Ext){
                 return;
             }
@@ -5233,7 +5233,7 @@ Ext.EventManager = function(){
     }
 
     var pub = {
-        
+
         addListener : function(element, eventName, fn, scope, options){
             if(typeof eventName == 'object'){
                 var o = eventName, e, val;
@@ -5241,10 +5241,10 @@ Ext.EventManager = function(){
                     val = o[e];
                     if(!propRe.test(e)){
                         if(Ext.isFunction(val)){
-                            
+
                             listen(element, e, o, val, o.scope);
                         }else{
-                            
+
                             listen(element, e, val);
                         }
                     }
@@ -5254,7 +5254,7 @@ Ext.EventManager = function(){
             }
         },
 
-        
+
         removeListener : function(el, eventName, fn, scope){
             el = Ext.getDom(el);
             var id = getId(el),
@@ -5263,7 +5263,7 @@ Ext.EventManager = function(){
 
             for (i = 0, len = f.length; i < len; i++) {
 
-                
+
                 if (Ext.isArray(fnc = f[i]) && fnc[0] == fn && (!scope || fnc[2] == scope)) {
                     if(fnc[4]) {
                         fnc[4].cancel();
@@ -5278,12 +5278,12 @@ Ext.EventManager = function(){
                     wrap = fnc[1];
                     E.un(el, eventName, E.extAdapter ? fnc[3] : wrap);
 
-                    
+
                     if(wrap && el.addEventListener && eventName == "mousewheel"){
                         el.removeEventListener("DOMMouseScroll", wrap, false);
                     }
 
-                    
+
                     if(wrap && el == DOC && eventName == "mousedown"){
                         Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
                     }
@@ -5301,7 +5301,7 @@ Ext.EventManager = function(){
             }
         },
 
-        
+
         removeAll : function(el){
             el = Ext.getDom(el);
             var id = getId(el),
@@ -5312,7 +5312,7 @@ Ext.EventManager = function(){
             for(ename in es){
                 if(es.hasOwnProperty(ename)){
                     f = es[ename];
-                    
+
                     for (i = 0, len = f.length; i < len; i++) {
                         fn = f[i];
                         if(fn[4]) {
@@ -5327,12 +5327,12 @@ Ext.EventManager = function(){
                         wrap =  fn[1];
                         E.un(el, ename, E.extAdapter ? fn[3] : wrap);
 
-                        
+
                         if(el.addEventListener && wrap && ename == "mousewheel"){
                             el.removeEventListener("DOMMouseScroll", wrap, false);
                         }
 
-                        
+
                         if(wrap && el == DOC &&  ename == "mousedown"){
                             Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
                         }
@@ -5356,14 +5356,14 @@ Ext.EventManager = function(){
                 return null;
             }
         },
-        
+
         removeFromSpecialCache: function(o) {
             var i = 0,
                 len = specialElCache.length;
-                
+
             for (; i < len; ++i) {
                 if (specialElCache[i].el == o) {
-                    specialElCache.splice(i, 1); 
+                    specialElCache.splice(i, 1);
                 }
             }
         },
@@ -5399,7 +5399,7 @@ Ext.EventManager = function(){
             delete Ext.elCache;
             delete Ext.Element._flyweights;
 
-            
+
             var c,
                 conn,
                 tid,
@@ -5412,9 +5412,9 @@ Ext.EventManager = function(){
                 }
             }
         },
-        
+
         onDocumentReady : function(fn, scope, options){
-            if (Ext.isReady) { 
+            if (Ext.isReady) {
                 docReadyEvent || (docReadyEvent = new Ext.util.Event());
                 docReadyEvent.addListener(fn, scope, options);
                 docReadyEvent.fire();
@@ -5429,12 +5429,12 @@ Ext.EventManager = function(){
             }
         },
 
-        
+
         fireDocReady  : fireDocReady
     };
-     
+
     pub.on = pub.addListener;
-    
+
     pub.un = pub.removeListener;
 
     pub.stoppedMouseDownEvent = new Ext.util.Event();
@@ -5447,16 +5447,16 @@ Ext.onReady = Ext.EventManager.onDocumentReady;
 
 (function(){
     var initExtCss = function() {
-        
+
         var bd = document.body || document.getElementsByTagName('body')[0];
         if (!bd) {
             return false;
         }
 
         var cls = [];
-        
+
         if (Ext.isIE) {
-            
+
             if (!Ext.isIE10p) {
                 cls.push('ext-ie');
             }
@@ -5472,7 +5472,7 @@ Ext.onReady = Ext.EventManager.onDocumentReady;
                 cls.push('ext-ie10');
             }
         }
-        
+
         if (Ext.isGecko) {
             if (Ext.isGecko2) {
                 cls.push('ext-gecko2');
@@ -5480,11 +5480,11 @@ Ext.onReady = Ext.EventManager.onDocumentReady;
                 cls.push('ext-gecko3');
             }
         }
-        
+
         if (Ext.isOpera) {
             cls.push('ext-opera');
         }
-        
+
         if (Ext.isWebKit) {
             cls.push('ext-webkit');
         }
@@ -5502,7 +5502,7 @@ Ext.onReady = Ext.EventManager.onDocumentReady;
             cls.push("ext-linux");
         }
 
-        
+
         if (Ext.isStrict || Ext.isBorderBox) {
             var p = bd.parentNode;
             if (p) {
@@ -5515,8 +5515,8 @@ Ext.onReady = Ext.EventManager.onDocumentReady;
                 Ext.fly(p, '_internal').addClass(((Ext.isStrict && Ext.isIE ) || (!Ext.enableForcedBoxModel && !Ext.isIE)) ? ' ext-strict' : ' ext-border-box');
             }
         }
-        
-        
+
+
         if (Ext.enableForcedBoxModel && !Ext.isIE) {
             Ext.isForcedBorderBox = true;
             cls.push("ext-forced-border-box");
@@ -5533,15 +5533,15 @@ Ext.onReady = Ext.EventManager.onDocumentReady;
 
 
 (function(){
-    
+
     var supports = Ext.apply(Ext.supports, {
-        
+
         correctRightMargin: true,
 
-        
+
         correctTransparentColor: true,
 
-        
+
         cssFloat: true
     });
 
@@ -5579,20 +5579,20 @@ Ext.onReady = Ext.EventManager.onDocumentReady;
 Ext.EventObject = function(){
     var E = Ext.lib.Event,
         clickRe = /(dbl)?click/,
-        
+
         safariKeys = {
-            3 : 13, 
-            63234 : 37, 
-            63235 : 39, 
-            63232 : 38, 
-            63233 : 40, 
-            63276 : 33, 
-            63277 : 34, 
-            63272 : 46, 
-            63273 : 36, 
-            63275 : 35  
-        },
-        
+            3 : 13,
+            63234 : 37,
+            63235 : 39,
+            63232 : 38,
+            63233 : 40,
+            63276 : 33,
+            63277 : 34,
+            63272 : 46,
+            63273 : 36,
+            63275 : 35
+        },
+
         btnMap = Ext.isIE ? {1:0,4:1,2:2} : {0:0,1:1,2:2};
 
     Ext.EventObjectImpl = function(e){
@@ -5602,30 +5602,30 @@ Ext.EventObject = function(){
     };
 
     Ext.EventObjectImpl.prototype = {
-           
+
         setEvent : function(e){
             var me = this;
-            if(e == me || (e && e.browserEvent)){ 
+            if(e == me || (e && e.browserEvent)){
                 return e;
             }
             me.browserEvent = e;
             if(e){
-                
+
                 me.button = e.button ? btnMap[e.button] : (e.which ? e.which - 1 : -1);
                 if(clickRe.test(e.type) && me.button == -1){
                     me.button = 0;
                 }
                 me.type = e.type;
                 me.shiftKey = e.shiftKey;
-                
+
                 me.ctrlKey = e.ctrlKey || e.metaKey || false;
                 me.altKey = e.altKey;
-                
+
                 me.keyCode = e.keyCode;
                 me.charCode = e.charCode;
-                
+
                 me.target = E.getTarget(e);
-                
+
                 me.xy = E.getXY(e);
             }else{
                 me.button = -1;
@@ -5640,7 +5640,7 @@ Ext.EventObject = function(){
             return me;
         },
 
-        
+
         stopEvent : function(){
             var me = this;
             if(me.browserEvent){
@@ -5651,14 +5651,14 @@ Ext.EventObject = function(){
             }
         },
 
-        
+
         preventDefault : function(){
             if(this.browserEvent){
                 E.preventDefault(this.browserEvent);
             }
         },
 
-        
+
         stopPropagation : function(){
             var me = this;
             if(me.browserEvent){
@@ -5669,59 +5669,59 @@ Ext.EventObject = function(){
             }
         },
 
-        
+
         getCharCode : function(){
             return this.charCode || this.keyCode;
         },
 
-        
+
         getKey : function(){
             return this.normalizeKey(this.keyCode || this.charCode);
         },
 
-        
+
         normalizeKey: function(k){
             return Ext.isSafari ? (safariKeys[k] || k) : k;
         },
 
-        
+
         getPageX : function(){
             return this.xy[0];
         },
 
-        
+
         getPageY : function(){
             return this.xy[1];
         },
 
-        
+
         getXY : function(){
             return this.xy;
         },
 
-        
+
         getTarget : function(selector, maxDepth, returnEl){
             return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : (returnEl ? Ext.get(this.target) : this.target);
         },
 
-        
+
         getRelatedTarget : function(){
             return this.browserEvent ? E.getRelatedTarget(this.browserEvent) : null;
         },
 
-        
+
         getWheelDelta : function(){
             var e = this.browserEvent;
             var delta = 0;
-            if(e.wheelDelta){ 
+            if(e.wheelDelta){
                 delta = e.wheelDelta/120;
-            }else if(e.detail){ 
+            }else if(e.detail){
                 delta = -e.detail/3;
             }
             return delta;
         },
 
-        
+
         within : function(el, related, allowEl){
             if(el){
                 var t = this[related ? "getRelatedTarget" : "getTarget"]();
@@ -5734,7 +5734,7 @@ Ext.EventObject = function(){
     return new Ext.EventObjectImpl();
 }();
 Ext.Loader = Ext.apply({}, {
-    
+
     load: function(fileList, callback, scope, preserveOrder) {
         var scope       = scope || this,
             head        = document.getElementsByTagName("head")[0],
@@ -5742,19 +5742,19 @@ Ext.Loader = Ext.apply({}, {
             numFiles    = fileList.length,
             loadedFiles = 0,
             me          = this;
-        
-        
+
+
         var loadFileIndex = function(index) {
             head.appendChild(
                 me.buildScriptTag(fileList[index], onFileLoaded)
             );
         };
-        
-        
+
+
         var onFileLoaded = function() {
             loadedFiles ++;
-            
-            
+
+
             if (numFiles == loadedFiles && typeof callback == 'function') {
                 callback.call(scope);
             } else {
@@ -5763,28 +5763,28 @@ Ext.Loader = Ext.apply({}, {
                 }
             }
         };
-        
+
         if (preserveOrder === true) {
             loadFileIndex.call(this, 0);
         } else {
-            
+
             Ext.each(fileList, function(file, index) {
                 fragment.appendChild(
                     this.buildScriptTag(file, onFileLoaded)
-                );  
+                );
             }, this);
-            
+
             head.appendChild(fragment);
         }
     },
-    
-    
+
+
     buildScriptTag: function(filename, callback) {
         var script  = document.createElement('script');
         script.type = "text/javascript";
         script.src  = filename;
-        
-        
+
+
         if (script.readyState) {
             script.onreadystatechange = function() {
                 if (script.readyState == "loaded" || script.readyState == "complete") {
@@ -5794,16 +5794,16 @@ Ext.Loader = Ext.apply({}, {
             };
         } else {
             script.onload = callback;
-        }    
-        
+        }
+
         return script;
     }
 });
 
 
 Ext.ns("Ext.grid", "Ext.list", "Ext.dd", "Ext.tree", "Ext.form", "Ext.menu",
-       "Ext.state", "Ext.layout.boxOverflow", "Ext.app", "Ext.ux", "Ext.chart", "Ext.direct", "Ext.slider");
-    
+       "Ext.state", "Ext.layout.boxOverflow", "Ext.app", "Ext.ux", "Ext.direct", "Ext.slider");
+
 
 Ext.apply(Ext, function(){
     var E = Ext,
@@ -5811,10 +5811,10 @@ Ext.apply(Ext, function(){
         scrollWidth = null;
 
     return {
-        
+
         emptyFn : function(){},
 
-        
+
         BLANK_IMAGE_URL : Ext.isIE6 || Ext.isIE7 || Ext.isAir ?
                             'http:/' + '/www.extjs.com/s.gif' :
                             'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
@@ -5823,23 +5823,23 @@ Ext.apply(Ext, function(){
             return Ext.extend(supr, fn(supr.prototype));
         },
 
-        
+
         getDoc : function(){
             return Ext.get(document);
         },
 
-        
+
         num : function(v, defaultValue){
             v = Number(Ext.isEmpty(v) || Ext.isArray(v) || typeof v == 'boolean' || (typeof v == 'string' && v.trim().length == 0) ? NaN : v);
             return isNaN(v) ? defaultValue : v;
         },
 
-        
+
         value : function(v, defaultValue, allowBlank){
             return Ext.isEmpty(v, allowBlank) ? defaultValue : v;
         },
 
-        
+
         escapeRe : function(s) {
             return s.replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1");
         },
@@ -5848,19 +5848,19 @@ Ext.apply(Ext, function(){
             o[name] = o[name].createSequence(fn, scope);
         },
 
-        
+
         addBehaviors : function(o){
             if(!Ext.isReady){
                 Ext.onReady(function(){
                     Ext.addBehaviors(o);
                 });
             } else {
-                var cache = {}, 
+                var cache = {},
                     parts,
                     b,
                     s;
                 for (b in o) {
-                    if ((parts = b.split('@'))[1]) { 
+                    if ((parts = b.split('@'))[1]) {
                         s = parts[0];
                         if(!cache[s]){
                             cache[s] = Ext.select(s);
@@ -5872,28 +5872,28 @@ Ext.apply(Ext, function(){
             }
         },
 
-        
+
         getScrollBarWidth: function(force){
             if(!Ext.isReady){
                 return 0;
             }
 
             if(force === true || scrollWidth === null){
-                    
+
                 var div = Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'),
                     child = div.child('div', true);
                 var w1 = child.offsetWidth;
                 div.setStyle('overflow', (Ext.isWebKit || Ext.isGecko) ? 'auto' : 'scroll');
                 var w2 = child.offsetWidth;
                 div.remove();
-                
+
                 scrollWidth = w1 - w2 + 2;
             }
             return scrollWidth;
         },
 
 
-        
+
         combine : function(){
             var as = arguments, l = as.length, r = [];
             for(var i = 0; i < l; i++){
@@ -5909,7 +5909,7 @@ Ext.apply(Ext, function(){
             return r;
         },
 
-        
+
         copyTo : function(dest, source, names){
             if(typeof names == 'string'){
                 names = names.split(/[,;\s]/);
@@ -5922,7 +5922,7 @@ Ext.apply(Ext, function(){
             return dest;
         },
 
-        
+
         destroy : function(){
             Ext.each(arguments, function(arg){
                 if(arg){
@@ -5937,7 +5937,7 @@ Ext.apply(Ext, function(){
             }, this);
         },
 
-        
+
         destroyMembers : function(o, arg1, arg2, etc){
             for(var i = 1, a = arguments, len = a.length; i < len; i++) {
                 Ext.destroy(o[a[i]]);
@@ -5945,7 +5945,7 @@ Ext.apply(Ext, function(){
             }
         },
 
-        
+
         clean : function(arr){
             var ret = [];
             Ext.each(arr, function(v){
@@ -5956,7 +5956,7 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         unique : function(arr){
             var ret = [],
                 collect = {};
@@ -5970,7 +5970,7 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         flatten : function(arr){
             var worker = [];
             function rFlatten(a) {
@@ -5986,7 +5986,7 @@ Ext.apply(Ext, function(){
             return rFlatten(arr);
         },
 
-        
+
         min : function(arr, comp){
             var ret = arr[0];
             comp = comp || function(a,b){ return a < b ? -1 : 1; };
@@ -5996,7 +5996,7 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         max : function(arr, comp){
             var ret = arr[0];
             comp = comp || function(a,b){ return a > b ? 1 : -1; };
@@ -6006,12 +6006,12 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         mean : function(arr){
            return arr.length > 0 ? Ext.sum(arr) / arr.length : undefined;
         },
 
-        
+
         sum : function(arr){
            var ret = 0;
            Ext.each(arr, function(v) {
@@ -6020,7 +6020,7 @@ Ext.apply(Ext, function(){
            return ret;
         },
 
-        
+
         partition : function(arr, truth){
             var ret = [[],[]];
             Ext.each(arr, function(v, i, a) {
@@ -6029,7 +6029,7 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         invoke : function(arr, methodName){
             var ret = [],
                 args = Array.prototype.slice.call(arguments, 2);
@@ -6043,7 +6043,7 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         pluck : function(arr, prop){
             var ret = [];
             Ext.each(arr, function(v) {
@@ -6052,7 +6052,7 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         zip : function(){
             var parts = Ext.partition(arguments, function( val ){ return typeof val != 'function'; }),
                 arrs = parts[0],
@@ -6073,16 +6073,16 @@ Ext.apply(Ext, function(){
             return ret;
         },
 
-        
+
         getCmp : function(id){
             return Ext.ComponentMgr.get(id);
         },
 
-        
+
         useShims: E.isIE6 || (E.isMac && E.isGecko2),
 
-        
-        
+
+
         type : function(o){
             if(o === undefined || o === null){
                 return false;
@@ -6114,7 +6114,7 @@ Ext.apply(Ext, function(){
             o[name] = o[name].createInterceptor(fn, scope);
         },
 
-        
+
         callback : function(cb, scope, args, delay){
             if(typeof cb == 'function'){
                 if(delay){
@@ -6129,7 +6129,7 @@ Ext.apply(Ext, function(){
 
 
 Ext.apply(Function.prototype, {
-    
+
     createSequence : function(fcn, scope){
         var method = this;
         return (typeof fcn != 'function') ?
@@ -6146,12 +6146,12 @@ Ext.apply(Function.prototype, {
 
 Ext.applyIf(String, {
 
-    
+
     escape : function(string) {
         return string.replace(/('|\\)/g, "\\$1");
     },
 
-    
+
     leftPad : function (val, size, ch) {
         var result = String(val);
         if(!ch) {
@@ -6184,7 +6184,7 @@ Date.prototype.getElapsed = function(date) {
 
 
 Ext.applyIf(Number.prototype, {
-    
+
     constrain : function(min, max){
         return Math.min(Math.max(this, min), max);
     }
@@ -6227,7 +6227,7 @@ Ext.lib.Dom.getRegion = function(el) {
                 return new Ext.lib.Region(t, r, b, l);
             }
         },
-        
+
         union : function(region) {
                var me = this,
                t = Math.min(me.top, region.top),
@@ -6286,7 +6286,7 @@ function(){
         beforeend = 'beforeend',
         confRe = /tag|children|cn|html$/i;
 
-    
+
     function doInsert(el, o, returnElement, pos, sibling, append){
         el = Ext.getDom(el);
         var newNode;
@@ -6303,8 +6303,8 @@ function(){
         return returnElement ? Ext.get(newNode, true) : newNode;
     }
 
-    
-    
+
+
     function createDom(o, parentNode){
         var el,
             doc = document,
@@ -6313,16 +6313,16 @@ function(){
             val,
             cn;
 
-        if (Ext.isArray(o)) {                       
-            el = doc.createDocumentFragment(); 
+        if (Ext.isArray(o)) {
+            el = doc.createDocumentFragment();
             for (var i = 0, l = o.length; i < l; i++) {
                 createDom(o[i], el);
             }
-        } else if (typeof o == 'string') {         
+        } else if (typeof o == 'string') {
             el = doc.createTextNode(o);
         } else {
             el = doc.createElement( o.tag || 'div' );
-            useSet = !!el.setAttribute; 
+            useSet = !!el.setAttribute;
             for (var attr in o) {
                 if(!confRe.test(attr)){
                     val = o[attr];
@@ -6352,47 +6352,47 @@ function(){
     }
 
     pub = {
-        
+
         createTemplate : function(o){
             var html = Ext.DomHelper.createHtml(o);
             return new Ext.Template(html);
         },
 
-        
+
         useDom : false,
 
-        
+
         insertBefore : function(el, o, returnElement){
             return doInsert(el, o, returnElement, beforebegin);
         },
 
-        
+
         insertAfter : function(el, o, returnElement){
             return doInsert(el, o, returnElement, afterend, 'nextSibling');
         },
 
-        
+
         insertFirst : function(el, o, returnElement){
             return doInsert(el, o, returnElement, afterbegin, 'firstChild');
         },
 
-        
+
         append: function(el, o, returnElement){
             return doInsert(el, o, returnElement, beforeend, '', true);
         },
 
-        
+
         createDom: createDom
     };
     return pub;
 }());
 
 Ext.apply(Ext.Template.prototype, {
-    
+
     disableFormats : false,
-    
 
-    
+
+
     re : /\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
     argsRe : /^\s*['"](.*)["']\s*$/,
     compileARe : /\\/g,
@@ -6520,7 +6520,7 @@ sayHiToFriend('Brian'); // alerts "Hi, Brian"
      * <b>If omitted, defaults to the scope in which the original function is called or the browser window.</b>
      * @return {Function} The new function
      */
-    createInterceptor: function(origFn, newFn, scope) { 
+    createInterceptor: function(origFn, newFn, scope) {
         var method = origFn;
         if (!Ext.isFunction(newFn)) {
             return origFn;
@@ -6634,7 +6634,7 @@ Ext.defer(function(){
      * Create a combined function call sequence of the original function + the passed function.
      * The resulting function returns the results of the original function.
      * The passed fcn is called with the parameters of the original function. Example usage:
-     * 
+     *
 
 var sayHi = function(name){
     alert('Hi, ' + name);
@@ -6669,7 +6669,7 @@ sayGoodbye('Fred'); // both alerts show
 };
 
 /**
- * Shorthand for {@link Ext.util.Functions#defer}   
+ * Shorthand for {@link Ext.util.Functions#defer}
  * @param {Function} fn The function to defer.
  * @param {Number} millis The number of milliseconds for the setTimeout call (if less than or equal to 0 the function is executed immediately)
  * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the function is executed.
@@ -6685,7 +6685,7 @@ sayGoodbye('Fred'); // both alerts show
 Ext.defer = Ext.util.Functions.defer;
 
 /**
- * Shorthand for {@link Ext.util.Functions#createInterceptor}   
+ * Shorthand for {@link Ext.util.Functions#createInterceptor}
  * @param {Function} origFn The original function.
  * @param {Function} newFn The function to call before the original
  * @param {Object} scope (optional) The scope (<code><b>this</b></code> reference) in which the passed function is executed.
@@ -6854,12 +6854,12 @@ Ext.apply(Ext.util.Observable.prototype, function(){
          * access the required target more quickly.</p>
          * <p>Example:</p><pre><code>
 Ext.override(Ext.form.Field, {
-    
+
     initComponent : Ext.form.Field.prototype.initComponent.createSequence(function() {
         this.enableBubble('change');
     }),
 
-    
+
     getBubbleTarget : function() {
         if (!this.formPanel) {
             this.formPanel = this.findParentByType('form');
@@ -6875,7 +6875,7 @@ var myForm = new Ext.formPanel({
     }],
     listeners: {
         change: function() {
-            
+
             myForm.header.setStyle('color', 'red');
         }
     }
@@ -6933,9 +6933,9 @@ Ext.apply(Ext.EventManager, function(){
        unload = Ext.EventManager._unload,
        curWidth = 0,
        curHeight = 0,
-       
-       
-       
+
+
+
        useKeydown = Ext.isWebKit ?
                    Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1]) >= 525 :
                    !((Ext.isGecko && !Ext.isWindows) || Ext.isOpera);
@@ -6943,21 +6943,21 @@ Ext.apply(Ext.EventManager, function(){
    return {
        _unload: function(){
            Ext.EventManager.un(window, "resize", this.fireWindowResize, this);
-           unload.call(Ext.EventManager);    
+           unload.call(Ext.EventManager);
        },
-       
-       
+
+
        doResizeEvent: function(){
            var h = D.getViewHeight(),
                w = D.getViewWidth();
 
-            
+
             if(curHeight != h || curWidth != w){
                resizeEvent.fire(curWidth = w, curHeight = h);
             }
        },
 
-       
+
        onWindowResize : function(fn, scope, options){
            if(!resizeEvent){
                resizeEvent = new Ext.util.Event();
@@ -6967,14 +6967,14 @@ Ext.apply(Ext.EventManager, function(){
            resizeEvent.addListener(fn, scope, options);
        },
 
-       
+
        fireWindowResize : function(){
            if(resizeEvent){
                resizeTask.delay(100);
            }
        },
 
-       
+
        onTextResize : function(fn, scope, options){
            if(!textEvent){
                textEvent = new Ext.util.Event();
@@ -6992,33 +6992,33 @@ Ext.apply(Ext.EventManager, function(){
            textEvent.addListener(fn, scope, options);
        },
 
-       
+
        removeResizeListener : function(fn, scope){
            if(resizeEvent){
                resizeEvent.removeListener(fn, scope);
            }
        },
 
-       
+
        fireResize : function(){
            if(resizeEvent){
                resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
            }
        },
 
-        
+
        textResizeInterval : 50,
 
-       
+
        ieDeferSrc : false,
-       
-       
+
+
        getKeyEvent : function(){
            return useKeydown ? 'keydown' : 'keypress';
        },
 
-       
-       
+
+
        useKeydown: useKeydown
    };
 }());
@@ -7027,189 +7027,189 @@ Ext.EventManager.on = Ext.EventManager.addListener;
 
 
 Ext.apply(Ext.EventObjectImpl.prototype, {
-   
+
    BACKSPACE: 8,
-   
+
    TAB: 9,
-   
+
    NUM_CENTER: 12,
-   
+
    ENTER: 13,
-   
+
    RETURN: 13,
-   
+
    SHIFT: 16,
-   
+
    CTRL: 17,
-   CONTROL : 17, 
-   
+   CONTROL : 17,
+
    ALT: 18,
-   
+
    PAUSE: 19,
-   
+
    CAPS_LOCK: 20,
-   
+
    ESC: 27,
-   
+
    SPACE: 32,
-   
+
    PAGE_UP: 33,
-   PAGEUP : 33, 
-   
+   PAGEUP : 33,
+
    PAGE_DOWN: 34,
-   PAGEDOWN : 34, 
-   
+   PAGEDOWN : 34,
+
    END: 35,
-   
+
    HOME: 36,
-   
+
    LEFT: 37,
-   
+
    UP: 38,
-   
+
    RIGHT: 39,
-   
+
    DOWN: 40,
-   
+
    PRINT_SCREEN: 44,
-   
+
    INSERT: 45,
-   
+
    DELETE: 46,
-   
+
    ZERO: 48,
-   
+
    ONE: 49,
-   
+
    TWO: 50,
-   
+
    THREE: 51,
-   
+
    FOUR: 52,
-   
+
    FIVE: 53,
-   
+
    SIX: 54,
-   
+
    SEVEN: 55,
-   
+
    EIGHT: 56,
-   
+
    NINE: 57,
-   
+
    A: 65,
-   
+
    B: 66,
-   
+
    C: 67,
-   
+
    D: 68,
-   
+
    E: 69,
-   
+
    F: 70,
-   
+
    G: 71,
-   
+
    H: 72,
-   
+
    I: 73,
-   
+
    J: 74,
-   
+
    K: 75,
-   
+
    L: 76,
-   
+
    M: 77,
-   
+
    N: 78,
-   
+
    O: 79,
-   
+
    P: 80,
-   
+
    Q: 81,
-   
+
    R: 82,
-   
+
    S: 83,
-   
+
    T: 84,
-   
+
    U: 85,
-   
+
    V: 86,
-   
+
    W: 87,
-   
+
    X: 88,
-   
+
    Y: 89,
-   
+
    Z: 90,
-   
+
    CONTEXT_MENU: 93,
-   
+
    NUM_ZERO: 96,
-   
+
    NUM_ONE: 97,
-   
+
    NUM_TWO: 98,
-   
+
    NUM_THREE: 99,
-   
+
    NUM_FOUR: 100,
-   
+
    NUM_FIVE: 101,
-   
+
    NUM_SIX: 102,
-   
+
    NUM_SEVEN: 103,
-   
+
    NUM_EIGHT: 104,
-   
+
    NUM_NINE: 105,
-   
+
    NUM_MULTIPLY: 106,
-   
+
    NUM_PLUS: 107,
-   
+
    NUM_MINUS: 109,
-   
+
    NUM_PERIOD: 110,
-   
+
    NUM_DIVISION: 111,
-   
+
    F1: 112,
-   
+
    F2: 113,
-   
+
    F3: 114,
-   
+
    F4: 115,
-   
+
    F5: 116,
-   
+
    F6: 117,
-   
+
    F7: 118,
-   
+
    F8: 119,
-   
+
    F9: 120,
-   
+
    F10: 121,
-   
+
    F11: 122,
-   
+
    F12: 123,
 
-   
+
    isNavKeyPress : function(){
        var me = this,
            k = this.normalizeKey(me.keyCode);
-       return (k >= 33 && k <= 40) ||  
+       return (k >= 33 && k <= 40) ||
        k == me.RETURN ||
        k == me.TAB ||
        k == me.ESC;
@@ -7219,22 +7219,22 @@ Ext.apply(Ext.EventObjectImpl.prototype, {
        var k = this.normalizeKey(this.keyCode);
        return (this.type == 'keypress' && this.ctrlKey) ||
        this.isNavKeyPress() ||
-       (k == this.BACKSPACE) || 
-       (k >= 16 && k <= 20) || 
-       (k >= 44 && k <= 46);   
+       (k == this.BACKSPACE) ||
+       (k >= 16 && k <= 20) ||
+       (k >= 44 && k <= 46);
    },
 
    getPoint : function(){
        return new Ext.lib.Point(this.xy[0], this.xy[1]);
    },
 
-   
+
    hasModifier : function(){
        return ((this.ctrlKey || this.altKey) || this.shiftKey);
    }
 });
 Ext.Element.addMethods({
-    
+
     swallowEvent : function(eventName, preventDefault) {
         var me = this;
         function fn(e) {
@@ -7243,7 +7243,7 @@ Ext.Element.addMethods({
                 e.preventDefault();
             }
         }
-        
+
         if (Ext.isArray(eventName)) {
             Ext.each(eventName, function(e) {
                  me.on(e, fn);
@@ -7254,14 +7254,14 @@ Ext.Element.addMethods({
         return me;
     },
 
-    
+
     relayEvent : function(eventName, observable) {
         this.on(eventName, function(e) {
             observable.fireEvent(eventName, e);
         });
     },
 
-    
+
     clean : function(forceReclean) {
         var me  = this,
             dom = me.dom,
@@ -7281,25 +7281,25 @@ Ext.Element.addMethods({
             }
             n = nx;
         }
-        
+
         Ext.Element.data(dom, 'isCleaned', true);
         return me;
     },
 
-    
+
     load : function() {
         var updateManager = this.getUpdater();
         updateManager.update.apply(updateManager, arguments);
-        
+
         return this;
     },
 
-    
+
     getUpdater : function() {
         return this.updateManager || (this.updateManager = new Ext.Updater(this));
     },
 
-    
+
     update : function(html, loadScripts, callback) {
         if (!this.dom) {
             return this;
@@ -7351,12 +7351,12 @@ Ext.Element.addMethods({
                     }
                 }
             }
-            
+
             el = DOC.getElementById(id);
             if (el) {
                 Ext.removeNode(el);
             }
-            
+
             if (typeof callback == 'function') {
                 callback();
             }
@@ -7365,14 +7365,14 @@ Ext.Element.addMethods({
         return this;
     },
 
-    
+
     removeAllListeners : function() {
         this.removeAnchor();
         Ext.EventManager.removeAll(this.dom);
         return this;
     },
 
-    
+
     createProxy : function(config, renderTo, matchBox) {
         config = (typeof config == 'object') ? config : {tag : "div", cls: config};
 
@@ -7380,7 +7380,7 @@ Ext.Element.addMethods({
             proxy = renderTo ? Ext.DomHelper.append(renderTo, config, true) :
                                Ext.DomHelper.insertBefore(me.dom, config, true);
 
-        if (matchBox && me.setBox && me.getBox) { 
+        if (matchBox && me.setBox && me.getBox) {
            proxy.setBox(me.getBox());
         }
         return proxy;
@@ -7390,18 +7390,18 @@ Ext.Element.addMethods({
 Ext.Element.prototype.getUpdateManager = Ext.Element.prototype.getUpdater;
 
 Ext.Element.addMethods({
-    
+
     getAnchorXY : function(anchor, local, s){
-        
-        
+
+
                anchor = (anchor || "tl").toLowerCase();
         s = s || {};
-        
-        var me = this,        
+
+        var me = this,
                vp = me.dom == document.body || me.dom == document,
                w = s.width || vp ? Ext.lib.Dom.getViewWidth() : me.getWidth(),
-               h = s.height || vp ? Ext.lib.Dom.getViewHeight() : me.getHeight(),                              
-               xy,             
+               h = s.height || vp ? Ext.lib.Dom.getViewHeight() : me.getHeight(),
+               xy,
                r = Math.round,
                o = me.getXY(),
                scroll = me.getScroll(),
@@ -7413,18 +7413,18 @@ Ext.Element.addMethods({
                        l  : [0, r(h * 0.5)],
                        r  : [w, r(h * 0.5)],
                        b  : [r(w * 0.5), h],
-                       tl : [0, 0],    
+                       tl : [0, 0],
                        bl : [0, h],
                        br : [w, h],
                        tr : [w, 0]
                };
-        
-        xy = hash[anchor];     
-        return [xy[0] + extraX, xy[1] + extraY]; 
+
+        xy = hash[anchor];
+        return [xy[0] + extraX, xy[1] + extraY];
     },
 
-    
-    anchorTo : function(el, alignment, offsets, animate, monitorScroll, callback){        
+
+    anchorTo : function(el, alignment, offsets, animate, monitorScroll, callback){
            var me = this,
             dom = me.dom,
             scroll = !Ext.isEmpty(monitorScroll),
@@ -7433,8 +7433,8 @@ Ext.Element.addMethods({
                 Ext.callback(callback, Ext.fly(dom));
             },
             anchor = this.getAnchor();
-            
-        
+
+
         this.removeAnchor();
         Ext.apply(anchor, {
             fn: action,
@@ -7442,20 +7442,20 @@ Ext.Element.addMethods({
         });
 
         Ext.EventManager.onWindowResize(action, null);
-        
+
         if(scroll){
             Ext.EventManager.on(window, 'scroll', action, null,
                 {buffer: !isNaN(monitorScroll) ? monitorScroll : 50});
         }
-        action.call(me); 
+        action.call(me);
         return me;
     },
-    
-    
+
+
     removeAnchor : function(){
         var me = this,
             anchor = this.getAnchor();
-            
+
         if(anchor && anchor.fn){
             Ext.EventManager.removeResizeListener(anchor.fn);
             if(anchor.scroll){
@@ -7465,8 +7465,8 @@ Ext.Element.addMethods({
         }
         return me;
     },
-    
-    
+
+
     getAnchor : function(){
         var data = Ext.Element.data,
             dom = this.dom;
@@ -7474,38 +7474,38 @@ Ext.Element.addMethods({
                 return;
             }
             var anchor = data(dom, '_anchor');
-            
+
         if(!anchor){
             anchor = data(dom, '_anchor', {});
         }
         return anchor;
     },
 
-    
-    getAlignToXY : function(el, p, o){     
+
+    getAlignToXY : function(el, p, o){
         el = Ext.get(el);
-        
+
         if(!el || !el.dom){
             throw "Element.alignToXY with an element that doesn't exist";
         }
-        
+
         o = o || [0,0];
-        p = (!p || p == "?" ? "tl-bl?" : (!(/-/).test(p) && p !== "" ? "tl-" + p : p || "tl-bl")).toLowerCase();       
-                
+        p = (!p || p == "?" ? "tl-bl?" : (!(/-/).test(p) && p !== "" ? "tl-" + p : p || "tl-bl")).toLowerCase();
+
         var me = this,
                d = me.dom,
                a1,
                a2,
                x,
                y,
-               
+
                w,
                h,
                r,
-               dw = Ext.lib.Dom.getViewWidth() -10, 
-               dh = Ext.lib.Dom.getViewHeight()-10, 
+               dw = Ext.lib.Dom.getViewWidth() -10,
+               dh = Ext.lib.Dom.getViewHeight()-10,
                p1y,
-               p1x,            
+               p1x,
                p2y,
                p2x,
                swapY,
@@ -7515,41 +7515,41 @@ Ext.Element.addMethods({
                docBody = doc.body,
                scrollX = (docElement.scrollLeft || docBody.scrollLeft || 0)+5,
                scrollY = (docElement.scrollTop || docBody.scrollTop || 0)+5,
-               c = false, 
-               p1 = "", 
+               c = false,
+               p1 = "",
                p2 = "",
                m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/);
-        
+
         if(!m){
            throw "Element.alignTo with an invalid alignment " + p;
         }
-        
-        p1 = m[1]; 
-        p2 = m[2]; 
+
+        p1 = m[1];
+        p2 = m[2];
         c = !!m[3];
 
-        
-        
+
+
         a1 = me.getAnchorXY(p1, true);
         a2 = el.getAnchorXY(p2, false);
 
         x = a2[0] - a1[0] + o[0];
         y = a2[1] - a1[1] + o[1];
 
-        if(c){    
+        if(c){
               w = me.getWidth();
            h = me.getHeight();
-           r = el.getRegion();       
-           
-           
-           
+           r = el.getRegion();
+
+
+
            p1y = p1.charAt(0);
            p1x = p1.charAt(p1.length-1);
            p2y = p2.charAt(0);
            p2x = p2.charAt(p2.length-1);
            swapY = ((p1y=="t" && p2y=="b") || (p1y=="b" && p2y=="t"));
-           swapX = ((p1x=="r" && p2x=="l") || (p1x=="l" && p2x=="r"));          
-           
+           swapX = ((p1x=="r" && p2x=="l") || (p1x=="l" && p2x=="r"));
+
 
            if (x + w > dw + scrollX) {
                 x = swapX ? r.left-w : dw+scrollX-w;
@@ -7567,20 +7567,20 @@ Ext.Element.addMethods({
         return [x,y];
     },
 
-    
+
     alignTo : function(element, position, offsets, animate){
            var me = this;
         return me.setXY(me.getAlignToXY(element, position, offsets),
                                me.preanim && !!animate ? me.preanim(arguments, 3) : false);
     },
-    
-    
+
+
     adjustForConstraints : function(xy, parent, offsets){
         return this.getConstrainToXY(parent || document, false, offsets, xy) ||  xy;
     },
 
-    
-    getConstrainToXY : function(el, local, offsets, proposedXY){   
+
+    getConstrainToXY : function(el, local, offsets, proposedXY){
            var os = {top:0, left:0, bottom:0, right: 0};
 
         return function(el, local, offsets, proposedXY){
@@ -7614,13 +7614,13 @@ Ext.Element.addMethods({
                 xy = proposedXY || (!local ? this.getXY() : [this.getLeft(true), this.getTop(true)]),
                 x = xy[0], y = xy[1],
                 offset = this.getConstrainOffset(),
-                w = this.dom.offsetWidth + offset, 
+                w = this.dom.offsetWidth + offset,
                 h = this.dom.offsetHeight + offset;
 
-            
+
             var moved = false;
 
-            
+
             if((x + w) > vr){
                 x = vr - w;
                 moved = true;
@@ -7629,7 +7629,7 @@ Ext.Element.addMethods({
                 y = vb - h;
                 moved = true;
             }
-            
+
             if(x < vx){
                 x = vx;
                 moved = true;
@@ -7641,9 +7641,6 @@ Ext.Element.addMethods({
             return moved ? [x, y] : false;
         };
     }(),
-           
-           
-               
 
 
 
@@ -7697,24 +7694,27 @@ Ext.Element.addMethods({
 
 
 
-    
+
+
+
+
     getConstrainOffset : function(){
         return 0;
     },
-    
-    
+
+
     getCenterXY : function(){
         return this.getAlignToXY(document, 'c-c');
     },
 
-    
+
     center : function(centerIn){
-        return this.alignTo(centerIn || document, 'c-c');        
-    }    
+        return this.alignTo(centerIn || document, 'c-c');
+    }
 });
 
 Ext.Element.addMethods({
-    
+
     select : function(selector, unique){
         return Ext.Element.select(selector, unique, this.dom);
     }
@@ -7723,15 +7723,15 @@ Ext.apply(Ext.Element.prototype, function() {
        var GETDOM = Ext.getDom,
                GET = Ext.get,
                DH = Ext.DomHelper;
-       
-       return {        
-               
+
+       return {
+
            insertSibling: function(el, where, returnDom){
                var me = this,
                        rt,
                 isAfter = (where || 'before').toLowerCase() == 'after',
                 insertEl;
-                       
+
                if(Ext.isArray(el)){
                 insertEl = me;
                    Ext.each(el, function(e) {
@@ -7742,9 +7742,9 @@ Ext.apply(Ext.Element.prototype, function() {
                    });
                    return rt;
                }
-                       
+
                el = el || {};
-               
+
             if(el.nodeType || el.dom){
                 rt = me.dom.parentNode.insertBefore(GETDOM(el), isAfter ? me.dom.nextSibling : me.dom);
                 if (!returnDom) {
@@ -7753,7 +7753,7 @@ Ext.apply(Ext.Element.prototype, function() {
             }else{
                 if (isAfter && !me.dom.nextSibling) {
                     rt = DH.append(me.dom.parentNode, el, !returnDom);
-                } else {                    
+                } else {
                     rt = DH[isAfter ? 'insertAfter' : 'insertBefore'](me.dom, el, !returnDom);
                 }
             }
@@ -7769,13 +7769,13 @@ Ext.Element.addMethods(function(){
     var INTERNAL = "_internal",
         pxMatch = /(\d+\.?\d+)px/;
     return {
-        
+
         applyStyles : function(style){
             Ext.DomHelper.applyStyles(this.dom, style);
             return this;
         },
 
-        
+
         getStyles : function(){
             var ret = {};
             Ext.each(arguments, function(v) {
@@ -7785,10 +7785,10 @@ Ext.Element.addMethods(function(){
             return ret;
         },
 
-        
+
         setOverflow : function(v){
             var dom = this.dom;
-            if(v=='auto' && Ext.isMac && Ext.isGecko2){ 
+            if(v=='auto' && Ext.isMac && Ext.isGecko2){
                 dom.style.overflow = 'hidden';
                 (function(){dom.style.overflow = 'auto';}).defer(1);
             }else{
@@ -7796,18 +7796,18 @@ Ext.Element.addMethods(function(){
             }
         },
 
-       
+
         boxWrap : function(cls){
             cls = cls || 'x-box';
-            var el = Ext.get(this.insertHtml("beforeBegin", "<div class='" + cls + "'>" + String.format(Ext.Element.boxMarkup, cls) + "</div>"));        
+            var el = Ext.get(this.insertHtml("beforeBegin", "<div class='" + cls + "'>" + String.format(Ext.Element.boxMarkup, cls) + "</div>"));
             Ext.DomQuery.selectNode('.' + cls + '-mc', el.dom).appendChild(this.dom);
             return el;
         },
 
-        
+
         setSize : function(width, height, animate){
             var me = this;
-            if(typeof width == 'object'){ 
+            if(typeof width == 'object'){
                 height = width.height;
                 width = width.width;
             }
@@ -7822,7 +7822,7 @@ Ext.Element.addMethods(function(){
             return me;
         },
 
-        
+
         getComputedHeight : function(){
             var me = this,
                 h = Math.max(me.dom.offsetHeight, me.dom.clientHeight);
@@ -7835,7 +7835,7 @@ Ext.Element.addMethods(function(){
             return h;
         },
 
-        
+
         getComputedWidth : function(){
             var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth);
             if(!w){
@@ -7847,12 +7847,12 @@ Ext.Element.addMethods(function(){
             return w;
         },
 
-        
+
         getFrameWidth : function(sides, onlyContentBox){
             return onlyContentBox && this.isBorderBox() ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides));
         },
 
-        
+
         addClassOnOver : function(className){
             this.hover(
                 function(){
@@ -7865,7 +7865,7 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
         addClassOnFocus : function(className){
             this.on("focus", function(){
                 Ext.fly(this, INTERNAL).addClass(className);
@@ -7876,7 +7876,7 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
         addClassOnClick : function(className){
             var dom = this.dom;
             this.on("mousedown", function(){
@@ -7891,14 +7891,14 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
 
         getViewSize : function(){
             var doc = document,
                 d = this.dom,
                 isDoc = (d == doc || d == doc.body);
 
-            
+
             if (isDoc) {
                 var extdom = Ext.lib.Dom;
                 return {
@@ -7906,7 +7906,7 @@ Ext.Element.addMethods(function(){
                     height : extdom.getViewHeight()
                 };
 
-            
+
             } else {
                 return {
                     width : d.clientWidth,
@@ -7915,7 +7915,7 @@ Ext.Element.addMethods(function(){
             }
         },
 
-        
+
 
         getStyleSize : function(){
             var me = this,
@@ -7925,7 +7925,7 @@ Ext.Element.addMethods(function(){
                 isDoc = (d == doc || d == doc.body),
                 s = d.style;
 
-            
+
             if (isDoc) {
                 var extdom = Ext.lib.Dom;
                 return {
@@ -7933,30 +7933,30 @@ Ext.Element.addMethods(function(){
                     height : extdom.getViewHeight()
                 };
             }
-            
+
             if(s.width && s.width != 'auto'){
                 w = parseFloat(s.width);
                 if(me.isBorderBox()){
                    w -= me.getFrameWidth('lr');
                 }
             }
-            
+
             if(s.height && s.height != 'auto'){
                 h = parseFloat(s.height);
                 if(me.isBorderBox()){
                    h -= me.getFrameWidth('tb');
                 }
             }
-            
+
             return {width: w || me.getWidth(true), height: h || me.getHeight(true)};
         },
 
-        
+
         getSize : function(contentSize){
             return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)};
         },
 
-        
+
         repaint : function(){
             var dom = this.dom;
             this.addClass("x-repaint");
@@ -7966,14 +7966,14 @@ Ext.Element.addMethods(function(){
             return this;
         },
 
-        
+
         unselectable : function(){
             this.dom.unselectable = "on";
             return this.swallowEvent("selectstart", true).
                         addClass("x-unselectable");
         },
 
-        
+
         getMargins : function(side){
             var me = this,
                 key,
@@ -7993,10 +7993,10 @@ Ext.Element.addMethods(function(){
 }());
 
 Ext.Element.addMethods({
-    
+
     setBox : function(box, adjust, animate){
         var me = this,
-               w = box.width, 
+               w = box.width,
                h = box.height;
         if((adjust && !me.autoBoxAdjust) && !me.isBorderBox()){
            w -= (me.getBorderWidth("lr") + me.getPadding("lr"));
@@ -8006,14 +8006,14 @@ Ext.Element.addMethods({
         return me;
     },
 
-    
-       getBox : function(contentBox, local) {      
+
+       getBox : function(contentBox, local) {
            var me = this,
                xy,
                left,
                top,
                getBorderWidth = me.getBorderWidth,
-               getPadding = me.getPadding, 
+               getPadding = me.getPadding,
                l,
                r,
                t,
@@ -8039,13 +8039,13 @@ Ext.Element.addMethods({
         bx.bottom = bx.y + bx.height;
         return bx;
        },
-       
-    
+
+
      move : function(direction, distance, animate){
-        var me = this,         
+        var me = this,
                xy = me.getXY(),
                x = xy[0],
-               y = xy[1],              
+               y = xy[1],
                left = [x - distance, y],
                right = [x + distance, y],
                top = [x, y - distance],
@@ -8058,16 +8058,16 @@ Ext.Element.addMethods({
                        t : top,
                        top : top,
                        up : top,
-                       b : bottom, 
+                       b : bottom,
                        bottom : bottom,
-                       down : bottom                           
+                       down : bottom
                };
-        
-           direction = direction.toLowerCase();    
+
+           direction = direction.toLowerCase();
            me.moveTo(hash[direction][0], hash[direction][1], me.animTest.call(me, arguments, animate, 2));
     },
-    
-    
+
+
      setLeftTop : function(left, top){
            var me = this,
                style = me.dom.style;
@@ -8075,55 +8075,55 @@ Ext.Element.addMethods({
         style.top = me.addUnits(top);
         return me;
     },
-    
-    
+
+
     getRegion : function(){
         return Ext.lib.Dom.getRegion(this.dom);
     },
-    
-    
+
+
     setBounds : function(x, y, width, height, animate){
            var me = this;
         if (!animate || !me.anim) {
             me.setSize(width, height);
             me.setLocation(x, y);
         } else {
-            me.anim({points: {to: [x, y]}, 
-                        width: {to: me.adjustWidth(width)}, 
+            me.anim({points: {to: [x, y]},
+                        width: {to: me.adjustWidth(width)},
                         height: {to: me.adjustHeight(height)}},
-                     me.preanim(arguments, 4), 
+                     me.preanim(arguments, 4),
                      'motion');
         }
         return me;
     },
 
-    
+
     setRegion : function(region, animate) {
         return this.setBounds(region.left, region.top, region.right-region.left, region.bottom-region.top, this.animTest.call(this, arguments, animate, 1));
     }
 });
 Ext.Element.addMethods({
-    
+
     scrollTo : function(side, value, animate) {
-        
+
         var top = /top/i.test(side),
             me = this,
             dom = me.dom,
             prop;
         if (!animate || !me.anim) {
-            
+
             prop = 'scroll' + (top ? 'Top' : 'Left');
             dom[prop] = value;
         }
         else {
-            
+
             prop = 'scroll' + (top ? 'Left' : 'Top');
             me.anim({scroll: {to: top ? [dom[prop], value] : [value, dom[prop]]}}, me.preanim(arguments, 2), 'scroll');
         }
         return me;
     },
-    
-    
+
+
     scrollIntoView : function(container, hscroll) {
         var c = Ext.getDom(container) || Ext.getBody().dom,
             el = this.dom,
@@ -8144,7 +8144,7 @@ Ext.Element.addMethods({
         else if (b > cb) {
             c.scrollTop = b-ch;
         }
-        
+
         c.scrollTop = c.scrollTop;
 
         if (hscroll !== false) {
@@ -8159,12 +8159,12 @@ Ext.Element.addMethods({
         return this;
     },
 
-    
+
     scrollChildIntoView : function(child, hscroll) {
         Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll);
     },
-    
-    
+
+
      scroll : function(direction, distance, animate) {
         if (!this.isScrollable()) {
             return false;
@@ -8182,7 +8182,7 @@ Ext.Element.addMethods({
             };
             hash.d = hash.b;
             hash.u = hash.t;
-        
+
         direction = direction.substr(0, 1);
         if ((v = hash[direction]) > -1) {
             scrolled = true;
@@ -8202,15 +8202,15 @@ Ext.Element.addMethods(
             data            = Ext.Element.data;
 
         return {
-            
+
             isVisible : function(deep) {
                 var vis = !this.isStyle(VISIBILITY, HIDDEN) && !this.isStyle(DISPLAY, NONE),
                     p   = this.dom.parentNode;
-                
+
                 if (deep !== true || !vis) {
                     return vis;
                 }
-                
+
                 while (p && !(/^body/i.test(p.tagName))) {
                     if (!Ext.fly(p, '_isVisible').isVisible()) {
                         return false;
@@ -8220,23 +8220,23 @@ Ext.Element.addMethods(
                 return true;
             },
 
-            
+
             isDisplayed : function() {
                 return !this.isStyle(DISPLAY, NONE);
             },
 
-            
+
             enableDisplayMode : function(display) {
                 this.setVisibilityMode(Ext.Element.DISPLAY);
-                
+
                 if (!Ext.isEmpty(display)) {
                     data(this.dom, 'originalDisplay', display);
                 }
-                
+
                 return this;
             },
 
-            
+
             mask : function(msg, msgCls) {
                 var me  = this,
                     dom = me.dom,
@@ -8260,7 +8260,7 @@ Ext.Element.addMethods(
 
                 me.addClass(XMASKED);
                 mask.setDisplayed(true);
-                
+
                 if (typeof msg == 'string') {
                     var mm = dh.append(dom, {cls : EXTELMASKMSG, cn:{tag:'div'}}, true);
                     data(dom, 'maskMsg', mm);
@@ -8269,16 +8269,16 @@ Ext.Element.addMethods(
                     mm.setDisplayed(true);
                     mm.center(me);
                 }
-                
-                
+
+
                 if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && me.getStyle('height') == 'auto') {
                     mask.setSize(undefined, me.getHeight());
                 }
-                
+
                 return mask;
             },
 
-            
+
             unmask : function() {
                 var me      = this,
                     dom     = me.dom,
@@ -8290,24 +8290,24 @@ Ext.Element.addMethods(
                         maskMsg.remove();
                         data(dom, 'maskMsg', undefined);
                     }
-                    
+
                     mask.remove();
                     data(dom, 'mask', undefined);
                     me.removeClass([XMASKED, XMASKEDRELATIVE]);
                 }
             },
 
-            
+
             isMasked : function() {
                 var m = data(this.dom, 'mask');
                 return m && m.isVisible();
             },
 
-            
+
             createShim : function() {
                 var el = document.createElement('iframe'),
                     shim;
-                
+
                 el.frameBorder = '0';
                 el.className = 'ext-shim';
                 el.src = Ext.SSL_SECURE_URL;
@@ -8319,7 +8319,7 @@ Ext.Element.addMethods(
     }()
 );
 Ext.Element.addMethods({
-    
+
     addKeyListener : function(key, fn, scope){
         var config;
         if(typeof key != 'object' || Ext.isArray(key)){
@@ -8341,7 +8341,7 @@ Ext.Element.addMethods({
         return new Ext.KeyMap(this, config);
     },
 
-    
+
     addKeyMap : function(config){
         return new Ext.KeyMap(this, config);
     }
@@ -8365,22 +8365,22 @@ Ext.apply(Ext.CompositeElementLite.prototype, {
         return this;
     },
 
-    
+
     first : function(){
         return this.item(0);
     },
 
-    
+
     last : function(){
         return this.item(this.getCount()-1);
     },
 
-    
+
     contains : function(el){
         return this.indexOf(el) != -1;
     },
 
-    
+
     removeElement : function(keys, removeDom){
         var me = this,
             els = this.elements,
@@ -8408,22 +8408,22 @@ Ext.CompositeElement = Ext.extend(Ext.CompositeElementLite, {
         this.add(els, root);
     },
 
-    
+
     getElement : function(el){
-        
+
         return el;
     },
 
-    
+
     transformElement : function(el){
         return Ext.get(el);
     }
 
-    
 
-    
 
-    
+
+
+
 });
 
 
@@ -8448,12 +8448,12 @@ function() {
         UPDATE = "update",
         FAILURE = "failure";
 
-    
+
     function processSuccess(response){
         var me = this;
         me.transaction = null;
         if (response.argument.form && response.argument.reset) {
-            try { 
+            try {
                 response.argument.form.reset();
             } catch(e){}
         }
@@ -8466,7 +8466,7 @@ function() {
         }
     }
 
-    
+
     function updateComplete(response, type, success){
         this.fireEvent(type || UPDATE, this.el, response);
         if(Ext.isFunction(response.argument.callback)){
@@ -8474,7 +8474,7 @@ function() {
         }
     }
 
-    
+
     function processFailure(response){
         updateComplete.call(this, response, FAILURE, !!(this.transaction = null));
     }
@@ -8486,76 +8486,76 @@ function() {
             if(!forceNew && el.updateManager){
                 return el.updateManager;
             }
-            
+
             me.el = el;
-            
+
             me.defaultUrl = null;
 
             me.addEvents(
-                
+
                 BEFOREUPDATE,
-                
+
                 UPDATE,
-                
+
                 FAILURE
             );
 
             Ext.apply(me, Ext.Updater.defaults);
-            
-            
-            
-            
-            
-            
-
-            
+
+
+
+
+
+
+
+
             me.transaction = null;
-            
+
             me.refreshDelegate = me.refresh.createDelegate(me);
-            
+
             me.updateDelegate = me.update.createDelegate(me);
-            
+
             me.formUpdateDelegate = (me.formUpdate || function(){}).createDelegate(me);
 
-            
+
             me.renderer = me.renderer || me.getDefaultRenderer();
 
             Ext.Updater.superclass.constructor.call(me);
         },
 
-        
+
         setRenderer : function(renderer){
             this.renderer = renderer;
         },
 
-        
+
         getRenderer : function(){
            return this.renderer;
         },
 
-        
+
         getDefaultRenderer: function() {
             return new Ext.Updater.BasicRenderer();
         },
 
-        
+
         setDefaultUrl : function(defaultUrl){
             this.defaultUrl = defaultUrl;
         },
 
-        
+
         getEl : function(){
             return this.el;
         },
 
-        
+
         update : function(url, params, callback, discardUrl){
             var me = this,
                 cfg,
                 callerScope;
 
             if(me.fireEvent(BEFOREUPDATE, me.el, url, params) !== false){
-                if(Ext.isObject(url)){ 
+                if(Ext.isObject(url)){
                     cfg = url;
                     url = cfg.url;
                     params = params || cfg.params;
@@ -8599,7 +8599,7 @@ function() {
             }
         },
 
-        
+
         formUpdate : function(form, url, reset, callback){
             var me = this;
             if(me.fireEvent(BEFOREUPDATE, me.el, form, url) !== false){
@@ -8625,7 +8625,7 @@ function() {
             }
         },
 
-        
+
         startAutoRefresh : function(interval, url, params, callback, refreshNow){
             var me = this;
             if(refreshNow){
@@ -8637,7 +8637,7 @@ function() {
             me.autoRefreshProcId = setInterval(me.update.createDelegate(me, [url || me.defaultUrl, params, callback, true]), interval * 1000);
         },
 
-        
+
         stopAutoRefresh : function(){
             if(this.autoRefreshProcId){
                 clearInterval(this.autoRefreshProcId);
@@ -8645,31 +8645,31 @@ function() {
             }
         },
 
-        
+
         isAutoRefreshing : function(){
            return !!this.autoRefreshProcId;
         },
 
-        
+
         showLoading : function(){
             if(this.showLoadIndicator){
                 this.el.dom.innerHTML = this.indicatorText;
             }
         },
 
-        
+
         abort : function(){
             if(this.transaction){
                 Ext.Ajax.abort(this.transaction);
             }
         },
 
-        
+
         isUpdating : function(){
             return this.transaction ? Ext.Ajax.isLoading(this.transaction) : false;
         },
 
-        
+
         refresh : function(callback){
             if(this.defaultUrl){
                 this.update(this.defaultUrl, null, callback, true);
@@ -8680,17 +8680,17 @@ function() {
 
 
 Ext.Updater.defaults = {
-   
+
     timeout : 30,
-    
+
     disableCaching : false,
-    
+
     showLoadIndicator : true,
-    
+
     indicatorText : '<div class="loading-indicator">Loading...</div>',
-     
+
     loadScripts : false,
-    
+
     sslBlankUrl : Ext.SSL_SECURE_URL
 };
 
@@ -8706,7 +8706,7 @@ Ext.Updater.updateElement = function(el, url, params, options){
 Ext.Updater.BasicRenderer = function(){};
 
 Ext.Updater.BasicRenderer.prototype = {
-    
+
      render : function(el, response, updateManager, callback){
         el.update(response.responseText, updateManager.loadScripts, callback);
     }
@@ -8733,12 +8733,12 @@ function xf(format) {
 
 
 Date.formatCodeToRegex = function(character, currentGroup) {
-    
+
     var p = Date.parseCodes[character];
 
     if (p) {
       p = typeof p == 'function'? p() : p;
-      Date.parseCodes[character] = p; 
+      Date.parseCodes[character] = p;
     }
 
     return p ? Ext.applyIf({
@@ -8746,7 +8746,7 @@ Date.formatCodeToRegex = function(character, currentGroup) {
     }, p) : {
         g:0,
         c:null,
-        s:Ext.escapeRe(character) 
+        s:Ext.escapeRe(character)
     };
 };
 
@@ -8754,11 +8754,11 @@ Date.formatCodeToRegex = function(character, currentGroup) {
 var $f = Date.formatCodeToRegex;
 
 Ext.apply(Date, {
-    
+
     parseFunctions: {
         "M$": function(input, strict) {
-            
-            
+
+
             var re = new RegExp('\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/');
             var r = (input || '').match(re);
             return r? new Date(((r[1] || '') + r[2]) * 1) : null;
@@ -8766,41 +8766,41 @@ Ext.apply(Date, {
     },
     parseRegexes: [],
 
-    
+
     formatFunctions: {
         "M$": function() {
-            
+
             return '\\/Date(' + this.getTime() + ')\\/';
         }
     },
 
     y2kYear : 50,
 
-    
+
     MILLI : "ms",
 
-    
+
     SECOND : "s",
 
-    
+
     MINUTE : "mi",
 
-    
+
     HOUR : "h",
 
-    
+
     DAY : "d",
 
-    
+
     MONTH : "mo",
 
-    
+
     YEAR : "y",
 
-    
+
     defaults: {},
 
-    
+
     dayNames : [
         "Sunday",
         "Monday",
@@ -8811,7 +8811,7 @@ Ext.apply(Date, {
         "Saturday"
     ],
 
-    
+
     monthNames : [
         "January",
         "February",
@@ -8827,7 +8827,7 @@ Ext.apply(Date, {
         "December"
     ],
 
-    
+
     monthNumbers : {
         Jan:0,
         Feb:1,
@@ -8843,23 +8843,23 @@ Ext.apply(Date, {
         Dec:11
     },
 
-    
+
     getShortMonthName : function(month) {
         return Date.monthNames[month].substring(0, 3);
     },
 
-    
+
     getShortDayName : function(day) {
         return Date.dayNames[day].substring(0, 3);
     },
 
-    
+
     getMonthNumber : function(name) {
-        
+
         return Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
     },
-    
-    
+
+
     formatContainsHourInfo : (function(){
         var stripEscapeRe = /(\\.)/g,
             hourInfoRe = /([gGhHisucUOPZ]|M\$)/;
@@ -8868,10 +8868,10 @@ Ext.apply(Date, {
         };
     })(),
 
-    
+
     formatCodes : {
         d: "String.leftPad(this.getDate(), 2, '0')",
-        D: "Date.getShortDayName(this.getDay())", 
+        D: "Date.getShortDayName(this.getDay())",
         j: "this.getDate()",
         l: "Date.dayNames[this.getDay()]",
         N: "(this.getDay() ? this.getDay() : 7)",
@@ -8881,7 +8881,7 @@ Ext.apply(Date, {
         W: "String.leftPad(this.getWeekOfYear(), 2, '0')",
         F: "Date.monthNames[this.getMonth()]",
         m: "String.leftPad(this.getMonth() + 1, 2, '0')",
-        M: "Date.getShortMonthName(this.getMonth())", 
+        M: "Date.getShortMonthName(this.getMonth())",
         n: "(this.getMonth() + 1)",
         t: "this.getDaysInMonth()",
         L: "(this.isLeapYear() ? 1 : 0)",
@@ -8902,27 +8902,27 @@ Ext.apply(Date, {
         T: "this.getTimezone()",
         Z: "(this.getTimezoneOffset() * -60)",
 
-        c: function() { 
+        c: function() {
             for (var c = "Y-m-dTH:i:sP", code = [], i = 0, l = c.length; i < l; ++i) {
                 var e = c.charAt(i);
-                code.push(e == "T" ? "'T'" : Date.getFormatCode(e)); 
+                code.push(e == "T" ? "'T'" : Date.getFormatCode(e));
             }
             return code.join(" + ");
         },
-        
+
 
         U: "Math.round(this.getTime() / 1000)"
     },
 
-    
+
     isValid : function(y, m, d, h, i, s, ms) {
-        
+
         h = h || 0;
         i = i || 0;
         s = s || 0;
         ms = ms || 0;
 
-        
+
         var dt = new Date(y < 100 ? 100 : y, m - 1, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);
 
         return y == dt.getFullYear() &&
@@ -8934,7 +8934,7 @@ Ext.apply(Date, {
             ms == dt.getMilliseconds();
     },
 
-    
+
     parseDate : function(input, format, strict) {
         var p = Date.parseFunctions;
         if (p[format] == null) {
@@ -8943,20 +8943,20 @@ Ext.apply(Date, {
         return p[format](input, Ext.isDefined(strict) ? strict : Date.useStrict);
     },
 
-    
+
     getFormatCode : function(character) {
         var f = Date.formatCodes[character];
 
         if (f) {
           f = typeof f == 'function'? f() : f;
-          Date.formatCodes[character] = f; 
+          Date.formatCodes[character] = f;
         }
 
-        
+
         return f || ("'" + String.escape(character) + "'");
     },
 
-    
+
     createFormat : function(format) {
         var code = [],
             special = false,
@@ -8976,62 +8976,62 @@ Ext.apply(Date, {
         Date.formatFunctions[format] = new Function("return " + code.join('+'));
     },
 
-    
+
     createParser : function() {
         var code = [
             "var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,",
                 "def = Date.defaults,",
-                "results = String(input).match(Date.parseRegexes[{0}]);", 
+                "results = String(input).match(Date.parseRegexes[{0}]);",
 
             "if(results){",
                 "{1}",
 
-                "if(u != null){", 
-                    "v = new Date(u * 1000);", 
+                "if(u != null){",
+                    "v = new Date(u * 1000);",
                 "}else{",
-                    
-                    
-                    
+
+
+
                     "dt = (new Date()).clearTime();",
 
-                    
+
                     "y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));",
                     "m = Ext.num(m, Ext.num(def.m - 1, dt.getMonth()));",
                     "d = Ext.num(d, Ext.num(def.d, dt.getDate()));",
 
-                    
+
                     "h  = Ext.num(h, Ext.num(def.h, dt.getHours()));",
                     "i  = Ext.num(i, Ext.num(def.i, dt.getMinutes()));",
                     "s  = Ext.num(s, Ext.num(def.s, dt.getSeconds()));",
                     "ms = Ext.num(ms, Ext.num(def.ms, dt.getMilliseconds()));",
 
                     "if(z >= 0 && y >= 0){",
-                        
-                        
 
-                        
-                        
+
+
+
+
                         "v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);",
 
-                        
+
                         "v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);",
-                    "}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){", 
-                        "v = null;", 
+                    "}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){",
+                        "v = null;",
                     "}else{",
-                        
-                        
+
+
                         "v = new Date(y < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);",
                     "}",
                 "}",
             "}",
 
             "if(v){",
-                
+
                 "if(zz != null){",
-                    
+
                     "v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);",
                 "}else if(o){",
-                    
+
                     "v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));",
                 "}",
             "}",
@@ -9070,7 +9070,7 @@ Ext.apply(Date, {
                     }
                 }
             }
-            
+
             if (last) {
                 calc.push(last);
             }
@@ -9080,21 +9080,21 @@ Ext.apply(Date, {
         };
     }(),
 
-    
+
     parseCodes : {
-        
+
         d: {
             g:1,
             c:"d = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})" 
+            s:"(\\d{2})"
         },
         j: {
             g:1,
             c:"d = parseInt(results[{0}], 10);\n",
-            s:"(\\d{1,2})" 
+            s:"(\\d{1,2})"
         },
         D: function() {
-            for (var a = [], i = 0; i < 7; a.push(Date.getShortDayName(i)), ++i); 
+            for (var a = [], i = 0; i < 7; a.push(Date.getShortDayName(i)), ++i);
             return {
                 g:0,
                 c:null,
@@ -9111,7 +9111,7 @@ Ext.apply(Date, {
         N: {
             g:0,
             c:null,
-            s:"[1-7]" 
+            s:"[1-7]"
         },
         S: {
             g:0,
@@ -9121,27 +9121,27 @@ Ext.apply(Date, {
         w: {
             g:0,
             c:null,
-            s:"[0-6]" 
+            s:"[0-6]"
         },
         z: {
             g:1,
             c:"z = parseInt(results[{0}], 10);\n",
-            s:"(\\d{1,3})" 
+            s:"(\\d{1,3})"
         },
         W: {
             g:0,
             c:null,
-            s:"(?:\\d{2})" 
+            s:"(?:\\d{2})"
         },
         F: function() {
             return {
                 g:1,
-                c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n", 
+                c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",
                 s:"(" + Date.monthNames.join("|") + ")"
             };
         },
         M: function() {
-            for (var a = [], i = 0; i < 12; a.push(Date.getShortMonthName(i)), ++i); 
+            for (var a = [], i = 0; i < 12; a.push(Date.getShortMonthName(i)), ++i);
             return Ext.applyIf({
                 s:"(" + a.join("|") + ")"
             }, $f("F"));
@@ -9149,17 +9149,17 @@ Ext.apply(Date, {
         m: {
             g:1,
             c:"m = parseInt(results[{0}], 10) - 1;\n",
-            s:"(\\d{2})" 
+            s:"(\\d{2})"
         },
         n: {
             g:1,
             c:"m = parseInt(results[{0}], 10) - 1;\n",
-            s:"(\\d{1,2})" 
+            s:"(\\d{1,2})"
         },
         t: {
             g:0,
             c:null,
-            s:"(?:\\d{2})" 
+            s:"(?:\\d{2})"
         },
         L: {
             g:0,
@@ -9172,20 +9172,20 @@ Ext.apply(Date, {
         Y: {
             g:1,
             c:"y = parseInt(results[{0}], 10);\n",
-            s:"(\\d{4})" 
+            s:"(\\d{4})"
         },
         y: {
             g:1,
             c:"var ty = parseInt(results[{0}], 10);\n"
-                + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n", 
+                + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
             s:"(\\d{1,2})"
         },
-        
+
         a: function(){
             return $f("A");
         },
         A: {
-            
+
             calcLast: true,
             g:1,
             c:"if (/(am)/i.test(results[{0}])) {\n"
@@ -9199,7 +9199,7 @@ Ext.apply(Date, {
         G: {
             g:1,
             c:"h = parseInt(results[{0}], 10);\n",
-            s:"(\\d{1,2})" 
+            s:"(\\d{1,2})"
         },
         h: function() {
             return $f("H");
@@ -9207,74 +9207,74 @@ Ext.apply(Date, {
         H: {
             g:1,
             c:"h = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})" 
+            s:"(\\d{2})"
         },
         i: {
             g:1,
             c:"i = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})" 
+            s:"(\\d{2})"
         },
         s: {
             g:1,
             c:"s = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})" 
+            s:"(\\d{2})"
         },
         u: {
             g:1,
             c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",
-            s:"(\\d+)" 
+            s:"(\\d+)"
         },
         O: {
             g:1,
             c:[
                 "o = results[{0}];",
-                "var sn = o.substring(0,1),", 
-                    "hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),", 
-                    "mn = o.substring(3,5) % 60;", 
-                "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n" 
+                "var sn = o.substring(0,1),",
+                    "hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),",
+                    "mn = o.substring(3,5) % 60;",
+                "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"
             ].join("\n"),
-            s: "([+\-]\\d{4})" 
+            s: "([+\-]\\d{4})"
         },
         P: {
             g:1,
             c:[
                 "o = results[{0}];",
-                "var sn = o.substring(0,1),", 
-                    "hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),", 
-                    "mn = o.substring(4,6) % 60;", 
-                "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n" 
+                "var sn = o.substring(0,1),",
+                    "hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),",
+                    "mn = o.substring(4,6) % 60;",
+                "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"
             ].join("\n"),
-            s: "([+\-]\\d{2}:\\d{2})" 
+            s: "([+\-]\\d{2}:\\d{2})"
         },
         T: {
             g:0,
             c:null,
-            s:"[A-Z]{1,4}" 
+            s:"[A-Z]{1,4}"
         },
         Z: {
             g:1,
-            c:"zz = results[{0}] * 1;\n" 
+            c:"zz = results[{0}] * 1;\n"
                   + "zz = (-43200 <= zz && zz <= 50400)? zz : null;\n",
-            s:"([+\-]?\\d{1,5})" 
+            s:"([+\-]?\\d{1,5})"
         },
         c: function() {
             var calc = [],
                 arr = [
-                    $f("Y", 1), 
-                    $f("m", 2), 
-                    $f("d", 3), 
-                    $f("h", 4), 
-                    $f("i", 5), 
-                    $f("s", 6), 
-                    {c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"}, 
-                    {c:[ 
-                        "if(results[8]) {", 
+                    $f("Y", 1),
+                    $f("m", 2),
+                    $f("d", 3),
+                    $f("h", 4),
+                    $f("i", 5),
+                    $f("s", 6),
+                    {c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},
+                    {c:[
+                        "if(results[8]) {",
                             "if(results[8] == 'Z'){",
-                                "zz = 0;", 
+                                "zz = 0;",
                             "}else if (results[8].indexOf(':') > -1){",
-                                $f("P", 8).c, 
+                                $f("P", 8).c,
                             "}else{",
-                                $f("O", 8).c, 
+                                $f("O", 8).c,
                             "}",
                         "}"
                     ].join('\n')}
@@ -9288,15 +9288,15 @@ Ext.apply(Date, {
                 g:1,
                 c:calc.join(""),
                 s:[
-                    arr[0].s, 
-                    "(?:", "-", arr[1].s, 
-                        "(?:", "-", arr[2].s, 
+                    arr[0].s,
+                    "(?:", "-", arr[1].s,
+                        "(?:", "-", arr[2].s,
                             "(?:",
-                                "(?:T| )?", 
-                                arr[3].s, ":", arr[4].s,  
-                                "(?::", arr[5].s, ")?", 
-                                "(?:(?:\\.|,)(\\d+))?", 
-                                "(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?", 
+                                "(?:T| )?",
+                                arr[3].s, ":", arr[4].s,
+                                "(?::", arr[5].s, ")?",
+                                "(?:(?:\\.|,)(\\d+))?",
+                                "(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",
                             ")?",
                         ")?",
                     ")?"
@@ -9306,7 +9306,7 @@ Ext.apply(Date, {
         U: {
             g:1,
             c:"u = parseInt(results[{0}], 10);\n",
-            s:"(-?\\d+)" 
+            s:"(-?\\d+)"
         }
     }
 });
@@ -9314,7 +9314,7 @@ Ext.apply(Date, {
 }());
 
 Ext.apply(Date.prototype, {
-    
+
     dateFormat : function(format) {
         if (Date.formatFunctions[format] == null) {
             Date.createFormat(format);
@@ -9322,24 +9322,24 @@ Ext.apply(Date.prototype, {
         return Date.formatFunctions[format].call(this);
     },
 
-    
+
     getTimezone : function() {
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
+
+
+
+
+
+
+
+
+
+
+
+
         return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, "$1$2").replace(/[^A-Z]/g, "");
     },
 
-    
+
     getGMTOffset : function(colon) {
         return (this.getTimezoneOffset() > 0 ? "-" : "+")
             + String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset()) / 60), 2, "0")
@@ -9347,7 +9347,7 @@ Ext.apply(Date.prototype, {
             + String.leftPad(Math.abs(this.getTimezoneOffset() % 60), 2, "0");
     },
 
-    
+
     getDayOfYear: function() {
         var num = 0,
             d = this.clone(),
@@ -9360,61 +9360,61 @@ Ext.apply(Date.prototype, {
         return num + this.getDate() - 1;
     },
 
-    
+
     getWeekOfYear : function() {
-        
-        var ms1d = 864e5, 
-            ms7d = 7 * ms1d; 
 
-        return function() { 
-            var DC3 = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3) / ms1d, 
-                AWN = Math.floor(DC3 / 7), 
+        var ms1d = 864e5,
+            ms7d = 7 * ms1d;
+
+        return function() {
+            var DC3 = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3) / ms1d,
+                AWN = Math.floor(DC3 / 7),
                 Wyr = new Date(AWN * ms7d).getUTCFullYear();
 
             return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
         };
     }(),
 
-    
+
     isLeapYear : function() {
         var year = this.getFullYear();
         return !!((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
     },
 
-    
+
     getFirstDayOfMonth : function() {
         var day = (this.getDay() - (this.getDate() - 1)) % 7;
         return (day < 0) ? (day + 7) : day;
     },
 
-    
+
     getLastDayOfMonth : function() {
         return this.getLastDateOfMonth().getDay();
     },
 
 
-    
+
     getFirstDateOfMonth : function() {
         return new Date(this.getFullYear(), this.getMonth(), 1);
     },
 
-    
+
     getLastDateOfMonth : function() {
         return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth());
     },
 
-    
+
     getDaysInMonth: function() {
         var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 
-        return function() { 
+        return function() {
             var m = this.getMonth();
 
             return m == 1 && this.isLeapYear() ? 29 : daysInMonth[m];
         };
     }(),
 
-    
+
     getSuffix : function() {
         switch (this.getDate()) {
             case 1:
@@ -9432,38 +9432,38 @@ Ext.apply(Date.prototype, {
         }
     },
 
-    
+
     clone : function() {
         return new Date(this.getTime());
     },
 
-    
+
     isDST : function() {
-        
-        
+
+
         return new Date(this.getFullYear(), 0, 1).getTimezoneOffset() != this.getTimezoneOffset();
     },
 
-    
+
     clearTime : function(clone) {
         if (clone) {
             return this.clone().clearTime();
         }
 
-        
+
         var d = this.getDate();
 
-        
+
         this.setHours(0);
         this.setMinutes(0);
         this.setSeconds(0);
         this.setMilliseconds(0);
 
-        if (this.getDate() != d) { 
-            
-            
+        if (this.getDate() != d) {
+
+
+
 
-            
             for (var hr = 1, c = this.add(Date.HOUR, hr); c.getDate() != d; hr++, c = this.add(Date.HOUR, hr));
 
             this.setDate(d);
@@ -9473,7 +9473,7 @@ Ext.apply(Date.prototype, {
         return this;
     },
 
-    
+
     add : function(interval, value) {
         var d = this.clone();
         if (!interval || value === 0) return d;
@@ -9509,7 +9509,7 @@ Ext.apply(Date.prototype, {
         return d;
     },
 
-    
+
     between : function(start, end) {
         var t = this.getTime();
         return start.getTime() <= t && t <= end.getTime();
@@ -9527,8 +9527,8 @@ if (Ext.isSafari && (navigator.userAgent.match(/WebKit\/(\d+)/)[1] || NaN) < 420
         _xMonth : Date.prototype.setMonth,
         _xDate  : Date.prototype.setDate,
 
-        
-        
+
+
         setMonth : function(num) {
             if (num <= -1) {
                 var n = Math.ceil(-num),
@@ -9543,12 +9543,12 @@ if (Ext.isSafari && (navigator.userAgent.match(/WebKit\/(\d+)/)[1] || NaN) < 420
             }
         },
 
-        
-        
-        
+
+
+
         setDate : function(d) {
-            
-            
+
+
             return this.setTime(this.getTime() - (this.getDate() - d) * 864e5);
         }
     });
@@ -9564,13 +9564,13 @@ Ext.util.MixedCollection = function(allowFunctions, keyFn){
     this.keys = [];
     this.length = 0;
     this.addEvents(
-        
+
         'clear',
-        
+
         'add',
-        
+
         'replace',
-        
+
         'remove',
         'sort'
     );
@@ -9583,10 +9583,10 @@ Ext.util.MixedCollection = function(allowFunctions, keyFn){
 
 Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
 
-    
+
     allowFunctions : false,
 
-    
+
     add : function(key, o){
         if(arguments.length == 1){
             o = arguments[0];
@@ -9606,12 +9606,12 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return o;
     },
 
-    
+
     getKey : function(o){
          return o.id;
     },
 
-    
+
     replace : function(key, o){
         if(arguments.length == 1){
             o = arguments[0];
@@ -9628,7 +9628,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return o;
     },
 
-    
+
     addAll : function(objs){
         if(arguments.length > 1 || Ext.isArray(objs)){
             var args = arguments.length > 1 ? arguments : objs;
@@ -9644,9 +9644,9 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         }
     },
 
-    
+
     each : function(fn, scope){
-        var items = [].concat(this.items); 
+        var items = [].concat(this.items);
         for(var i = 0, len = items.length; i < len; i++){
             if(fn.call(scope || items[i], items[i], i, len) === false){
                 break;
@@ -9654,14 +9654,14 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         }
     },
 
-    
+
     eachKey : function(fn, scope){
         for(var i = 0, len = this.keys.length; i < len; i++){
             fn.call(scope || window, this.keys[i], this.items[i], i, len);
         }
     },
 
-    
+
     find : function(fn, scope){
         for(var i = 0, len = this.items.length; i < len; i++){
             if(fn.call(scope || window, this.items[i], this.keys[i])){
@@ -9671,7 +9671,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return null;
     },
 
-    
+
     insert : function(index, key, o){
         if(arguments.length == 2){
             o = arguments[1];
@@ -9695,12 +9695,12 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return o;
     },
 
-    
+
     remove : function(o){
         return this.removeAt(this.indexOf(o));
     },
 
-    
+
     removeAt : function(index){
         if(index < this.length && index >= 0){
             this.length--;
@@ -9717,54 +9717,54 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return false;
     },
 
-    
+
     removeKey : function(key){
         return this.removeAt(this.indexOfKey(key));
     },
 
-    
+
     getCount : function(){
         return this.length;
     },
 
-    
+
     indexOf : function(o){
         return this.items.indexOf(o);
     },
 
-    
+
     indexOfKey : function(key){
         return this.keys.indexOf(key);
     },
 
-    
+
     item : function(key){
         var mk = this.map[key],
             item = mk !== undefined ? mk : (typeof key == 'number') ? this.items[key] : undefined;
-        return typeof item != 'function' || this.allowFunctions ? item : null; 
+        return typeof item != 'function' || this.allowFunctions ? item : null;
     },
 
-    
+
     itemAt : function(index){
         return this.items[index];
     },
 
-    
+
     key : function(key){
         return this.map[key];
     },
 
-    
+
     contains : function(o){
         return this.indexOf(o) != -1;
     },
 
-    
+
     containsKey : function(key){
         return typeof this.map[key] != 'undefined';
     },
 
-    
+
     clear : function(){
         this.length = 0;
         this.items = [];
@@ -9773,32 +9773,32 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         this.fireEvent('clear');
     },
 
-    
+
     first : function(){
         return this.items[0];
     },
 
-    
+
     last : function(){
         return this.items[this.length-1];
     },
 
-    
+
     _sort : function(property, dir, fn){
         var i, len,
             dsc   = String(dir).toUpperCase() == 'DESC' ? -1 : 1,
 
-            
+
             c     = [],
             keys  = this.keys,
             items = this.items;
 
-        
+
         fn = fn || function(a, b) {
             return a - b;
         };
 
-        
+
         for(i = 0, len = items.length; i < len; i++){
             c[c.length] = {
                 key  : keys[i],
@@ -9807,7 +9807,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
             };
         }
 
-        
+
         c.sort(function(a, b){
             var v = fn(a[property], b[property]) * dsc;
             if(v === 0){
@@ -9816,7 +9816,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
             return v;
         });
 
-        
+
         for(i = 0, len = c.length; i < len; i++){
             items[i] = c[i].value;
             keys[i]  = c[i].key;
@@ -9825,12 +9825,12 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         this.fireEvent('sort', this);
     },
 
-    
+
     sort : function(dir, fn){
         this._sort('value', dir, fn);
     },
 
-    
+
     reorder: function(mapping) {
         this.suspendEvents();
 
@@ -9841,7 +9841,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
             remaining = [],
             oldIndex;
 
-        
+
         for (oldIndex in mapping) {
             order[mapping[oldIndex]] = items[oldIndex];
         }
@@ -9865,7 +9865,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         this.fireEvent('sort', this);
     },
 
-    
+
     keySort : function(dir, fn){
         this._sort('key', dir, fn || function(a, b){
             var v1 = String(a).toUpperCase(), v2 = String(b).toUpperCase();
@@ -9873,7 +9873,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         });
     },
 
-    
+
     getRange : function(start, end){
         var items = this.items;
         if(items.length < 1){
@@ -9894,7 +9894,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return r;
     },
 
-    
+
     filter : function(property, value, anyMatch, caseSensitive){
         if(Ext.isEmpty(value, false)){
             return this.clone();
@@ -9905,7 +9905,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         });
     },
 
-    
+
     filterBy : function(fn, scope){
         var r = new Ext.util.MixedCollection();
         r.getKey = this.getKey;
@@ -9918,7 +9918,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return r;
     },
 
-    
+
     findIndex : function(property, value, start, anyMatch, caseSensitive){
         if(Ext.isEmpty(value, false)){
             return -1;
@@ -9929,7 +9929,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         }, null, start);
     },
 
-    
+
     findIndexBy : function(fn, scope, start){
         var k = this.keys, it = this.items;
         for(var i = (start||0), len = it.length; i < len; i++){
@@ -9940,9 +9940,9 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
         return -1;
     },
 
-    
+
     createValueMatcher : function(value, anyMatch, caseSensitive, exactMatch) {
-        if (!value.exec) { 
+        if (!value.exec) {
             var er = Ext.escapeRe;
             value = String(value);
 
@@ -9959,7 +9959,7 @@ Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
          return value;
     },
 
-    
+
     clone : function(){
         var r = new Ext.util.MixedCollection();
         var k = this.keys, it = this.items;
@@ -9975,58 +9975,58 @@ Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item
 
 Ext.AbstractManager = Ext.extend(Object, {
     typeName: 'type',
-    
+
     constructor: function(config) {
         Ext.apply(this, config || {});
-        
-        
+
+
         this.all = new Ext.util.MixedCollection();
-        
+
         this.types = {};
     },
-    
-    
+
+
     get : function(id){
         return this.all.get(id);
     },
-    
-    
+
+
     register: function(item) {
         this.all.add(item);
     },
-    
-    
+
+
     unregister: function(item) {
-        this.all.remove(item);        
+        this.all.remove(item);
     },
-    
-    
+
+
     registerType : function(type, cls){
         this.types[type] = cls;
         cls[this.typeName] = type;
     },
-    
-    
+
+
     isRegistered : function(type){
-        return this.types[type] !== undefined;    
+        return this.types[type] !== undefined;
     },
-    
-    
+
+
     create: function(config, defaultType) {
         var type        = config[this.typeName] || config.type || defaultType,
             Constructor = this.types[type];
-        
+
         if (Constructor == undefined) {
             throw new Error(String.format("The '{0}' type has not been registered with this manager", type));
         }
-        
+
         return new Constructor(config);
     },
-    
-    
+
+
     onAvailable : function(id, fn, scope){
         var all = this.all;
-        
+
         all.on("add", function(index, o){
             if (o.id == id) {
                 fn.call(scope || o, o);
@@ -10042,7 +10042,7 @@ Ext.util.Format = function() {
         nl2brRe        = /\r?\n/g;
 
     return {
-        
+
         ellipsis : function(value, len, word) {
             if (value && value.length > len) {
                 if (word) {
@@ -10060,12 +10060,12 @@ Ext.util.Format = function() {
             return value;
         },
 
-        
+
         undef : function(value) {
             return value !== undefined ? value : "";
         },
 
-        
+
         defaultValue : function(value, defaultValue) {
             if (!defaultValue && defaultValue !== 0) {
                 defaultValue = '';
@@ -10073,42 +10073,42 @@ Ext.util.Format = function() {
             return value !== undefined && value !== '' ? value : defaultValue;
         },
 
-        
+
         htmlEncode : function(value) {
             return !value ? value : String(value).replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
         },
 
-        
+
         htmlDecode : function(value) {
             return !value ? value : String(value).replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&quot;/g, '"').replace(/&amp;/g, "&");
         },
 
-        
+
         trim : function(value) {
             return String(value).replace(trimRe, "");
         },
 
-        
+
         substr : function(value, start, length) {
             return String(value).substr(start, length);
         },
 
-        
+
         lowercase : function(value) {
             return String(value).toLowerCase();
         },
 
-        
+
         uppercase : function(value) {
             return String(value).toUpperCase();
         },
 
-        
+
         capitalize : function(value) {
             return !value ? value : value.charAt(0).toUpperCase() + value.substr(1).toLowerCase();
         },
 
-        
+
         call : function(value, fn) {
             if (arguments.length > 2) {
                 var args = Array.prototype.slice.call(arguments, 2);
@@ -10119,7 +10119,7 @@ Ext.util.Format = function() {
             }
         },
 
-        
+
         usMoney : function(v) {
             v = (Math.round((v-0)*100))/100;
             v = (v == Math.floor(v)) ? v + ".00" : ((v*10 == Math.floor(v*10)) ? v + "0" : v);
@@ -10138,7 +10138,7 @@ Ext.util.Format = function() {
             return "$" +  v;
         },
 
-        
+
         date : function(v, format) {
             if (!v) {
                 return "";
@@ -10149,24 +10149,24 @@ Ext.util.Format = function() {
             return v.dateFormat(format || "m/d/Y");
         },
 
-        
+
         dateRenderer : function(format) {
             return function(v) {
                 return Ext.util.Format.date(v, format);
             };
         },
 
-        
+
         stripTags : function(v) {
             return !v ? v : String(v).replace(stripTagsRE, "");
         },
 
-        
+
         stripScripts : function(v) {
             return !v ? v : String(v).replace(stripScriptsRe, "");
         },
 
-        
+
         fileSize : function(size) {
             if (size < 1024) {
                 return size + " bytes";
@@ -10177,10 +10177,10 @@ Ext.util.Format = function() {
             }
         },
 
-        
+
         math : function(){
             var fns = {};
-            
+
             return function(v, a){
                 if (!fns[a]) {
                     fns[a] = new Function('v', 'return v ' + a + ';');
@@ -10189,7 +10189,7 @@ Ext.util.Format = function() {
             };
         }(),
 
-        
+
         round : function(value, precision) {
             var result = Number(value);
             if (typeof precision == 'number') {
@@ -10199,7 +10199,7 @@ Ext.util.Format = function() {
             return result;
         },
 
-        
+
         number: function(v, format) {
             if (!format) {
                 return v;
@@ -10237,9 +10237,9 @@ Ext.util.Format = function() {
             psplit = fnum.split('.');
 
             if (hasComma) {
-                var cnum = psplit[0], 
-                    parr = [], 
-                    j    = cnum.length, 
+                var cnum = psplit[0],
+                    parr = [],
+                    j    = cnum.length,
                     m    = Math.floor(j / 3),
                     n    = cnum.length % 3 || 3,
                     i;
@@ -10248,7 +10248,7 @@ Ext.util.Format = function() {
                     if (i != 0) {
                         n = 3;
                     }
-                    
+
                     parr[parr.length] = cnum.substr(i, n);
                     m -= 1;
                 }
@@ -10265,19 +10265,19 @@ Ext.util.Format = function() {
             return (neg ? '-' : '') + format.replace(/[\d,?\.?]+/, fnum);
         },
 
-        
+
         numberRenderer : function(format) {
             return function(v) {
                 return Ext.util.Format.number(v, format);
             };
         },
 
-        
+
         plural : function(v, s, p) {
             return v +' ' + (v == 1 ? s : (p ? p : s+'s'));
         },
 
-        
+
         nl2br : function(v) {
             return Ext.isEmpty(v) ? '' : v.replace(nl2brRe, '<br/>');
         }
@@ -10350,12 +10350,12 @@ Ext.XTemplate = function(){
     me.tpls = tpls;
 };
 Ext.extend(Ext.XTemplate, Ext.Template, {
-    
+
     re : /\{([\w\-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,
-    
+
     codeRe : /\{\[((?:\\\]|.|\n)*?)\]\}/g,
 
-    
+
     applySubTemplate : function(id, values, parent, xindex, xcount){
         var me = this,
             len,
@@ -10378,7 +10378,7 @@ Ext.extend(Ext.XTemplate, Ext.Template, {
         return t.compiled.call(me, vs, parent, xindex, xcount);
     },
 
-    
+
     compileTpl : function(tpl){
         var fm = Ext.util.Format,
             useF = this.disableFormats !== true,
@@ -10417,11 +10417,11 @@ Ext.extend(Ext.XTemplate, Ext.Template, {
         }
 
         function codeFn(m, code){
-            
+
             return "'" + sep + '(' + code.replace(/\\'/g, "'") + ')' + sep + "'";
         }
 
-        
+
         if(Ext.isGecko){
             body = "tpl.compiled = function(values, parent, xindex, xcount){ return '" +
                    tpl.body.replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn) +
@@ -10436,17 +10436,17 @@ Ext.extend(Ext.XTemplate, Ext.Template, {
         return this;
     },
 
-    
+
     applyTemplate : function(values){
         return this.master.compiled.call(this, values, {}, 1, 1);
     },
 
-    
+
     compile : function(){return this;}
 
-    
-    
-    
+
+
+
 
 });
 
@@ -10466,7 +10466,7 @@ Ext.util.CSS = function(){
     var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); };
 
    return {
-   
+
    createStyleSheet : function(cssText, id){
        var ss;
        var head = doc.getElementsByTagName("head")[0];
@@ -10492,7 +10492,7 @@ Ext.util.CSS = function(){
        return ss;
    },
 
-   
+
    removeStyleSheet : function(id){
        var existing = doc.getElementById(id);
        if(existing){
@@ -10500,7 +10500,7 @@ Ext.util.CSS = function(){
        }
    },
 
-   
+
    swapStyleSheet : function(id, url){
        this.removeStyleSheet(id);
        var ss = doc.createElement("link");
@@ -10510,13 +10510,13 @@ Ext.util.CSS = function(){
        ss.setAttribute("href", url);
        doc.getElementsByTagName("head")[0].appendChild(ss);
    },
-   
-   
+
+
    refreshCache : function(){
        return this.getRules(true);
    },
 
-   
+
    cacheStyleSheet : function(ss){
        if(!rules){
            rules = {};
@@ -10528,8 +10528,8 @@ Ext.util.CSS = function(){
            }
        }catch(e){}
    },
-   
-   
+
+
    getRules : function(refreshCache){
                if(rules === null || refreshCache){
                        rules = {};
@@ -10537,13 +10537,13 @@ Ext.util.CSS = function(){
                        for(var i =0, len = ds.length; i < len; i++){
                            try{
                        this.cacheStyleSheet(ds[i]);
-                   }catch(e){} 
+                   }catch(e){}
                }
                }
                return rules;
        },
-       
-       
+
+
    getRule : function(selector, refreshCache){
                var rs = this.getRules(refreshCache);
                if(!Ext.isArray(selector)){
@@ -10556,9 +10556,9 @@ Ext.util.CSS = function(){
                }
                return null;
        },
-       
-       
-       
+
+
+
    updateRule : function(selector, property, value){
                if(!Ext.isArray(selector)){
                        var rule = this.getRule(selector);
@@ -10575,10 +10575,10 @@ Ext.util.CSS = function(){
                }
                return false;
        }
-   };  
+   };
 }();
 Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
-    
+
     constructor : function(el, config){
         this.el = Ext.get(el);
         this.el.unselectable();
@@ -10586,11 +10586,11 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         Ext.apply(this, config);
 
         this.addEvents(
-        
+
         "mousedown",
-        
+
         "click",
-        
+
         "mouseup"
         );
 
@@ -10599,21 +10599,21 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
             this.enable();
         }
 
-        
+
         if(this.handler){
             this.on("click", this.handler,  this.scope || this);
         }
 
-        Ext.util.ClickRepeater.superclass.constructor.call(this);        
+        Ext.util.ClickRepeater.superclass.constructor.call(this);
     },
-    
+
     interval : 20,
     delay: 250,
     preventDefault : true,
     stopDefault : false,
     timer : 0,
 
-    
+
     enable: function(){
         if(this.disabled){
             this.el.on('mousedown', this.handleMouseDown, this);
@@ -10627,7 +10627,7 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         this.disabled = false;
     },
 
-    
+
     disable: function( force){
         if(force || !this.disabled){
             clearTimeout(this.timer);
@@ -10640,7 +10640,7 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         this.disabled = true;
     },
 
-    
+
     setDisabled: function(disabled){
         this[disabled ? 'disable' : 'enable']();
     },
@@ -10654,7 +10654,7 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         }
     },
 
-    
+
     destroy : function() {
         this.disable(true);
         Ext.destroy(this.el);
@@ -10669,7 +10669,7 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         this.fireEvent("click", this, e);
     },
 
-    
+
     handleMouseDown : function(e){
         clearTimeout(this.timer);
         this.el.blur();
@@ -10684,14 +10684,14 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         this.fireEvent("mousedown", this, e);
         this.fireEvent("click", this, e);
 
-        
+
         if (this.accelerate) {
             this.delay = 400;
         }
         this.timer = this.click.defer(this.delay || this.interval, this, [e]);
     },
 
-    
+
     click : function(e){
         this.fireEvent("click", this, e);
         this.timer = this.click.defer(this.accelerate ?
@@ -10706,7 +10706,7 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
     },
 
-    
+
     handleMouseOut : function(){
         clearTimeout(this.timer);
         if(this.pressClass){
@@ -10715,7 +10715,7 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         this.el.on("mouseover", this.handleMouseReturn, this);
     },
 
-    
+
     handleMouseReturn : function(){
         this.el.un("mouseover", this.handleMouseReturn, this);
         if(this.pressClass){
@@ -10724,7 +10724,7 @@ Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {
         this.click();
     },
 
-    
+
     handleMouseUp : function(e){
         clearTimeout(this.timer);
         this.el.un("mouseover", this.handleMouseReturn, this);
@@ -10744,14 +10744,14 @@ Ext.KeyNav = function(el, config){
 };
 
 Ext.KeyNav.prototype = {
-    
+
     disabled : false,
-    
+
     defaultEventAction: "stopEvent",
-    
+
     forceKeyDown : false,
 
-    
+
     relay : function(e){
         var k = e.getKey(),
             h = this.keyToHandler[k];
@@ -10762,12 +10762,12 @@ Ext.KeyNav.prototype = {
         }
     },
 
-    
+
     doRelay : function(e, h, hname){
         return h.call(this.scope || this, e, hname);
     },
 
-    
+
     enter : false,
     left : false,
     right : false,
@@ -10782,7 +10782,7 @@ Ext.KeyNav.prototype = {
     end : false,
     space : false,
 
-    
+
     keyToHandler : {
         37 : "left",
         39 : "right",
@@ -10798,27 +10798,27 @@ Ext.KeyNav.prototype = {
         9  : "tab",
         32 : "space"
     },
-    
+
     stopKeyUp: function(e) {
         var k = e.getKey();
 
         if (k >= 37 && k <= 40) {
-            
-            
+
+
             e.stopEvent();
         }
     },
-    
-    
+
+
     destroy: function(){
-        this.disable();    
+        this.disable();
     },
 
-       
+
        enable: function() {
         if (this.disabled) {
             if (Ext.isSafari2) {
-                
+
                 this.el.on('keyup', this.stopKeyUp, this);
             }
 
@@ -10827,11 +10827,11 @@ Ext.KeyNav.prototype = {
         }
     },
 
-       
+
        disable: function() {
         if (!this.disabled) {
             if (Ext.isSafari2) {
-                
+
                 this.el.un('keyup', this.stopKeyUp, this);
             }
 
@@ -10839,13 +10839,13 @@ Ext.KeyNav.prototype = {
             this.disabled = true;
         }
     },
-    
-    
+
+
     setDisabled : function(disabled){
         this[disabled ? "disable" : "enable"]();
     },
-    
-    
+
+
     isKeydown: function(){
         return this.forceKeyDown || Ext.EventManager.useKeydown;
     }
@@ -10862,10 +10862,10 @@ Ext.KeyMap = function(el, config, eventName){
 };
 
 Ext.KeyMap.prototype = {
-    
+
     stopEvent : false,
 
-    
+
        addBinding : function(config){
         if(Ext.isArray(config)){
             Ext.each(config, function(c){
@@ -10878,8 +10878,8 @@ Ext.KeyMap.prototype = {
             scope = config.scope;
 
        if (config.stopEvent) {
-           this.stopEvent = config.stopEvent;    
-       }       
+           this.stopEvent = config.stopEvent;
+       }
 
         if(typeof keyCode == "string"){
             var ks = [];
@@ -10890,7 +10890,7 @@ Ext.KeyMap.prototype = {
             keyCode = ks;
         }
         var keyArray = Ext.isArray(keyCode);
-        
+
         var handler = function(e){
             if(this.checkModifiers(config, e)){
                 var k = e.getKey();
@@ -10916,8 +10916,8 @@ Ext.KeyMap.prototype = {
         };
         this.bindings.push(handler);
        },
-    
-    
+
+
     checkModifiers: function(config, e){
         var val, key, keys = ['shift', 'ctrl', 'alt'];
         for (var i = 0, len = keys.length; i < len; ++i){
@@ -10930,7 +10930,7 @@ Ext.KeyMap.prototype = {
         return true;
     },
 
-    
+
     on : function(key, fn, scope){
         var keyCode, shift, ctrl, alt;
         if(typeof key == "object" && !Ext.isArray(key)){
@@ -10951,9 +10951,9 @@ Ext.KeyMap.prototype = {
         });
     },
 
-    
+
     handleKeyDown : function(e){
-           if(this.enabled){ 
+           if(this.enabled){
            var b = this.bindings;
            for(var i = 0, len = b.length; i < len; i++){
                b[i].call(this, e);
@@ -10961,12 +10961,12 @@ Ext.KeyMap.prototype = {
            }
        },
 
-       
+
        isEnabled : function(){
            return this.enabled;
        },
 
-       
+
        enable: function(){
                if(!this.enabled){
                    this.el.on(this.eventName, this.handleKeyDown, this);
@@ -10974,15 +10974,15 @@ Ext.KeyMap.prototype = {
                }
        },
 
-       
+
        disable: function(){
                if(this.enabled){
                    this.el.removeListener(this.eventName, this.handleKeyDown, this);
                    this.enabled = false;
                }
        },
-    
-    
+
+
     setDisabled : function(disabled){
         this[disabled ? "disable" : "enable"]();
     }
@@ -10990,7 +10990,7 @@ Ext.KeyMap.prototype = {
 Ext.util.TextMetrics = function(){
     var shared;
     return {
-        
+
         measure : function(el, text, fixedWidth){
             if(!shared){
                 shared = Ext.util.TextMetrics.Instance(el, fixedWidth);
@@ -11000,7 +11000,7 @@ Ext.util.TextMetrics = function(){
             return shared.getSize(text);
         },
 
-        
+
         createInstance : function(el, fixedWidth){
             return Ext.util.TextMetrics.Instance(el, fixedWidth);
         }
@@ -11019,7 +11019,7 @@ Ext.util.TextMetrics.Instance = function(bindTo, fixedWidth){
     }
 
     var instance = {
-        
+
         getSize : function(text){
             ml.update(text);
             var s = ml.getSize();
@@ -11027,25 +11027,25 @@ Ext.util.TextMetrics.Instance = function(bindTo, fixedWidth){
             return s;
         },
 
-        
+
         bind : function(el){
             ml.setStyle(
                 Ext.fly(el).getStyles('font-size','font-style', 'font-weight', 'font-family','line-height', 'text-transform', 'letter-spacing')
             );
         },
 
-        
+
         setFixedWidth : function(width){
             ml.setWidth(width);
         },
 
-        
+
         getWidth : function(text){
             ml.dom.style.width = 'auto';
             return this.getSize(text).width;
         },
 
-        
+
         getHeight : function(text){
             return this.getSize(text).height;
         }
@@ -11057,14 +11057,14 @@ Ext.util.TextMetrics.Instance = function(bindTo, fixedWidth){
 };
 
 Ext.Element.addMethods({
-    
+
     getTextWidth : function(text, min, max){
         return (Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width).constrain(min || 0, max || 1000000);
     }
 });
 
 Ext.util.Cookies = {
-    
+
     set : function(name, value){
         var argv = arguments;
         var argc = arguments.length;
@@ -11075,7 +11075,7 @@ Ext.util.Cookies = {
         document.cookie = name + "=" + escape(value) + ((expires === null) ? "" : ("; expires=" + expires.toGMTString())) + ((path === null) ? "" : ("; path=" + path)) + ((domain === null) ? "" : ("; domain=" + domain)) + ((secure === true) ? "; secure" : "");
     },
 
-    
+
     get : function(name){
         var arg = name + "=";
         var alen = arg.length;
@@ -11095,13 +11095,13 @@ Ext.util.Cookies = {
         return null;
     },
 
-    
+
     clear : function(name){
         if(Ext.util.Cookies.get(name)){
             document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
         }
     },
-    
+
     getCookieVal : function(offset){
         var endstr = document.cookie.indexOf(";", offset);
         if(endstr == -1){
@@ -11116,25 +11116,25 @@ Ext.handleError = function(e) {
 
 
 Ext.Error = function(message) {
-    
+
     this.message = (this.lang[message]) ? this.lang[message] : message;
 };
 
 Ext.Error.prototype = new Error();
 Ext.apply(Ext.Error.prototype, {
-    
+
     lang: {},
 
     name: 'Ext.Error',
-    
+
     getName : function() {
         return this.name;
     },
-    
+
     getMessage : function() {
         return this.message;
     },
-    
+
     toJson : function() {
         return Ext.encode(this);
     }
@@ -11146,22 +11146,22 @@ Ext.ComponentMgr = function(){
     var ptypes = {};
 
     return {
-        
+
         register : function(c){
             all.add(c);
         },
 
-        
+
         unregister : function(c){
             all.remove(c);
         },
 
-        
+
         get : function(id){
             return all.get(id);
         },
 
-        
+
         onAvailable : function(id, fn, scope){
             all.on("add", function(index, o){
                 if(o.id == id){
@@ -11171,56 +11171,56 @@ Ext.ComponentMgr = function(){
             });
         },
 
-        
+
         all : all,
-        
-        
+
+
         types : types,
-        
-        
+
+
         ptypes: ptypes,
-        
-        
+
+
         isRegistered : function(xtype){
-            return types[xtype] !== undefined;    
+            return types[xtype] !== undefined;
         },
-        
-        
+
+
         isPluginRegistered : function(ptype){
-            return ptypes[ptype] !== undefined;    
-        },        
+            return ptypes[ptype] !== undefined;
+        },
+
 
-        
         registerType : function(xtype, cls){
             types[xtype] = cls;
             cls.xtype = xtype;
         },
 
-        
+
         create : function(config, defaultType){
             return config.render ? config : new types[config.xtype || defaultType](config);
         },
 
-        
+
         registerPlugin : function(ptype, cls){
             ptypes[ptype] = cls;
             cls.ptype = ptype;
         },
 
-        
+
         createPlugin : function(config, defaultType){
             var PluginCls = ptypes[config.ptype || defaultType];
             if (PluginCls.init) {
-                return PluginCls;                
+                return PluginCls;
             } else {
                 return new PluginCls(config);
-            }            
+            }
         }
     };
 }();
 
 
-Ext.reg = Ext.ComponentMgr.registerType; 
+Ext.reg = Ext.ComponentMgr.registerType;
 
 Ext.preg = Ext.ComponentMgr.registerPlugin;
 
@@ -11228,52 +11228,52 @@ Ext.create = Ext.ComponentMgr.create;
 Ext.Component = function(config){
     config = config || {};
     if(config.initialConfig){
-        if(config.isAction){           
+        if(config.isAction){
             this.baseAction = config;
         }
-        config = config.initialConfig; 
-    }else if(config.tagName || config.dom || Ext.isString(config)){ 
+        config = config.initialConfig;
+    }else if(config.tagName || config.dom || Ext.isString(config)){
         config = {applyTo: config, id: config.id || config};
     }
 
-    
+
     this.initialConfig = config;
 
     Ext.apply(this, config);
     this.addEvents(
-        
+
         'added',
-        
+
         'disable',
-        
+
         'enable',
-        
+
         'beforeshow',
-        
+
         'show',
-        
+
         'beforehide',
-        
+
         'hide',
-        
+
         'removed',
-        
+
         'beforerender',
-        
+
         'render',
-        
+
         'afterrender',
-        
+
         'beforedestroy',
-        
+
         'destroy',
-        
+
         'beforestaterestore',
-        
+
         'staterestore',
-        
+
         'beforestatesave',
-        
+
         'statesave'
     );
     this.getId();
@@ -11313,73 +11313,73 @@ Ext.Component = function(config){
 Ext.Component.AUTO_ID = 1000;
 
 Ext.extend(Ext.Component, Ext.util.Observable, {
-    
-    
-    
-    
-    
-    
-    
-
-    
-    
-    
-    
-    
-    
-    
-    
-    
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
     disabled : false,
-    
+
     hidden : false,
-    
-    
-    
-    
-    
-    
-    
+
+
+
+
+
+
+
     autoEl : 'div',
 
-    
+
     disabledClass : 'x-item-disabled',
-    
+
     allowDomMove : true,
-    
+
     autoShow : false,
-    
+
     hideMode : 'display',
-    
+
     hideParent : false,
-    
-    
-    
-    
-    
+
+
+
+
+
     rendered : false,
 
-    
-    
 
-    
 
-    
+
+
+
+
     tplWriteMode : 'overwrite',
 
-    
 
-    
+
+
     bubbleEvents: [],
 
 
-    
+
     ctype : 'Ext.Component',
 
-    
+
     actionMode : 'el',
 
-    
+
     getActionEl : function(){
         return this[this.actionMode];
     },
@@ -11396,9 +11396,9 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return p;
     },
 
-    
+
     initComponent : function(){
-        
+
         if(this.listeners){
             this.on(this.listeners);
             delete this.listeners;
@@ -11406,7 +11406,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         this.enableBubble(this.bubbleEvents);
     },
 
-    
+
     render : function(container, position){
         if(!this.rendered && this.fireEvent('beforerender', this) !== false){
             if(!container && this.el){
@@ -11444,8 +11444,8 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
             this.fireEvent('render', this);
 
 
-            
-            
+
+
             var contentTarget = this.getContentTarget();
             if (this.html){
                 contentTarget.update(Ext.DomHelper.markup(this.html));
@@ -11469,11 +11469,11 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
 
 
             if(this.hidden){
-                
+
                 this.doHide();
             }
             if(this.disabled){
-                
+
                 this.disable(true);
             }
 
@@ -11486,7 +11486,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
     },
 
 
-    
+
     update: function(htmlOrData, loadScripts, cb) {
         var contentTarget = this.getContentTarget();
         if (this.tpl && typeof htmlOrData !== "string") {
@@ -11498,23 +11498,23 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
     },
 
 
-    
+
     onAdded : function(container, pos) {
         this.ownerCt = container;
         this.initRef();
         this.fireEvent('added', this, container, pos);
     },
 
-    
+
     onRemoved : function() {
         this.removeRef();
         this.fireEvent('removed', this, this.ownerCt);
         delete this.ownerCt;
     },
 
-    
+
     initRef : function() {
-        
+
         if(this.ref && !this.refOwner){
             var levels = this.ref.split('/'),
                 last = levels.length,
@@ -11527,7 +11527,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
             }
             if(t){
                 t[this.refName = levels[--i]] = this;
-                
+
                 this.refOwner = t;
             }
         }
@@ -11540,7 +11540,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     initState : function(){
         if(Ext.state.Manager){
             var id = this.getStateId();
@@ -11556,12 +11556,12 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     getStateId : function(){
         return this.stateId || ((/^(ext-comp-|ext-gen)/).test(String(this.id)) ? null : this.id);
     },
 
-    
+
     initStateEvents : function(){
         if(this.stateEvents){
             for(var i = 0, e; e = this.stateEvents[i]; i++){
@@ -11570,19 +11570,19 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     applyState : function(state){
         if(state){
             Ext.apply(this, state);
         }
     },
 
-    
+
     getState : function(){
         return null;
     },
 
-    
+
     saveState : function(){
         if(Ext.state.Manager && this.stateful !== false){
             var id = this.getStateId();
@@ -11596,14 +11596,14 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     applyToMarkup : function(el){
         this.allowDomMove = false;
         this.el = Ext.get(el);
         this.render(this.el.dom.parentNode);
     },
 
-    
+
     addClass : function(cls){
         if(this.el){
             this.el.addClass(cls);
@@ -11613,7 +11613,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     removeClass : function(cls){
         if(this.el){
             this.el.removeClass(cls);
@@ -11623,8 +11623,8 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
-    
+
+
     onRender : function(ct, position){
         if(!this.el && this.autoEl){
             if(Ext.isString(this.autoEl)){
@@ -11650,7 +11650,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     getAutoCreate : function(){
         var cfg = Ext.isObject(this.autoCreate) ?
                       this.autoCreate : Ext.apply({}, this.defaultAutoCreate);
@@ -11660,10 +11660,10 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return cfg;
     },
 
-    
+
     afterRender : Ext.emptyFn,
 
-    
+
     destroy : function(){
         if(!this.isDestroyed){
             if(this.fireEvent('beforedestroy', this) !== false){
@@ -11678,7 +11678,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
                         this.container.remove();
                     }
                 }
-                
+
                 if(this.focusTask && this.focusTask.cancel){
                     this.focusTask.cancel();
                 }
@@ -11699,33 +11699,33 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     beforeDestroy : Ext.emptyFn,
 
-    
+
     onDestroy  : Ext.emptyFn,
 
-    
+
     getEl : function(){
         return this.el;
     },
 
-    
+
     getContentTarget : function(){
         return this.el;
     },
 
-    
+
     getId : function(){
         return this.id || (this.id = 'ext-comp-' + (++Ext.Component.AUTO_ID));
     },
 
-    
+
     getItemId : function(){
         return this.itemId || this.getId();
     },
 
-    
+
     focus : function(selectText, delay){
         if(delay){
             this.focusTask = new Ext.util.DelayedTask(this.focus, this, [selectText, false]);
@@ -11741,7 +11741,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     blur : function(){
         if(this.rendered){
             this.el.blur();
@@ -11749,7 +11749,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     disable : function( silent){
         if(this.rendered){
             this.onDisable();
@@ -11761,13 +11761,13 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     onDisable : function(){
         this.getActionEl().addClass(this.disabledClass);
         this.el.dom.disabled = true;
     },
 
-    
+
     enable : function(){
         if(this.rendered){
             this.onEnable();
@@ -11777,18 +11777,18 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     onEnable : function(){
         this.getActionEl().removeClass(this.disabledClass);
         this.el.dom.disabled = false;
     },
 
-    
+
     setDisabled : function(disabled){
         return this[disabled ? 'disable' : 'enable']();
     },
 
-    
+
     show : function(){
         if(this.fireEvent('beforeshow', this) !== false){
             this.hidden = false;
@@ -11803,12 +11803,12 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     onShow : function(){
         this.getVisibilityEl().removeClass('x-hide-' + this.hideMode);
     },
 
-    
+
     hide : function(){
         if(this.fireEvent('beforehide', this) !== false){
             this.doHide();
@@ -11817,7 +11817,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     doHide: function(){
         this.hidden = true;
         if(this.rendered){
@@ -11825,53 +11825,53 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     onHide : function(){
         this.getVisibilityEl().addClass('x-hide-' + this.hideMode);
     },
 
-    
+
     getVisibilityEl : function(){
         return this.hideParent ? this.container : this.getActionEl();
     },
 
-    
+
     setVisible : function(visible){
         return this[visible ? 'show' : 'hide']();
     },
 
-    
+
     isVisible : function(){
         return this.rendered && this.getVisibilityEl().isVisible();
     },
 
-    
+
     cloneConfig : function(overrides){
         overrides = overrides || {};
         var id = overrides.id || Ext.id();
         var cfg = Ext.applyIf(overrides, this.initialConfig);
-        cfg.id = id; 
+        cfg.id = id;
         return new this.constructor(cfg);
     },
 
-    
+
     getXType : function(){
         return this.constructor.xtype;
     },
 
-    
+
     isXType : function(xtype, shallow){
-        
+
         if (Ext.isFunction(xtype)){
-            xtype = xtype.xtype; 
+            xtype = xtype.xtype;
         }else if (Ext.isObject(xtype)){
-            xtype = xtype.constructor.xtype; 
+            xtype = xtype.constructor.xtype;
         }
 
         return !shallow ? ('/' + this.getXTypes() + '/').indexOf('/' + xtype + '/') != -1 : this.constructor.xtype == xtype;
     },
 
-    
+
     getXTypes : function(){
         var tc = this.constructor;
         if(!tc.xtypes){
@@ -11886,20 +11886,20 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return tc.xtypes;
     },
 
-    
+
     findParentBy : function(fn) {
         for (var p = this.ownerCt; (p != null) && !fn(p, this); p = p.ownerCt);
         return p || null;
     },
 
-    
+
     findParentByType : function(xtype, shallow){
         return this.findParentBy(function(c){
             return c.isXType(xtype, shallow);
         });
     },
 
-    
+
     bubble : function(fn, scope, args){
         var p = this;
         while(p){
@@ -11911,12 +11911,12 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         return this;
     },
 
-    
+
     getPositionEl : function(){
         return this.positionEl || this.el;
     },
 
-    
+
     purgeListeners : function(){
         Ext.Component.superclass.purgeListeners.call(this);
         if(this.mons){
@@ -11924,7 +11924,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     clearMons : function(){
         Ext.each(this.mons, function(m){
             m.item.un(m.ename, m.fn, m.scope);
@@ -11932,7 +11932,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         this.mons = [];
     },
 
-    
+
     createMons: function(){
         if(!this.mons){
             this.mons = [];
@@ -11940,7 +11940,7 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
         }
     },
 
-    
+
     mon : function(item, ename, fn, scope, opt){
         this.createMons();
         if(Ext.isObject(ename)){
@@ -11952,13 +11952,13 @@ Ext.extend(Ext.Component, Ext.util.Observable, {
                     continue;
                 }
                 if(Ext.isFunction(o[e])){
-                    
+
                     this.mons.push({
                         item: item, ename: e, fn: o[e], scope: o.scope
                     });
                     item.on(e, o[e], o.scope, o);
       &