Update #10975: Update extJs to 2.2.1, added Ext-Core, YUI and jquery adapters
authorSteffen Kamper <info@sk-typo3.de>
Mon, 27 Apr 2009 14:08:56 +0000 (14:08 +0000)
committerSteffen Kamper <info@sk-typo3.de>
Mon, 27 Apr 2009 14:08:56 +0000 (14:08 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@5368 709f56b5-9817-0410-a4d7-c38de5d9e867

146 files changed:
ChangeLog
typo3/contrib/extjs/adapter/ext/ext-base.js
typo3/contrib/extjs/adapter/jquery/ext-jquery-adapter.js [new file with mode: 0644]
typo3/contrib/extjs/adapter/prototype/ext-prototype-adapter.js
typo3/contrib/extjs/adapter/yui/ext-yui-adapter.js [new file with mode: 0644]
typo3/contrib/extjs/ext-all-debug.js
typo3/contrib/extjs/ext-all.js
typo3/contrib/extjs/ext-core-debug.js [new file with mode: 0644]
typo3/contrib/extjs/ext-core.js [new file with mode: 0644]
typo3/contrib/extjs/locale/ext-lang-ca.js
typo3/contrib/extjs/locale/ext-lang-de.js
typo3/contrib/extjs/locale/ext-lang-el_GR.js
typo3/contrib/extjs/locale/ext-lang-en.js
typo3/contrib/extjs/locale/ext-lang-en_GB.js [new file with mode: 0644]
typo3/contrib/extjs/locale/ext-lang-es.js
typo3/contrib/extjs/locale/ext-lang-fi.js [new file with mode: 0644]
typo3/contrib/extjs/locale/ext-lang-fr.js
typo3/contrib/extjs/locale/ext-lang-fr_CA.js
typo3/contrib/extjs/locale/ext-lang-hr.js
typo3/contrib/extjs/locale/ext-lang-hu.js
typo3/contrib/extjs/locale/ext-lang-it.js
typo3/contrib/extjs/locale/ext-lang-ja.js
typo3/contrib/extjs/locale/ext-lang-nl.js
typo3/contrib/extjs/locale/ext-lang-no_NB.js
typo3/contrib/extjs/locale/ext-lang-no_NN.js
typo3/contrib/extjs/locale/ext-lang-pt_BR.js
typo3/contrib/extjs/locale/ext-lang-pt_PT.js [new file with mode: 0644]
typo3/contrib/extjs/locale/ext-lang-ro.js
typo3/contrib/extjs/locale/ext-lang-ru.js
typo3/contrib/extjs/locale/ext-lang-tr.js
typo3/contrib/extjs/resources/css/borders.css
typo3/contrib/extjs/resources/css/box.css
typo3/contrib/extjs/resources/css/button.css
typo3/contrib/extjs/resources/css/combo.css
typo3/contrib/extjs/resources/css/core.css
typo3/contrib/extjs/resources/css/date-picker.css
typo3/contrib/extjs/resources/css/dd.css
typo3/contrib/extjs/resources/css/debug.css
typo3/contrib/extjs/resources/css/dialog.css
typo3/contrib/extjs/resources/css/editor.css
typo3/contrib/extjs/resources/css/ext-all.css
typo3/contrib/extjs/resources/css/form.css
typo3/contrib/extjs/resources/css/grid.css
typo3/contrib/extjs/resources/css/layout.css
typo3/contrib/extjs/resources/css/menu.css
typo3/contrib/extjs/resources/css/panel.css
typo3/contrib/extjs/resources/css/progress.css
typo3/contrib/extjs/resources/css/qtips.css
typo3/contrib/extjs/resources/css/reset-min.css
typo3/contrib/extjs/resources/css/reset.css
typo3/contrib/extjs/resources/css/resizable.css
typo3/contrib/extjs/resources/css/slider.css
typo3/contrib/extjs/resources/css/tabs.css
typo3/contrib/extjs/resources/css/toolbar.css
typo3/contrib/extjs/resources/css/tree.css
typo3/contrib/extjs/resources/css/window.css
typo3/contrib/extjs/resources/css/xtheme-gray.css
typo3/contrib/extjs/resources/css/xtheme-slate.css [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/box/tb-blue.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/button/btn-arrow.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/button/btn-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/editor/tb-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/form/checkbox.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/form/clear-trigger.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/form/date-trigger.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/form/radio.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/form/search-trigger.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/form/trigger-tpl.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/form/trigger.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/grid-split.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/grid3-hd-btn.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/grid3-hrow-over.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/grid3-hrow.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/grid3-special-col-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/grid3-special-col-sel-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/page-first-disabled.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/page-first.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/page-last-disabled.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/page-last.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/page-next.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/page-prev.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/refresh.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/sort_asc.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/grid/sort_desc.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/menu/checked.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/menu/group-checked.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/menu/item-over.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/menu/menu-parent.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/menu/menu.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/menu/unchecked.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/corners-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/left-right.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/light-hd.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/tool-sprite-tpl.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/tool-sprites.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/top-bottom.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/top-bottom.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/white-corners-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/white-left-right.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/panel/white-top-bottom.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/progress/progress-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/qtip/bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/qtip/close.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/qtip/tip-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/shared/glass-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/shared/hd-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/shared/left-btn.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/shared/right-btn.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/e-handle-dark.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/e-handle.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/ne-handle-dark.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/ne-handle.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/nw-handle-dark.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/nw-handle.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/s-handle-dark.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/s-handle.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/se-handle-dark.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/se-handle.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/square.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/sw-handle-dark.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/sizer/sw-handle.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/slider/slider-bg.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/slider/slider-thumb.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/slider/slider-v-bg.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/slider/slider-v-thumb.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/scroll-left.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/scroll-right.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/scroller-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tab-btm-inactive-left-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tab-btm-inactive-right-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tab-btm-left-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tab-btm-right-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tab-close.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tab-strip-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tab-strip-btm-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tabs/tabs-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/toolbar/bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/toolbar/btn-arrow.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/toolbar/btn-over-bg.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/toolbar/tb-btn-sprite.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/tree/arrows.gif [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/window/left-corners.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/window/left-right.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/window/right-corners.png [new file with mode: 0644]
typo3/contrib/extjs/resources/images/slate/window/top-bottom.png [new file with mode: 0644]
typo3/contrib/extjs/resources/resources.jsb

index 5c17880..db034ee 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-04-27  Steffen Kamper  <info@sk-typo3.de>
+
+       * Update #10975: Update extJs to 2.2.1, added Ext-Core, YUI and jquery adapters 
+
 2009-04-27  Francois Suter  <francois@typo3.org>
 
        * Clean up #10711: Move hard-coded indexed_search tca labels to locallang file (thanks to Andy Grunwald)
index b68f63d..60676d3 100644 (file)
@@ -1,10 +1,9 @@
-/*\r
- * Ext JS Library 2.2\r
- * Copyright(c) 2006-2008, Ext JS, LLC.\r
- * licensing@extjs.com\r
- * \r
- * http://extjs.com/license\r
- */\r
-\r
-Ext={version:"2.2"};window["undefined"]=window["undefined"];Ext.apply=function(C,D,B){if(B){Ext.apply(C,B)}if(C&&D&&typeof D=="object"){for(var A in D){C[A]=D[A]}}return C};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isGecko3=!isSafari&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return }var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+" == \"undefined\"){"+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7,isIE7:isIE7,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var A=arguments;var B=this;return function(){return B.apply(window,A)}},createDelegate:function(C,B,A){var D=this;return function(){var F=B||arguments;if(A===true){F=Array.prototype.slice.call(arguments,0);F=F.concat(B)}else{if(typeof A=="number"){F=Array.prototype.slice.call(arguments,0);var E=[A,0].concat(B);Array.prototype.splice.apply(F,E)}}return D.apply(C||window,F)}},defer:function(C,E,B,A){var D=this.createDelegate(E,B,A);if(C){return setTimeout(D,C)}D();return 0},createSequence:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){var D=C.apply(this||window,arguments);B.apply(A||this||window,arguments);return D}},createInterceptor:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){B.target=this;B.method=C;if(B.apply(A||this||window,arguments)===false){return }return C.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(A){return A.replace(/('|\\)/g,"\\$1")},leftPad:function(D,B,C){var A=new String(D);if(!C){C=" "}while(A.length<B){A=C+A}return A.toString()},format:function(B){var A=Array.prototype.slice.call(arguments,1);return B.replace(/\{(\d+)\}/g,function(C,D){return A[D]})}});String.prototype.toggle=function(B,A){return this==B?A:B};String.prototype.trim=function(){var A=/^\s+|\s+$/g;return function(){return this.replace(A,"")}}();Ext.applyIf(Number.prototype,{constrain:function(B,A){return Math.min(Math.max(this,B),A)}});Ext.applyIf(Array.prototype,{indexOf:function(C){for(var B=0,A=this.length;B<A;B++){if(this[B]==C){return B}}return -1},remove:function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)}return this}});Date.prototype.getElapsed=function(A){return Math.abs((A||new Date()).getTime()-this.getTime())};
-(function(){var B;Ext.lib.Dom={getViewWidth:function(E){return E?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(E){return E?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(E,this.getViewportHeight())},getDocumentWidth:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(E,this.getViewportWidth())},getViewportHeight:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientHeight:document.body.clientHeight}else{return self.innerHeight}},getViewportWidth:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientWidth:document.body.clientWidth}else{return self.innerWidth}},isAncestor:function(F,G){F=Ext.getDom(F);G=Ext.getDom(G);if(!F||!G){return false}if(F.contains&&!Ext.isSafari){return F.contains(G)}else{if(F.compareDocumentPosition){return !!(F.compareDocumentPosition(G)&16)}else{var E=G.parentNode;while(E){if(E==F){return true}else{if(!E.tagName||E.tagName.toUpperCase()=="HTML"){return false}}E=E.parentNode}return false}}},getRegion:function(E){return Ext.lib.Region.getRegion(E)},getY:function(E){return this.getXY(E)[1]},getX:function(E){return this.getXY(E)[0]},getXY:function(G){var F,K,M,N,J=(document.body||document.documentElement);G=Ext.getDom(G);if(G==J){return[0,0]}if(G.getBoundingClientRect){M=G.getBoundingClientRect();N=C(document).getScroll();return[M.left+N.left,M.top+N.top]}var O=0,L=0;F=G;var E=C(G).getStyle("position")=="absolute";while(F){O+=F.offsetLeft;L+=F.offsetTop;if(!E&&C(F).getStyle("position")=="absolute"){E=true}if(Ext.isGecko){K=C(F);var P=parseInt(K.getStyle("borderTopWidth"),10)||0;var H=parseInt(K.getStyle("borderLeftWidth"),10)||0;O+=H;L+=P;if(F!=G&&K.getStyle("overflow")!="visible"){O+=H;L+=P}}F=F.offsetParent}if(Ext.isSafari&&E){O-=J.offsetLeft;L-=J.offsetTop}if(Ext.isGecko&&!E){var I=C(J);O+=parseInt(I.getStyle("borderLeftWidth"),10)||0;L+=parseInt(I.getStyle("borderTopWidth"),10)||0}F=G.parentNode;while(F&&F!=J){if(!Ext.isOpera||(F.tagName!="TR"&&C(F).getStyle("display")!="inline")){O-=F.scrollLeft;L-=F.scrollTop}F=F.parentNode}return[O,L]},setXY:function(E,F){E=Ext.fly(E,"_setXY");E.position();var G=E.translatePoints(F);if(F[0]!==false){E.dom.style.left=G.left+"px"}if(F[1]!==false){E.dom.style.top=G.top+"px"}},setX:function(F,E){this.setXY(F,[E,false])},setY:function(E,F){this.setXY(E,[false,F])}};Ext.lib.Event=function(){var F=false;var G=[];var K=[];var I=0;var H=[];var E=0;var J=null;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function(){if(!this._interval){var L=this;var M=function(){L._tryPreloadAttach()};this._interval=setInterval(M,this.POLL_INTERVAL)}},onAvailable:function(N,L,O,M){H.push({id:N,fn:L,obj:O,override:M,checkReady:false});I=this.POLL_RETRYS;this.startInterval()},addListener:function(Q,M,P){Q=Ext.getDom(Q);if(!Q||!P){return false}if("unload"==M){K[K.length]=[Q,M,P];return true}var O=function(R){return typeof Ext!="undefined"?P(Ext.lib.Event.getEvent(R)):false};var L=[Q,M,P,O];var N=G.length;G[N]=L;this.doAdd(Q,M,O,false);return true},removeListener:function(S,O,R){var Q,N;S=Ext.getDom(S);if(!R){return this.purgeElement(S,false,O)}if("unload"==O){for(Q=0,N=K.length;Q<N;Q++){var M=K[Q];if(M&&M[0]==S&&M[1]==O&&M[2]==R){K.splice(Q,1);return true}}return false}var L=null;var P=arguments[3];if("undefined"==typeof P){P=this._getCacheIndex(S,O,R)}if(P>=0){L=G[P]}if(!S||!L){return false}this.doRemove(S,O,L[this.WFN],false);delete G[P][this.WFN];delete G[P][this.FN];G.splice(P,1);return true},getTarget:function(N,M){N=N.browserEvent||N;var L=N.target||N.srcElement;return this.resolveTextNode(L)},resolveTextNode:function(L){if(Ext.isSafari&&L&&3==L.nodeType){return L.parentNode}else{return L}},getPageX:function(M){M=M.browserEvent||M;var L=M.pageX;if(!L&&0!==L){L=M.clientX||0;if(Ext.isIE){L+=this.getScroll()[1]}}return L},getPageY:function(L){L=L.browserEvent||L;var M=L.pageY;if(!M&&0!==M){M=L.clientY||0;if(Ext.isIE){M+=this.getScroll()[0]}}return M},getXY:function(L){L=L.browserEvent||L;return[this.getPageX(L),this.getPageY(L)]},getRelatedTarget:function(M){M=M.browserEvent||M;var L=M.relatedTarget;if(!L){if(M.type=="mouseout"){L=M.toElement}else{if(M.type=="mouseover"){L=M.fromElement}}}return this.resolveTextNode(L)},getTime:function(N){N=N.browserEvent||N;if(!N.time){var M=new Date().getTime();try{N.time=M}catch(L){this.lastError=L;return M}}return N.time},stopEvent:function(L){this.stopPropagation(L);this.preventDefault(L)},stopPropagation:function(L){L=L.browserEvent||L;if(L.stopPropagation){L.stopPropagation()}else{L.cancelBubble=true}},preventDefault:function(L){L=L.browserEvent||L;if(L.preventDefault){L.preventDefault()}else{L.returnValue=false}},getEvent:function(M){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break}N=N.caller}}return L},getCharCode:function(L){L=L.browserEvent||L;return L.charCode||L.keyCode||0},_getCacheIndex:function(Q,N,P){for(var O=0,M=G.length;O<M;++O){var L=G[O];if(L&&L[this.FN]==P&&L[this.EL]==Q&&L[this.TYPE]==N){return O}}return -1},elCache:{},getEl:function(L){return document.getElementById(L)},clearCache:function(){},_load:function(M){F=true;var L=Ext.lib.Event;if(Ext.isIE){L.doRemove(window,"load",L._load)}},_tryPreloadAttach:function(){if(this.locked){return false}this.locked=true;var R=!F;if(!R){R=(I>0)}var Q=[];for(var M=0,L=H.length;M<L;++M){var P=H[M];if(P){var O=this.getEl(P.id);if(O){if(!P.checkReady||F||O.nextSibling||(document&&document.body)){var N=O;if(P.override){if(P.override===true){N=P.obj}else{N=P.override}}P.fn.call(N,P.obj);H[M]=null}}else{Q.push(P)}}}I=(Q.length===0)?0:I-1;if(R){this.startInterval()}else{clearInterval(this._interval);this._interval=null}this.locked=false;return true},purgeElement:function(P,Q,N){var R=this.getListeners(P,N);if(R){for(var O=0,L=R.length;O<L;++O){var M=R[O];this.removeListener(P,M.type,M.fn)}}if(Q&&P&&P.childNodes){for(O=0,L=P.childNodes.length;O<L;++O){this.purgeElement(P.childNodes[O],Q,N)}}},getListeners:function(M,R){var P=[],L;if(!R){L=[G,K]}else{if(R=="unload"){L=[K]}else{L=[G]}}for(var O=0;O<L.length;++O){var T=L[O];if(T&&T.length>0){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===M&&(!R||R===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.ADJ_SCOPE],index:Q})}}}}return(P.length)?P:null},_unload:function(S){var R=Ext.lib.Event,P,O,M,L,N;for(P=0,L=K.length;P<L;++P){M=K[P];if(M){var Q=window;if(M[R.ADJ_SCOPE]){if(M[R.ADJ_SCOPE]===true){Q=M[R.OBJ]}else{Q=M[R.ADJ_SCOPE]}}M[R.FN].call(Q,R.getEvent(S),M[R.OBJ]);K[P]=null;M=null;Q=null}}K=null;if(G&&G.length>0){O=G.length;while(O){N=O-1;M=G[N];if(M){R.removeListener(M[R.EL],M[R.TYPE],M[R.FN],N)}O=O-1}M=null;R.clearCache()}R.doRemove(window,"unload",R._unload)},getScroll:function(){var L=document.documentElement,M=document.body;if(L&&(L.scrollTop||L.scrollLeft)){return[L.scrollTop,L.scrollLeft]}else{if(M){return[M.scrollTop,M.scrollLeft]}else{return[0,0]}}},doAdd:function(){if(window.addEventListener){return function(O,M,N,L){O.addEventListener(M,N,(L))}}else{if(window.attachEvent){return function(O,M,N,L){O.attachEvent("on"+M,N)}}else{return function(){}}}}(),doRemove:function(){if(window.removeEventListener){return function(O,M,N,L){O.removeEventListener(M,N,(L))}}else{if(window.detachEvent){return function(N,L,M){N.detachEvent("on"+L,M)}}else{return function(){}}}}()}}();var D=Ext.lib.Event;D.on=D.addListener;D.un=D.removeListener;if(document&&document.body){D._load()}else{D.doAdd(window,"load",D._load)}D.doAdd(window,"unload",D._unload);D._tryPreloadAttach();Ext.lib.Ajax={request:function(K,I,E,J,F){if(F){var G=F.headers;if(G){for(var H in G){if(G.hasOwnProperty(H)){this.initHeader(H,G[H],false)}}}if(F.xmlData){if(!G||!G["Content-Type"]){this.initHeader("Content-Type","text/xml",false)}K=(K?K:(F.method?F.method:"POST"));J=F.xmlData}else{if(F.jsonData){if(!G||!G["Content-Type"]){this.initHeader("Content-Type","application/json",false)}K=(K?K:(F.method?F.method:"POST"));J=typeof F.jsonData=="object"?Ext.encode(F.jsonData):F.jsonData}}}return this.asyncRequest(K,I,E,J)},serializeForm:function(F){if(typeof F=="string"){F=(document.getElementById(F)||document.forms[F])}var G,E,H,J,K="",M=false;for(var L=0;L<F.elements.length;L++){G=F.elements[L];J=F.elements[L].disabled;E=F.elements[L].name;H=F.elements[L].value;if(!J&&E){switch(G.type){case"select-one":case"select-multiple":for(var I=0;I<G.options.length;I++){if(G.options[I].selected){if(Ext.isIE){K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].attributes["value"].specified?G.options[I].value:G.options[I].text)+"&"}else{K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].hasAttribute("value")?G.options[I].value:G.options[I].text)+"&"}}}break;case"radio":case"checkbox":if(G.checked){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&"}break;case"file":case undefined:case"reset":case"button":break;case"submit":if(M==false){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";M=true}break;default:K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";break}}}K=K.substr(0,K.length-1);return K},headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",hasDefaultHeaders:true,defaultHeaders:{},poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(E){this.activeX.unshift(E)},setDefaultPostHeader:function(E){this.useDefaultHeader=E},setDefaultXhrHeader:function(E){this.useDefaultXhrHeader=E},setPollingInterval:function(E){if(typeof E=="number"&&isFinite(E)){this.pollInterval=E}},createXhrObject:function(I){var H,E;try{E=new XMLHttpRequest();H={conn:E,tId:I}}catch(G){for(var F=0;F<this.activeX.length;++F){try{E=new ActiveXObject(this.activeX[F]);H={conn:E,tId:I};break}catch(G){}}}finally{return H}},getConnectionObject:function(){var F;var G=this.transactionId;try{F=this.createXhrObject(G);if(F){this.transactionId++}}catch(E){}finally{return F}},asyncRequest:function(I,F,H,E){var G=this.getConnectionObject();if(!G){return null}else{G.conn.open(I,F,true);if(this.useDefaultXhrHeader){if(!this.defaultHeaders["X-Requested-With"]){this.initHeader("X-Requested-With",this.defaultXhrHeader,true)}}if(E&&this.useDefaultHeader&&(!this.hasHeaders||!this.headers["Content-Type"])){this.initHeader("Content-Type",this.defaultPostHeader)}if(this.hasDefaultHeaders||this.hasHeaders){this.setHeader(G)}this.handleReadyState(G,H);G.conn.send(E||null);return G}},handleReadyState:function(F,G){var E=this;if(G&&G.timeout){this.timeout[F.tId]=window.setTimeout(function(){E.abort(F,G,true)},G.timeout)}this.poll[F.tId]=window.setInterval(function(){if(F.conn&&F.conn.readyState==4){window.clearInterval(E.poll[F.tId]);delete E.poll[F.tId];if(G&&G.timeout){window.clearTimeout(E.timeout[F.tId]);delete E.timeout[F.tId]}E.handleTransactionResponse(F,G)}},this.pollInterval)},handleTransactionResponse:function(I,J,E){if(!J){this.releaseObject(I);return }var G,F;try{if(I.conn.status!==undefined&&I.conn.status!=0){G=I.conn.status}else{G=13030}}catch(H){G=13030}if(G>=200&&G<300){F=this.createResponseObject(I,J.argument);if(J.success){if(!J.scope){J.success(F)}else{J.success.apply(J.scope,[F])}}}else{switch(G){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:F=this.createExceptionObject(I.tId,J.argument,(E?E:false));if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}break;default:F=this.createResponseObject(I,J.argument);if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}}}this.releaseObject(I);F=null},createResponseObject:function(E,K){var H={};var M={};try{var G=E.conn.getAllResponseHeaders();var J=G.split("\n");for(var I=0;I<J.length;I++){var F=J[I].indexOf(":");if(F!=-1){M[J[I].substring(0,F)]=J[I].substring(F+2)}}}catch(L){}H.tId=E.tId;H.status=E.conn.status;H.statusText=E.conn.statusText;H.getResponseHeader=M;H.getAllResponseHeaders=G;H.responseText=E.conn.responseText;H.responseXML=E.conn.responseXML;if(typeof K!==undefined){H.argument=K}return H},createExceptionObject:function(L,H,E){var J=0;var K="communication failure";var G=-1;var F="transaction aborted";var I={};I.tId=L;if(E){I.status=G;I.statusText=F}else{I.status=J;I.statusText=K}if(H){I.argument=H}return I},initHeader:function(E,H,G){var F=(G)?this.defaultHeaders:this.headers;if(F[E]===undefined){F[E]=H}else{F[E]=H+","+F[E]}if(G){this.hasDefaultHeaders=true}else{this.hasHeaders=true}},setHeader:function(E){if(this.hasDefaultHeaders){for(var F in this.defaultHeaders){if(this.defaultHeaders.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.defaultHeaders[F])}}}if(this.hasHeaders){for(var F in this.headers){if(this.headers.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.headers[F])}}this.headers={};this.hasHeaders=false}},resetDefaultHeaders:function(){delete this.defaultHeaders;this.defaultHeaders={};this.hasDefaultHeaders=false},abort:function(F,G,E){if(this.isCallInProgress(F)){F.conn.abort();window.clearInterval(this.poll[F.tId]);delete this.poll[F.tId];if(E){delete this.timeout[F.tId]}this.handleTransactionResponse(F,G,true);return true}else{return false}},isCallInProgress:function(E){if(E.conn){return E.conn.readyState!=4&&E.conn.readyState!=0}else{return false}},releaseObject:function(E){E.conn=null;E=null},activeX:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]};Ext.lib.Region=function(G,H,E,F){this.top=G;this[1]=G;this.right=H;this.bottom=E;this.left=F;this[0]=F};Ext.lib.Region.prototype={contains:function(E){return(E.left>=this.left&&E.right<=this.right&&E.top>=this.top&&E.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(I){var G=Math.max(this.top,I.top);var H=Math.min(this.right,I.right);var E=Math.min(this.bottom,I.bottom);var F=Math.max(this.left,I.left);if(E>=G&&H>=F){return new Ext.lib.Region(G,H,E,F)}else{return null}},union:function(I){var G=Math.min(this.top,I.top);var H=Math.max(this.right,I.right);var E=Math.max(this.bottom,I.bottom);var F=Math.min(this.left,I.left);return new Ext.lib.Region(G,H,E,F)},constrainTo:function(E){this.top=this.top.constrain(E.top,E.bottom);this.bottom=this.bottom.constrain(E.top,E.bottom);this.left=this.left.constrain(E.left,E.right);this.right=this.right.constrain(E.left,E.right);return this},adjust:function(G,F,E,H){this.top+=G;this.left+=F;this.right+=H;this.bottom+=E;return this}};Ext.lib.Region.getRegion=function(H){var J=Ext.lib.Dom.getXY(H);var G=J[1];var I=J[0]+H.offsetWidth;var E=J[1]+H.offsetHeight;var F=J[0];return new Ext.lib.Region(G,I,E,F)};Ext.lib.Point=function(E,F){if(Ext.isArray(E)){F=E[1];E=E[0]}this.x=this.right=this.left=this[0]=E;this.y=this.top=this.bottom=this[1]=F};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.lib.Anim={scroll:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Scroll)},motion:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Motion)},color:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.ColorAnim)},run:function(I,F,K,L,E,H,G){G=G||Ext.lib.AnimBase;if(typeof L=="string"){L=Ext.lib.Easing[L]}var J=new G(I,F,K,L);J.animateX(function(){Ext.callback(E,H)});return J}};function C(E){if(!B){B=new Ext.Element.Flyweight()}B.dom=E;return B}if(Ext.isIE){function A(){var E=Function.prototype;delete E.createSequence;delete E.defer;delete E.createDelegate;delete E.createCallback;delete E.createInterceptor;window.detachEvent("onunload",A)}window.attachEvent("onunload",A)}Ext.lib.AnimBase=function(F,E,G,H){if(F){this.init(F,E,G,H)}};Ext.lib.AnimBase.prototype={toString:function(){var E=this.getEl();var F=E.id||E.tagName;return("Anim "+F)},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(E,G,F){return this.method(this.currentFrame,G,F-G,this.totalFrames)},setAttribute:function(E,G,F){if(this.patterns.noNegatives.test(E)){G=(G>0)?G:0}Ext.fly(this.getEl(),"_anim").setStyle(E,G+F)},getAttribute:function(E){var G=this.getEl();var I=C(G).getStyle(E);if(I!=="auto"&&!this.patterns.offsetUnit.test(I)){return parseFloat(I)}var F=this.patterns.offsetAttribute.exec(E)||[];var J=!!(F[3]);var H=!!(F[2]);if(H||(C(G).getStyle("position")=="absolute"&&J)){I=G["offset"+F[0].charAt(0).toUpperCase()+F[0].substr(1)]}else{I=0}return I},getDefaultUnit:function(E){if(this.patterns.defaultUnit.test(E)){return"px"}return""},animateX:function(G,E){var F=function(){this.onComplete.removeListener(F);if(typeof G=="function"){G.call(E||this,this)}};this.onComplete.addListener(F,this);this.animate()},setRuntimeAttribute:function(F){var K;var G;var H=this.attributes;this.runtimeAttributes[F]={};var J=function(L){return(typeof L!=="undefined")};if(!J(H[F]["to"])&&!J(H[F]["by"])){return false}K=(J(H[F]["from"]))?H[F]["from"]:this.getAttribute(F);if(J(H[F]["to"])){G=H[F]["to"]}else{if(J(H[F]["by"])){if(K.constructor==Array){G=[];for(var I=0,E=K.length;I<E;++I){G[I]=K[I]+H[F]["by"][I]}}else{G=K+H[F]["by"]}}}this.runtimeAttributes[F].start=K;this.runtimeAttributes[F].end=G;this.runtimeAttributes[F].unit=(J(H[F].unit))?H[F]["unit"]:this.getDefaultUnit(F)},init:function(G,L,K,E){var F=false;var H=null;var J=0;G=Ext.getDom(G);this.attributes=L||{};this.duration=K||1;this.method=E||Ext.lib.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=Ext.lib.AnimMgr.fps;this.getEl=function(){return G};this.isAnimated=function(){return F};this.getStartTime=function(){return H};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(Ext.lib.AnimMgr.fps*this.duration):this.duration;Ext.lib.AnimMgr.registerElement(this)};this.stop=function(O){if(O){this.currentFrame=this.totalFrames;this._onTween.fire()}Ext.lib.AnimMgr.stop(this)};var N=function(){this.onStart.fire();this.runtimeAttributes={};for(var O in this.attributes){this.setRuntimeAttribute(O)}F=true;J=0;H=new Date()};var M=function(){var Q={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};Q.toString=function(){return("duration: "+Q.duration+", currentFrame: "+Q.currentFrame)};this.onTween.fire(Q);var P=this.runtimeAttributes;for(var O in P){this.setAttribute(O,this.doMethod(O,P[O].start,P[O].end),P[O].unit)}J+=1};var I=function(){var O=(new Date()-H)/1000;var P={duration:O,frames:J,fps:J/O};P.toString=function(){return("duration: "+P.duration+", frames: "+P.frames+", fps: "+P.fps)};F=false;J=0;this.onComplete.fire(P)};this._onStart=new Ext.util.Event(this);this.onStart=new Ext.util.Event(this);this.onTween=new Ext.util.Event(this);this._onTween=new Ext.util.Event(this);this.onComplete=new Ext.util.Event(this);this._onComplete=new Ext.util.Event(this);this._onStart.addListener(N);this._onTween.addListener(M);this._onComplete.addListener(I)}};Ext.lib.AnimMgr=new function(){var G=null;var F=[];var E=0;this.fps=1000;this.delay=1;this.registerElement=function(J){F[F.length]=J;E+=1;J._onStart.fire();this.start()};this.unRegister=function(K,J){K._onComplete.fire();J=J||I(K);if(J!=-1){F.splice(J,1)}E-=1;if(E<=0){this.stop()}};this.start=function(){if(G===null){G=setInterval(this.run,this.delay)}};this.stop=function(L){if(!L){clearInterval(G);for(var K=0,J=F.length;K<J;++K){if(F[0].isAnimated()){this.unRegister(F[0],0)}}F=[];G=null;E=0}else{this.unRegister(L)}};this.run=function(){for(var L=0,J=F.length;L<J;++L){var K=F[L];if(!K||!K.isAnimated()){continue}if(K.currentFrame<K.totalFrames||K.totalFrames===null){K.currentFrame+=1;if(K.useSeconds){H(K)}K._onTween.fire()}else{Ext.lib.AnimMgr.stop(K,L)}}};var I=function(L){for(var K=0,J=F.length;K<J;++K){if(F[K]==L){return K}}return -1};var H=function(K){var N=K.totalFrames;var M=K.currentFrame;var L=(K.currentFrame*K.duration*1000/K.totalFrames);var J=(new Date()-K.getStartTime());var O=0;if(J<K.duration*1000){O=Math.round((J/L-1)*K.currentFrame)}else{O=N-(M+1)}if(O>0&&isFinite(O)){if(K.currentFrame+O>=N){O=N-(M+1)}K.currentFrame+=O}}};Ext.lib.Bezier=new function(){this.getPosition=function(I,H){var J=I.length;var G=[];for(var F=0;F<J;++F){G[F]=[I[F][0],I[F][1]]}for(var E=1;E<J;++E){for(F=0;F<J-E;++F){G[F][0]=(1-H)*G[F][0]+H*G[parseInt(F+1,10)][0];G[F][1]=(1-H)*G[F][1]+H*G[parseInt(F+1,10)][1]}}return[G[0][0],G[0][1]]}};(function(){Ext.lib.ColorAnim=function(I,H,J,K){Ext.lib.ColorAnim.superclass.constructor.call(this,I,H,J,K)};Ext.extend(Ext.lib.ColorAnim,Ext.lib.AnimBase);var F=Ext.lib;var G=F.ColorAnim.superclass;var E=F.ColorAnim.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("ColorAnim "+I)};E.patterns.color=/color$/i;E.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;E.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;E.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;E.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;E.parseColor=function(H){if(H.length==3){return H}var I=this.patterns.hex.exec(H);if(I&&I.length==4){return[parseInt(I[1],16),parseInt(I[2],16),parseInt(I[3],16)]}I=this.patterns.rgb.exec(H);if(I&&I.length==4){return[parseInt(I[1],10),parseInt(I[2],10),parseInt(I[3],10)]}I=this.patterns.hex3.exec(H);if(I&&I.length==4){return[parseInt(I[1]+I[1],16),parseInt(I[2]+I[2],16),parseInt(I[3]+I[3],16)]}return null};E.getAttribute=function(H){var J=this.getEl();if(this.patterns.color.test(H)){var K=C(J).getStyle(H);if(this.patterns.transparent.test(K)){var I=J.parentNode;K=C(I).getStyle(H);while(I&&this.patterns.transparent.test(K)){I=I.parentNode;K=C(I).getStyle(H);if(I.tagName.toUpperCase()=="HTML"){K="#fff"}}}}else{K=G.getAttribute.call(this,H)}return K};E.doMethod=function(I,M,J){var L;if(this.patterns.color.test(I)){L=[];for(var K=0,H=M.length;K<H;++K){L[K]=G.doMethod.call(this,I,M[K],J[K])}L="rgb("+Math.floor(L[0])+","+Math.floor(L[1])+","+Math.floor(L[2])+")"}else{L=G.doMethod.call(this,I,M,J)}return L};E.setRuntimeAttribute=function(I){G.setRuntimeAttribute.call(this,I);if(this.patterns.color.test(I)){var K=this.attributes;var M=this.parseColor(this.runtimeAttributes[I].start);var J=this.parseColor(this.runtimeAttributes[I].end);if(typeof K[I]["to"]==="undefined"&&typeof K[I]["by"]!=="undefined"){J=this.parseColor(K[I].by);for(var L=0,H=M.length;L<H;++L){J[L]=M[L]+J[L]}}this.runtimeAttributes[I].start=M;this.runtimeAttributes[I].end=J}}})();Ext.lib.Easing={easeNone:function(F,E,H,G){return H*F/G+E},easeIn:function(F,E,H,G){return H*(F/=G)*F+E},easeOut:function(F,E,H,G){return -H*(F/=G)*(F-2)+E},easeBoth:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E},easeInStrong:function(F,E,H,G){return H*(F/=G)*F*F*F+E},easeOutStrong:function(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E},easeBothStrong:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E},elasticIn:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return -(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E},elasticOut:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return F*Math.pow(2,-10*G)*Math.sin((G*J-H)*(2*Math.PI)/I)+K+E},elasticBoth:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J/2)==2){return E+K}if(!I){I=J*(0.3*1.5)}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}if(G<1){return -0.5*(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E}return F*Math.pow(2,-10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I)*0.5+K+E},backIn:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*(F/=H)*F*((G+1)*F-G)+E},backOut:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*((F=F/H-1)*F*((G+1)*F+G)+1)+E},backBoth:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}if((F/=H/2)<1){return I/2*(F*F*(((G*=(1.525))+1)*F-G))+E}return I/2*((F-=2)*F*(((G*=(1.525))+1)*F+G)+2)+E},bounceIn:function(F,E,H,G){return H-Ext.lib.Easing.bounceOut(G-F,0,H,G)+E},bounceOut:function(F,E,H,G){if((F/=G)<(1/2.75)){return H*(7.5625*F*F)+E}else{if(F<(2/2.75)){return H*(7.5625*(F-=(1.5/2.75))*F+0.75)+E}else{if(F<(2.5/2.75)){return H*(7.5625*(F-=(2.25/2.75))*F+0.9375)+E}}}return H*(7.5625*(F-=(2.625/2.75))*F+0.984375)+E},bounceBoth:function(F,E,H,G){if(F<G/2){return Ext.lib.Easing.bounceIn(F*2,0,H,G)*0.5+E}return Ext.lib.Easing.bounceOut(F*2-G,0,H,G)*0.5+H*0.5+E}};(function(){Ext.lib.Motion=function(K,J,L,M){if(K){Ext.lib.Motion.superclass.constructor.call(this,K,J,L,M)}};Ext.extend(Ext.lib.Motion,Ext.lib.ColorAnim);var H=Ext.lib;var I=H.Motion.superclass;var F=H.Motion.prototype;F.toString=function(){var J=this.getEl();var K=J.id||J.tagName;return("Motion "+K)};F.patterns.points=/^points$/i;F.setAttribute=function(J,L,K){if(this.patterns.points.test(J)){K=K||"px";I.setAttribute.call(this,"left",L[0],K);I.setAttribute.call(this,"top",L[1],K)}else{I.setAttribute.call(this,J,L,K)}};F.getAttribute=function(J){if(this.patterns.points.test(J)){var K=[I.getAttribute.call(this,"left"),I.getAttribute.call(this,"top")]}else{K=I.getAttribute.call(this,J)}return K};F.doMethod=function(J,N,K){var M=null;if(this.patterns.points.test(J)){var L=this.method(this.currentFrame,0,100,this.totalFrames)/100;M=H.Bezier.getPosition(this.runtimeAttributes[J],L)}else{M=I.doMethod.call(this,J,N,K)}return M};F.setRuntimeAttribute=function(S){if(this.patterns.points.test(S)){var K=this.getEl();var M=this.attributes;var J;var O=M["points"]["control"]||[];var L;var P,R;if(O.length>0&&!Ext.isArray(O[0])){O=[O]}else{var N=[];for(P=0,R=O.length;P<R;++P){N[P]=O[P]}O=N}Ext.fly(K,"_anim").position();if(G(M["points"]["from"])){Ext.lib.Dom.setXY(K,M["points"]["from"])}else{Ext.lib.Dom.setXY(K,Ext.lib.Dom.getXY(K))}J=this.getAttribute("points");if(G(M["points"]["to"])){L=E.call(this,M["points"]["to"],J);var Q=Ext.lib.Dom.getXY(this.getEl());for(P=0,R=O.length;P<R;++P){O[P]=E.call(this,O[P],J)}}else{if(G(M["points"]["by"])){L=[J[0]+M["points"]["by"][0],J[1]+M["points"]["by"][1]];for(P=0,R=O.length;P<R;++P){O[P]=[J[0]+O[P][0],J[1]+O[P][1]]}}}this.runtimeAttributes[S]=[J];if(O.length>0){this.runtimeAttributes[S]=this.runtimeAttributes[S].concat(O)}this.runtimeAttributes[S][this.runtimeAttributes[S].length]=L}else{I.setRuntimeAttribute.call(this,S)}};var E=function(J,L){var K=Ext.lib.Dom.getXY(this.getEl());J=[J[0]-K[0]+L[0],J[1]-K[1]+L[1]];return J};var G=function(J){return(typeof J!=="undefined")}})();(function(){Ext.lib.Scroll=function(I,H,J,K){if(I){Ext.lib.Scroll.superclass.constructor.call(this,I,H,J,K)}};Ext.extend(Ext.lib.Scroll,Ext.lib.ColorAnim);var F=Ext.lib;var G=F.Scroll.superclass;var E=F.Scroll.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("Scroll "+I)};E.doMethod=function(H,K,I){var J=null;if(H=="scroll"){J=[this.method(this.currentFrame,K[0],I[0]-K[0],this.totalFrames),this.method(this.currentFrame,K[1],I[1]-K[1],this.totalFrames)]}else{J=G.doMethod.call(this,H,K,I)}return J};E.getAttribute=function(H){var J=null;var I=this.getEl();if(H=="scroll"){J=[I.scrollLeft,I.scrollTop]}else{J=G.getAttribute.call(this,H)}return J};E.setAttribute=function(H,K,J){var I=this.getEl();if(H=="scroll"){I.scrollLeft=K[0];I.scrollTop=K[1]}else{G.setAttribute.call(this,H,K,J)}}})()})();
+/*
+ * Ext JS Library 2.2.1
+ * Copyright(c) 2006-2009, Ext JS, LLC.
+ * licensing@extjs.com
+ * 
+ * http://extjs.com/license
+ */
+
+Ext={version:"2.2.1"};window["undefined"]=window["undefined"];Ext.apply=function(d,e,b){if(b){Ext.apply(d,b)}if(d&&e&&typeof e=="object"){for(var a in e){d[a]=e[a]}}return d};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isChrome=ua.indexOf("chrome")>-1,isSafari=!isChrome&&(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isIE8=!isOpera&&ua.indexOf("msie 8")>-1,isGecko=!isSafari&&!isChrome&&ua.indexOf("gecko")>-1,isGecko3=isGecko&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http://extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return}var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}if(Ext.isIE&&overrides.toString!=origclass.toString){p.toString=overrides.toString}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+' == "undefined"){'+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isDate(ov)){var s=Ext.encode(ov).replace(/"/g,"");buf.push(k,"=",s,"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"||isNaN(v)){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isChrome:isChrome,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7&&!isIE8,isIE7:isIE7,isIE8:isIE8,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var a=arguments;var b=this;return function(){return b.apply(window,a)}},createDelegate:function(c,b,a){var d=this;return function(){var f=b||arguments;if(a===true){f=Array.prototype.slice.call(arguments,0);f=f.concat(b)}else{if(typeof a=="number"){f=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(f,e)}}return d.apply(c||window,f)}},defer:function(c,e,b,a){var d=this.createDelegate(e,b,a);if(c){return setTimeout(d,c)}d();return 0},createSequence:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}},createInterceptor:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){b.target=this;b.method=c;if(b.apply(a||this||window,arguments)===false){return}return c.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=new String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a.toString()},format:function(b){var a=Array.prototype.slice.call(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.applyIf(Array.prototype,{indexOf:function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1},remove:function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this}});Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};(function(){var b;Ext.lib.Dom={getViewWidth:function(e){return e?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(e){return e?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){var e=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(e,this.getViewportHeight())},getDocumentWidth:function(){var e=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(e,this.getViewportWidth())},getViewportHeight:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientHeight:document.body.clientHeight}else{return self.innerHeight}},getViewportWidth:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientWidth:document.body.clientWidth}else{return self.innerWidth}},isAncestor:function(f,g){f=Ext.getDom(f);g=Ext.getDom(g);if(!f||!g){return false}if(f.contains&&!Ext.isSafari){return f.contains(g)}else{if(f.compareDocumentPosition){return !!(f.compareDocumentPosition(g)&16)}else{var e=g.parentNode;while(e){if(e==f){return true}else{if(!e.tagName||e.tagName.toUpperCase()=="HTML"){return false}}e=e.parentNode}return false}}},getRegion:function(e){return Ext.lib.Region.getRegion(e)},getY:function(e){return this.getXY(e)[1]},getX:function(e){return this.getXY(e)[0]},getXY:function(g){var f,k,m,n,j=(document.body||document.documentElement);g=Ext.getDom(g);if(g==j){return[0,0]}if(g.getBoundingClientRect){m=g.getBoundingClientRect();n=c(document).getScroll();return[m.left+n.left,m.top+n.top]}var o=0,l=0;f=g;var e=c(g).getStyle("position")=="absolute";while(f){o+=f.offsetLeft;l+=f.offsetTop;if(!e&&c(f).getStyle("position")=="absolute"){e=true}if(Ext.isGecko){k=c(f);var q=parseInt(k.getStyle("borderTopWidth"),10)||0;var h=parseInt(k.getStyle("borderLeftWidth"),10)||0;o+=h;l+=q;if(f!=g&&k.getStyle("overflow")!="visible"){o+=h;l+=q}}f=f.offsetParent}if(Ext.isSafari&&e){o-=j.offsetLeft;l-=j.offsetTop}if(Ext.isGecko&&!e){var i=c(j);o+=parseInt(i.getStyle("borderLeftWidth"),10)||0;l+=parseInt(i.getStyle("borderTopWidth"),10)||0}f=g.parentNode;while(f&&f!=j){if(!Ext.isOpera||(f.tagName!="TR"&&c(f).getStyle("display")!="inline")){o-=f.scrollLeft;l-=f.scrollTop}f=f.parentNode}return[o,l]},setXY:function(e,f){e=Ext.fly(e,"_setXY");e.position();var g=e.translatePoints(f);if(f[0]!==false){e.dom.style.left=g.left+"px"}if(f[1]!==false){e.dom.style.top=g.top+"px"}},setX:function(f,e){this.setXY(f,[e,false])},setY:function(e,f){this.setXY(e,[false,f])}};Ext.lib.Event=function(){var f=false;var g=[];var k=[];var i=0;var h=[];var e=0;var j=null;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function(){if(!this._interval){var l=this;var m=function(){l._tryPreloadAttach()};this._interval=setInterval(m,this.POLL_INTERVAL)}},onAvailable:function(n,l,o,m){h.push({id:n,fn:l,obj:o,override:m,checkReady:false});i=this.POLL_RETRYS;this.startInterval()},addListener:function(q,m,p){q=Ext.getDom(q);if(!q||!p){return false}if("unload"==m){k[k.length]=[q,m,p];return true}var o=function(r){return typeof Ext!="undefined"?p(Ext.lib.Event.getEvent(r)):false};var l=[q,m,p,o];var n=g.length;g[n]=l;this.doAdd(q,m,o,false);return true},removeListener:function(s,o,r){var q,n;s=Ext.getDom(s);if(!r){return this.purgeElement(s,false,o)}if("unload"==o){for(q=0,n=k.length;q<n;q++){var m=k[q];if(m&&m[0]==s&&m[1]==o&&m[2]==r){k.splice(q,1);return true}}return false}var l=null;var p=arguments[3];if("undefined"==typeof p){p=this._getCacheIndex(s,o,r)}if(p>=0){l=g[p]}if(!s||!l){return false}this.doRemove(s,o,l[this.WFN],false);delete g[p][this.WFN];delete g[p][this.FN];g.splice(p,1);return true},getTarget:function(n,m){n=n.browserEvent||n;var l=n.target||n.srcElement;return this.resolveTextNode(l)},resolveTextNode:function(l){if(Ext.isSafari&&l&&3==l.nodeType){return l.parentNode}else{return l}},getPageX:function(m){m=m.browserEvent||m;var l=m.pageX;if(!l&&0!==l){l=m.clientX||0;if(Ext.isIE){l+=this.getScroll()[1]}}return l},getPageY:function(l){l=l.browserEvent||l;var m=l.pageY;if(!m&&0!==m){m=l.clientY||0;if(Ext.isIE){m+=this.getScroll()[0]}}return m},getXY:function(l){l=l.browserEvent||l;return[this.getPageX(l),this.getPageY(l)]},getRelatedTarget:function(m){m=m.browserEvent||m;var l=m.relatedTarget;if(!l){if(m.type=="mouseout"){l=m.toElement}else{if(m.type=="mouseover"){l=m.fromElement}}}return this.resolveTextNode(l)},getTime:function(n){n=n.browserEvent||n;if(!n.time){var m=new Date().getTime();try{n.time=m}catch(l){this.lastError=l;return m}}return n.time},stopEvent:function(l){this.stopPropagation(l);this.preventDefault(l)},stopPropagation:function(l){l=l.browserEvent||l;if(l.stopPropagation){l.stopPropagation()}else{l.cancelBubble=true}},preventDefault:function(l){l=l.browserEvent||l;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}},getEvent:function(m){var l=m||window.event;if(!l){var n=this.getEvent.caller;while(n){l=n.arguments[0];if(l&&Event==l.constructor){break}n=n.caller}}return l},getCharCode:function(l){l=l.browserEvent||l;return l.charCode||l.keyCode||0},_getCacheIndex:function(q,n,p){for(var o=0,m=g.length;o<m;++o){var l=g[o];if(l&&l[this.FN]==p&&l[this.EL]==q&&l[this.TYPE]==n){return o}}return -1},elCache:{},getEl:function(l){return document.getElementById(l)},clearCache:function(){},_load:function(m){f=true;var l=Ext.lib.Event;if(Ext.isIE){l.doRemove(window,"load",l._load)}},_tryPreloadAttach:function(){if(this.locked){return false}this.locked=true;var r=!f;if(!r){r=(i>0)}var q=[];for(var m=0,l=h.length;m<l;++m){var p=h[m];if(p){var o=this.getEl(p.id);if(o){if(!p.checkReady||f||o.nextSibling||(document&&document.body)){var n=o;if(p.override){if(p.override===true){n=p.obj}else{n=p.override}}p.fn.call(n,p.obj);h[m]=null}}else{q.push(p)}}}i=(q.length===0)?0:i-1;if(r){this.startInterval()}else{clearInterval(this._interval);this._interval=null}this.locked=false;return true},purgeElement:function(q,r,o){var s=this.getListeners(q,o);if(s){for(var p=0,m=s.length;p<m;++p){var n=s[p];this.removeListener(q,n.type,n.fn)}}if(r&&q&&q.childNodes){for(p=0,m=q.childNodes.length;p<m;++p){this.purgeElement(q.childNodes[p],r,o)}}},getListeners:function(n,s){var q=[],m;if(!s){m=[g,k]}else{if(s=="unload"){m=[k]}else{m=[g]}}for(var p=0;p<m.length;++p){var u=m[p];if(u&&u.length>0){for(var r=0,t=u.length;r<t;++r){var o=u[r];if(o&&o[this.EL]===n&&(!s||s===o[this.TYPE])){q.push({type:o[this.TYPE],fn:o[this.FN],obj:o[this.OBJ],adjust:o[this.ADJ_SCOPE],index:r})}}}}return(q.length)?q:null},_unload:function(t){var s=Ext.lib.Event,q,p,n,m,o;for(q=0,m=k.length;q<m;++q){n=k[q];if(n){var r=window;if(n[s.ADJ_SCOPE]){if(n[s.ADJ_SCOPE]===true){r=n[s.OBJ]}else{r=n[s.ADJ_SCOPE]}}n[s.FN].call(r,s.getEvent(t),n[s.OBJ]);k[q]=null;n=null;r=null}}k=null;if(g&&g.length>0){p=g.length;while(p){o=p-1;n=g[o];if(n){s.removeListener(n[s.EL],n[s.TYPE],n[s.FN],o)}p=p-1}n=null;s.clearCache()}s.doRemove(window,"unload",s._unload)},getScroll:function(){var l=document.documentElement,m=document.body;if(l&&(l.scrollTop||l.scrollLeft)){return[l.scrollTop,l.scrollLeft]}else{if(m){return[m.scrollTop,m.scrollLeft]}else{return[0,0]}}},doAdd:function(){if(window.addEventListener){return function(o,m,n,l){o.addEventListener(m,n,(l))}}else{if(window.attachEvent){return function(o,m,n,l){o.attachEvent("on"+m,n)}}else{return function(){}}}}(),doRemove:function(){if(window.removeEventListener){return function(o,m,n,l){o.removeEventListener(m,n,(l))}}else{if(window.detachEvent){return function(n,l,m){n.detachEvent("on"+l,m)}}else{return function(){}}}}()}}();var d=Ext.lib.Event;d.on=d.addListener;d.un=d.removeListener;if(document&&document.body){d._load()}else{d.doAdd(window,"load",d._load)}d.doAdd(window,"unload",d._unload);d._tryPreloadAttach();Ext.lib.Ajax={request:function(l,j,e,k,f){if(f){var g=f.headers;if(g){for(var i in g){if(g.hasOwnProperty(i)){this.initHeader(i,g[i],false)}}}if(f.xmlData){if(!g||!g["Content-Type"]){this.initHeader("Content-Type","text/xml",false)}l=(l?l:(f.method?f.method:"POST"));k=f.xmlData}else{if(f.jsonData){if(!g||!g["Content-Type"]){this.initHeader("Content-Type","application/json",false)}l=(l?l:(f.method?f.method:"POST"));k=typeof f.jsonData=="object"?Ext.encode(f.jsonData):f.jsonData}}}return this.asyncRequest(l,j,e,k)},serializeForm:function(f){if(typeof f=="string"){f=(document.getElementById(f)||document.forms[f])}var g,e,h,l,m="",o=false;for(var n=0;n<f.elements.length;n++){g=f.elements[n];l=f.elements[n].disabled;e=f.elements[n].name;h=f.elements[n].value;if(!l&&e){switch(g.type){case"select-one":case"select-multiple":for(var k=0;k<g.options.length;k++){if(g.options[k].selected){if(Ext.isIE){m+=encodeURIComponent(e)+"="+encodeURIComponent(g.options[k].attributes.value.specified?g.options[k].value:g.options[k].text)+"&"}else{m+=encodeURIComponent(e)+"="+encodeURIComponent(g.options[k].hasAttribute("value")?g.options[k].value:g.options[k].text)+"&"}}}break;case"radio":case"checkbox":if(g.checked){m+=encodeURIComponent(e)+"="+encodeURIComponent(h)+"&"}break;case"file":case undefined:case"reset":case"button":break;case"submit":if(o==false){m+=encodeURIComponent(e)+"="+encodeURIComponent(h)+"&";o=true}break;default:m+=encodeURIComponent(e)+"="+encodeURIComponent(h)+"&";break}}}m=m.substr(0,m.length-1);return m},headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",hasDefaultHeaders:true,defaultHeaders:{},poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(e){this.activeX.unshift(e)},setDefaultPostHeader:function(e){this.useDefaultHeader=e},setDefaultXhrHeader:function(e){this.useDefaultXhrHeader=e},setPollingInterval:function(e){if(typeof e=="number"&&isFinite(e)){this.pollInterval=e}},createXhrObject:function(k){var j,f;try{f=new XMLHttpRequest();j={conn:f,tId:k}}catch(h){for(var g=0;g<this.activeX.length;++g){try{f=new ActiveXObject(this.activeX[g]);j={conn:f,tId:k};break}catch(h){}}}finally{return j}},getConnectionObject:function(){var g;var h=this.transactionId;try{g=this.createXhrObject(h);if(g){this.transactionId++}}catch(f){}finally{return g}},asyncRequest:function(i,f,h,e){var g=this.getConnectionObject();if(!g){return null}else{g.conn.open(i,f,true);if(this.useDefaultXhrHeader){if(!this.defaultHeaders["X-Requested-With"]){this.initHeader("X-Requested-With",this.defaultXhrHeader,true)}}if(e&&this.useDefaultHeader&&(!this.hasHeaders||!this.headers["Content-Type"])){this.initHeader("Content-Type",this.defaultPostHeader)}if(this.hasDefaultHeaders||this.hasHeaders){this.setHeader(g)}this.handleReadyState(g,h);g.conn.send(e||null);return g}},handleReadyState:function(f,g){var e=this;if(g&&g.timeout){this.timeout[f.tId]=window.setTimeout(function(){e.abort(f,g,true)},g.timeout)}this.poll[f.tId]=window.setInterval(function(){if(f.conn&&f.conn.readyState==4){window.clearInterval(e.poll[f.tId]);delete e.poll[f.tId];if(g&&g.timeout){window.clearTimeout(e.timeout[f.tId]);delete e.timeout[f.tId]}e.handleTransactionResponse(f,g)}},this.pollInterval)},handleTransactionResponse:function(j,k,f){if(!k){this.releaseObject(j);return}var h,g;try{if(j.conn.status!==undefined&&j.conn.status!=0){h=j.conn.status}else{h=13030}}catch(i){h=13030}if((h>=200&&h<300)||(Ext.isIE&&h==1223)){g=this.createResponseObject(j,k.argument);if(k.success){if(!k.scope){k.success(g)}else{k.success.apply(k.scope,[g])}}}else{switch(h){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:g=this.createExceptionObject(j.tId,k.argument,(f?f:false));if(k.failure){if(!k.scope){k.failure(g)}else{k.failure.apply(k.scope,[g])}}break;default:g=this.createResponseObject(j,k.argument);if(k.failure){if(!k.scope){k.failure(g)}else{k.failure.apply(k.scope,[g])}}}}this.releaseObject(j);g=null},createResponseObject:function(f,m){var j={};var p={};try{var h=f.conn.getAllResponseHeaders();var l=h.split("\n");for(var k=0;k<l.length;k++){var g=l[k].indexOf(":");if(g!=-1){p[l[k].substring(0,g)]=l[k].substring(g+2)}}}catch(n){}j.tId=f.tId;j.status=f.conn.status;j.statusText=f.conn.statusText;j.getResponseHeader=p;j.getAllResponseHeaders=h;j.responseText=f.conn.responseText;j.responseXML=f.conn.responseXML;if(typeof m!==undefined){j.argument=m}return j},createExceptionObject:function(l,h,e){var j=0;var k="communication failure";var g=-1;var f="transaction aborted";var i={};i.tId=l;if(e){i.status=g;i.statusText=f}else{i.status=j;i.statusText=k}if(h){i.argument=h}return i},initHeader:function(e,h,g){var f=(g)?this.defaultHeaders:this.headers;if(f[e]===undefined){f[e]=h}else{f[e]=h+","+f[e]}if(g){this.hasDefaultHeaders=true}else{this.hasHeaders=true}},setHeader:function(e){if(this.hasDefaultHeaders){for(var f in this.defaultHeaders){if(this.defaultHeaders.hasOwnProperty(f)){e.conn.setRequestHeader(f,this.defaultHeaders[f])}}}if(this.hasHeaders){for(var f in this.headers){if(this.headers.hasOwnProperty(f)){e.conn.setRequestHeader(f,this.headers[f])}}this.headers={};this.hasHeaders=false}},resetDefaultHeaders:function(){delete this.defaultHeaders;this.defaultHeaders={};this.hasDefaultHeaders=false},abort:function(f,g,e){if(this.isCallInProgress(f)){f.conn.abort();window.clearInterval(this.poll[f.tId]);delete this.poll[f.tId];if(e){delete this.timeout[f.tId]}this.handleTransactionResponse(f,g,true);return true}else{return false}},isCallInProgress:function(e){if(e.conn){return e.conn.readyState!=4&&e.conn.readyState!=0}else{return false}},releaseObject:function(e){e.conn=null;e=null},activeX:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]};Ext.lib.Region=function(g,h,e,f){this.top=g;this[1]=g;this.right=h;this.bottom=e;this.left=f;this[0]=f};Ext.lib.Region.prototype={contains:function(e){return(e.left>=this.left&&e.right<=this.right&&e.top>=this.top&&e.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(i){var g=Math.max(this.top,i.top);var h=Math.min(this.right,i.right);var e=Math.min(this.bottom,i.bottom);var f=Math.max(this.left,i.left);if(e>=g&&h>=f){return new Ext.lib.Region(g,h,e,f)}else{return null}},union:function(i){var g=Math.min(this.top,i.top);var h=Math.max(this.right,i.right);var e=Math.max(this.bottom,i.bottom);var f=Math.min(this.left,i.left);return new Ext.lib.Region(g,h,e,f)},constrainTo:function(e){this.top=this.top.constrain(e.top,e.bottom);this.bottom=this.bottom.constrain(e.top,e.bottom);this.left=this.left.constrain(e.left,e.right);this.right=this.right.constrain(e.left,e.right);return this},adjust:function(g,f,e,h){this.top+=g;this.left+=f;this.right+=h;this.bottom+=e;return this}};Ext.lib.Region.getRegion=function(h){var j=Ext.lib.Dom.getXY(h);var g=j[1];var i=j[0]+h.offsetWidth;var e=j[1]+h.offsetHeight;var f=j[0];return new Ext.lib.Region(g,i,e,f)};Ext.lib.Point=function(e,f){if(Ext.isArray(e)){f=e[1];e=e[0]}this.x=this.right=this.left=this[0]=e;this.y=this.top=this.bottom=this[1]=f};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.lib.Anim={scroll:function(h,f,i,j,e,g){return this.run(h,f,i,j,e,g,Ext.lib.Scroll)},motion:function(h,f,i,j,e,g){return this.run(h,f,i,j,e,g,Ext.lib.Motion)},color:function(h,f,i,j,e,g){return this.run(h,f,i,j,e,g,Ext.lib.ColorAnim)},run:function(i,f,k,l,e,h,g){g=g||Ext.lib.AnimBase;if(typeof l=="string"){l=Ext.lib.Easing[l]}var j=new g(i,f,k,l);j.animateX(function(){Ext.callback(e,h)});return j}};function c(e){if(!b){b=new Ext.Element.Flyweight()}b.dom=e;return b}if(Ext.isIE){function a(){var e=Function.prototype;delete e.createSequence;delete e.defer;delete e.createDelegate;delete e.createCallback;delete e.createInterceptor;window.detachEvent("onunload",a)}window.attachEvent("onunload",a)}Ext.lib.AnimBase=function(f,e,g,h){if(f){this.init(f,e,g,h)}};Ext.lib.AnimBase.prototype={toString:function(){var e=this.getEl();var f=e.id||e.tagName;return("Anim "+f)},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(e,g,f){return this.method(this.currentFrame,g,f-g,this.totalFrames)},setAttribute:function(e,g,f){if(this.patterns.noNegatives.test(e)){g=(g>0)?g:0}Ext.fly(this.getEl(),"_anim").setStyle(e,g+f)},getAttribute:function(e){var g=this.getEl();var i=c(g).getStyle(e);if(i!=="auto"&&!this.patterns.offsetUnit.test(i)){return parseFloat(i)}var f=this.patterns.offsetAttribute.exec(e)||[];var j=!!(f[3]);var h=!!(f[2]);if(h||(c(g).getStyle("position")=="absolute"&&j)){i=g["offset"+f[0].charAt(0).toUpperCase()+f[0].substr(1)]}else{i=0}return i},getDefaultUnit:function(e){if(this.patterns.defaultUnit.test(e)){return"px"}return""},animateX:function(h,e){var g=function(){this.onComplete.removeListener(g);if(typeof h=="function"){h.call(e||this,this)}};this.onComplete.addListener(g,this);this.animate()},setRuntimeAttribute:function(f){var l;var g;var h=this.attributes;this.runtimeAttributes[f]={};var k=function(i){return(typeof i!=="undefined")};if(!k(h[f]["to"])&&!k(h[f]["by"])){return false}l=(k(h[f]["from"]))?h[f]["from"]:this.getAttribute(f);if(k(h[f]["to"])){g=h[f]["to"]}else{if(k(h[f]["by"])){if(l.constructor==Array){g=[];for(var j=0,e=l.length;j<e;++j){g[j]=l[j]+h[f]["by"][j]}}else{g=l+h[f]["by"]}}}this.runtimeAttributes[f].start=l;this.runtimeAttributes[f].end=g;this.runtimeAttributes[f].unit=(k(h[f].unit))?h[f]["unit"]:this.getDefaultUnit(f)},init:function(g,l,k,e){var f=false;var h=null;var j=0;g=Ext.getDom(g);this.attributes=l||{};this.duration=k||1;this.method=e||Ext.lib.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=Ext.lib.AnimMgr.fps;this.getEl=function(){return g};this.isAnimated=function(){return f};this.getStartTime=function(){return h};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(Ext.lib.AnimMgr.fps*this.duration):this.duration;Ext.lib.AnimMgr.registerElement(this)};this.stop=function(o){if(o){this.currentFrame=this.totalFrames;this._onTween.fire()}Ext.lib.AnimMgr.stop(this)};var n=function(){this.onStart.fire();this.runtimeAttributes={};for(var o in this.attributes){this.setRuntimeAttribute(o)}f=true;j=0;h=new Date()};var m=function(){var q={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};q.toString=function(){return("duration: "+q.duration+", currentFrame: "+q.currentFrame)};this.onTween.fire(q);var p=this.runtimeAttributes;for(var o in p){this.setAttribute(o,this.doMethod(o,p[o].start,p[o].end),p[o].unit)}j+=1};var i=function(){var o=(new Date()-h)/1000;var p={duration:o,frames:j,fps:j/o};p.toString=function(){return("duration: "+p.duration+", frames: "+p.frames+", fps: "+p.fps)};f=false;j=0;this.onComplete.fire(p)};this._onStart=new Ext.util.Event(this);this.onStart=new Ext.util.Event(this);this.onTween=new Ext.util.Event(this);this._onTween=new Ext.util.Event(this);this.onComplete=new Ext.util.Event(this);this._onComplete=new Ext.util.Event(this);this._onStart.addListener(n);this._onTween.addListener(m);this._onComplete.addListener(i)}};Ext.lib.AnimMgr=new function(){var g=null;var f=[];var e=0;this.fps=1000;this.delay=1;this.registerElement=function(j){f[f.length]=j;e+=1;j._onStart.fire();this.start()};this.unRegister=function(k,j){k._onComplete.fire();j=j||i(k);if(j!=-1){f.splice(j,1)}e-=1;if(e<=0){this.stop()}};this.start=function(){if(g===null){g=setInterval(this.run,this.delay)}};this.stop=function(l){if(!l){clearInterval(g);for(var k=0,j=f.length;k<j;++k){if(f[0].isAnimated()){this.unRegister(f[0],0)}}f=[];g=null;e=0}else{this.unRegister(l)}};this.run=function(){for(var l=0,j=f.length;l<j;++l){var k=f[l];if(!k||!k.isAnimated()){continue}if(k.currentFrame<k.totalFrames||k.totalFrames===null){k.currentFrame+=1;if(k.useSeconds){h(k)}k._onTween.fire()}else{Ext.lib.AnimMgr.stop(k,l)}}};var i=function(l){for(var k=0,j=f.length;k<j;++k){if(f[k]==l){return k}}return -1};var h=function(k){var n=k.totalFrames;var m=k.currentFrame;var l=(k.currentFrame*k.duration*1000/k.totalFrames);var j=(new Date()-k.getStartTime());var o=0;if(j<k.duration*1000){o=Math.round((j/l-1)*k.currentFrame)}else{o=n-(m+1)}if(o>0&&isFinite(o)){if(k.currentFrame+o>=n){o=n-(m+1)}k.currentFrame+=o}}};Ext.lib.Bezier=new function(){this.getPosition=function(k,h){var l=k.length;var g=[];for(var f=0;f<l;++f){g[f]=[k[f][0],k[f][1]]}for(var e=1;e<l;++e){for(f=0;f<l-e;++f){g[f][0]=(1-h)*g[f][0]+h*g[parseInt(f+1,10)][0];g[f][1]=(1-h)*g[f][1]+h*g[parseInt(f+1,10)][1]}}return[g[0][0],g[0][1]]}};(function(){Ext.lib.ColorAnim=function(i,h,j,k){Ext.lib.ColorAnim.superclass.constructor.call(this,i,h,j,k)};Ext.extend(Ext.lib.ColorAnim,Ext.lib.AnimBase);var f=Ext.lib;var g=f.ColorAnim.superclass;var e=f.ColorAnim.prototype;e.toString=function(){var h=this.getEl();var i=h.id||h.tagName;return("ColorAnim "+i)};e.patterns.color=/color$/i;e.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;e.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;e.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;e.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;e.parseColor=function(h){if(h.length==3){return h}var i=this.patterns.hex.exec(h);if(i&&i.length==4){return[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]}i=this.patterns.rgb.exec(h);if(i&&i.length==4){return[parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3],10)]}i=this.patterns.hex3.exec(h);if(i&&i.length==4){return[parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16),parseInt(i[3]+i[3],16)]}return null};e.getAttribute=function(h){var j=this.getEl();if(this.patterns.color.test(h)){var k=c(j).getStyle(h);if(this.patterns.transparent.test(k)){var i=j.parentNode;k=c(i).getStyle(h);while(i&&this.patterns.transparent.test(k)){i=i.parentNode;k=c(i).getStyle(h);if(i.tagName.toUpperCase()=="HTML"){k="#fff"}}}}else{k=g.getAttribute.call(this,h)}return k};e.doMethod=function(j,n,k){var m;if(this.patterns.color.test(j)){m=[];for(var l=0,h=n.length;l<h;++l){m[l]=g.doMethod.call(this,j,n[l],k[l])}m="rgb("+Math.floor(m[0])+","+Math.floor(m[1])+","+Math.floor(m[2])+")"}else{m=g.doMethod.call(this,j,n,k)}return m};e.setRuntimeAttribute=function(j){g.setRuntimeAttribute.call(this,j);if(this.patterns.color.test(j)){var l=this.attributes;var n=this.parseColor(this.runtimeAttributes[j].start);var k=this.parseColor(this.runtimeAttributes[j].end);if(typeof l[j]["to"]==="undefined"&&typeof l[j]["by"]!=="undefined"){k=this.parseColor(l[j].by);for(var m=0,h=n.length;m<h;++m){k[m]=n[m]+k[m]}}this.runtimeAttributes[j].start=n;this.runtimeAttributes[j].end=k}}})();Ext.lib.Easing={easeNone:function(f,e,h,g){return h*f/g+e},easeIn:function(f,e,h,g){return h*(f/=g)*f+e},easeOut:function(f,e,h,g){return -h*(f/=g)*(f-2)+e},easeBoth:function(f,e,h,g){if((f/=g/2)<1){return h/2*f*f+e}return -h/2*((--f)*(f-2)-1)+e},easeInStrong:function(f,e,h,g){return h*(f/=g)*f*f*f+e},easeOutStrong:function(f,e,h,g){return -h*((f=f/g-1)*f*f*f-1)+e},easeBothStrong:function(f,e,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+e}return -h/2*((f-=2)*f*f*f-2)+e},elasticIn:function(g,e,k,j,f,i){if(g==0){return e}if((g/=j)==1){return e+k}if(!i){i=j*0.3}if(!f||f<Math.abs(k)){f=k;var h=i/4}else{var h=i/(2*Math.PI)*Math.asin(k/f)}return -(f*Math.pow(2,10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i))+e},elasticOut:function(g,e,k,j,f,i){if(g==0){return e}if((g/=j)==1){return e+k}if(!i){i=j*0.3}if(!f||f<Math.abs(k)){f=k;var h=i/4}else{var h=i/(2*Math.PI)*Math.asin(k/f)}return f*Math.pow(2,-10*g)*Math.sin((g*j-h)*(2*Math.PI)/i)+k+e},elasticBoth:function(g,e,k,j,f,i){if(g==0){return e}if((g/=j/2)==2){return e+k}if(!i){i=j*(0.3*1.5)}if(!f||f<Math.abs(k)){f=k;var h=i/4}else{var h=i/(2*Math.PI)*Math.asin(k/f)}if(g<1){return -0.5*(f*Math.pow(2,10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i))+e}return f*Math.pow(2,-10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i)*0.5+k+e},backIn:function(f,e,i,h,g){if(typeof g=="undefined"){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+e},backOut:function(f,e,i,h,g){if(typeof g=="undefined"){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+e},backBoth:function(f,e,i,h,g){if(typeof g=="undefined"){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+e}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+e},bounceIn:function(f,e,h,g){return h-Ext.lib.Easing.bounceOut(g-f,0,h,g)+e},bounceOut:function(f,e,h,g){if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+e}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+e}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+e}}}return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+e},bounceBoth:function(f,e,h,g){if(f<g/2){return Ext.lib.Easing.bounceIn(f*2,0,h,g)*0.5+e}return Ext.lib.Easing.bounceOut(f*2-g,0,h,g)*0.5+h*0.5+e}};(function(){Ext.lib.Motion=function(k,j,l,m){if(k){Ext.lib.Motion.superclass.constructor.call(this,k,j,l,m)}};Ext.extend(Ext.lib.Motion,Ext.lib.ColorAnim);var h=Ext.lib;var i=h.Motion.superclass;var f=h.Motion.prototype;f.toString=function(){var j=this.getEl();var k=j.id||j.tagName;return("Motion "+k)};f.patterns.points=/^points$/i;f.setAttribute=function(j,l,k){if(this.patterns.points.test(j)){k=k||"px";i.setAttribute.call(this,"left",l[0],k);i.setAttribute.call(this,"top",l[1],k)}else{i.setAttribute.call(this,j,l,k)}};f.getAttribute=function(j){if(this.patterns.points.test(j)){var k=[i.getAttribute.call(this,"left"),i.getAttribute.call(this,"top")]}else{k=i.getAttribute.call(this,j)}return k};f.doMethod=function(j,n,k){var m=null;if(this.patterns.points.test(j)){var l=this.method(this.currentFrame,0,100,this.totalFrames)/100;m=h.Bezier.getPosition(this.runtimeAttributes[j],l)}else{m=i.doMethod.call(this,j,n,k)}return m};f.setRuntimeAttribute=function(s){if(this.patterns.points.test(s)){var k=this.getEl();var m=this.attributes;var j;var o=m.points["control"]||[];var l;var p,r;if(o.length>0&&!Ext.isArray(o[0])){o=[o]}else{var n=[];for(p=0,r=o.length;p<r;++p){n[p]=o[p]}o=n}Ext.fly(k,"_anim").position();if(g(m.points["from"])){Ext.lib.Dom.setXY(k,m.points["from"])}else{Ext.lib.Dom.setXY(k,Ext.lib.Dom.getXY(k))}j=this.getAttribute("points");if(g(m.points["to"])){l=e.call(this,m.points["to"],j);var q=Ext.lib.Dom.getXY(this.getEl());for(p=0,r=o.length;p<r;++p){o[p]=e.call(this,o[p],j)}}else{if(g(m.points["by"])){l=[j[0]+m.points["by"][0],j[1]+m.points["by"][1]];for(p=0,r=o.length;p<r;++p){o[p]=[j[0]+o[p][0],j[1]+o[p][1]]}}}this.runtimeAttributes[s]=[j];if(o.length>0){this.runtimeAttributes[s]=this.runtimeAttributes[s].concat(o)}this.runtimeAttributes[s][this.runtimeAttributes[s].length]=l}else{i.setRuntimeAttribute.call(this,s)}};var e=function(j,l){var k=Ext.lib.Dom.getXY(this.getEl());j=[j[0]-k[0]+l[0],j[1]-k[1]+l[1]];return j};var g=function(j){return(typeof j!=="undefined")}})();(function(){Ext.lib.Scroll=function(i,h,j,k){if(i){Ext.lib.Scroll.superclass.constructor.call(this,i,h,j,k)}};Ext.extend(Ext.lib.Scroll,Ext.lib.ColorAnim);var f=Ext.lib;var g=f.Scroll.superclass;var e=f.Scroll.prototype;e.toString=function(){var h=this.getEl();var i=h.id||h.tagName;return("Scroll "+i)};e.doMethod=function(h,k,i){var j=null;if(h=="scroll"){j=[this.method(this.currentFrame,k[0],i[0]-k[0],this.totalFrames),this.method(this.currentFrame,k[1],i[1]-k[1],this.totalFrames)]}else{j=g.doMethod.call(this,h,k,i)}return j};e.getAttribute=function(h){var j=null;var i=this.getEl();if(h=="scroll"){j=[i.scrollLeft,i.scrollTop]}else{j=g.getAttribute.call(this,h)}return j};e.setAttribute=function(h,k,j){var i=this.getEl();if(h=="scroll"){i.scrollLeft=k[0];i.scrollTop=k[1]}else{g.setAttribute.call(this,h,k,j)}}})()})();
diff --git a/typo3/contrib/extjs/adapter/jquery/ext-jquery-adapter.js b/typo3/contrib/extjs/adapter/jquery/ext-jquery-adapter.js
new file mode 100644 (file)
index 0000000..ad04a89
--- /dev/null
@@ -0,0 +1 @@
+Ext={version:"2.2.1"};window["undefined"]=window["undefined"];Ext.apply=function(d,e,b){if(b){Ext.apply(d,b)}if(d&&e&&typeof e=="object"){for(var a in e){d[a]=e[a]}}return d};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isChrome=ua.indexOf("chrome")>-1,isSafari=!isChrome&&(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isIE8=!isOpera&&ua.indexOf("msie 8")>-1,isGecko=!isSafari&&!isChrome&&ua.indexOf("gecko")>-1,isGecko3=isGecko&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http://extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return}var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}if(Ext.isIE&&overrides.toString!=origclass.toString){p.toString=overrides.toString}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+' == "undefined"){'+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isDate(ov)){var s=Ext.encode(ov).replace(/"/g,"");buf.push(k,"=",s,"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"||isNaN(v)){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isChrome:isChrome,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7&&!isIE8,isIE7:isIE7,isIE8:isIE8,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var a=arguments;var b=this;return function(){return b.apply(window,a)}},createDelegate:function(c,b,a){var d=this;return function(){var f=b||arguments;if(a===true){f=Array.prototype.slice.call(arguments,0);f=f.concat(b)}else{if(typeof a=="number"){f=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(f,e)}}return d.apply(c||window,f)}},defer:function(c,e,b,a){var d=this.createDelegate(e,b,a);if(c){return setTimeout(d,c)}d();return 0},createSequence:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}},createInterceptor:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){b.target=this;b.method=c;if(b.apply(a||this||window,arguments)===false){return}return c.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=new String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a.toString()},format:function(b){var a=Array.prototype.slice.call(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.applyIf(Array.prototype,{indexOf:function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1},remove:function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this}});Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};if(typeof jQuery=="undefined"){throw"Unable to load Ext, jQuery not found."}(function(){var b;Ext.lib.Dom={getViewWidth:function(d){return d?Math.max(jQuery(document).width(),jQuery(window).width()):jQuery(window).width()},getViewHeight:function(d){return d?Math.max(jQuery(document).height(),jQuery(window).height()):jQuery(window).height()},isAncestor:function(e,f){e=Ext.getDom(e);f=Ext.getDom(f);if(!e||!f){return false}if(e.contains&&!Ext.isSafari){return e.contains(f)}else{if(e.compareDocumentPosition){return !!(e.compareDocumentPosition(f)&16)}else{var d=f.parentNode;while(d){if(d==e){return true}else{if(!d.tagName||d.tagName.toUpperCase()=="HTML"){return false}}d=d.parentNode}return false}}},getRegion:function(d){return Ext.lib.Region.getRegion(d)},getY:function(d){return this.getXY(d)[1]},getX:function(d){return this.getXY(d)[0]},getXY:function(f){var e,j,l,m,i=(document.body||document.documentElement);f=Ext.getDom(f);if(f==i){return[0,0]}if(f.getBoundingClientRect){l=f.getBoundingClientRect();m=c(document).getScroll();return[l.left+m.left,l.top+m.top]}var n=0,k=0;e=f;var d=c(f).getStyle("position")=="absolute";while(e){n+=e.offsetLeft;k+=e.offsetTop;if(!d&&c(e).getStyle("position")=="absolute"){d=true}if(Ext.isGecko){j=c(e);var o=parseInt(j.getStyle("borderTopWidth"),10)||0;var g=parseInt(j.getStyle("borderLeftWidth"),10)||0;n+=g;k+=o;if(e!=f&&j.getStyle("overflow")!="visible"){n+=g;k+=o}}e=e.offsetParent}if(Ext.isSafari&&d){n-=i.offsetLeft;k-=i.offsetTop}if(Ext.isGecko&&!d){var h=c(i);n+=parseInt(h.getStyle("borderLeftWidth"),10)||0;k+=parseInt(h.getStyle("borderTopWidth"),10)||0}e=f.parentNode;while(e&&e!=i){if(!Ext.isOpera||(e.tagName!="TR"&&c(e).getStyle("display")!="inline")){n-=e.scrollLeft;k-=e.scrollTop}e=e.parentNode}return[n,k]},setXY:function(d,e){d=Ext.fly(d,"_setXY");d.position();var f=d.translatePoints(e);if(e[0]!==false){d.dom.style.left=f.left+"px"}if(e[1]!==false){d.dom.style.top=f.top+"px"}},setX:function(e,d){this.setXY(e,[d,false])},setY:function(d,e){this.setXY(d,[false,e])}};function c(d){if(!b){b=new Ext.Element.Flyweight()}b.dom=d;return b}Ext.lib.Event={getPageX:function(d){d=d.browserEvent||d;return d.pageX},getPageY:function(d){d=d.browserEvent||d;return d.pageY},getXY:function(d){d=d.browserEvent||d;return[d.pageX,d.pageY]},getTarget:function(d){return d.target},on:function(h,d,g,f,e){jQuery(h).bind(d,g)},un:function(f,d,e){jQuery(f).unbind(d,e)},purgeElement:function(d){jQuery(d).unbind()},preventDefault:function(d){d=d.browserEvent||d;if(d.preventDefault){d.preventDefault()}else{d.returnValue=false}},stopPropagation:function(d){d=d.browserEvent||d;if(d.stopPropagation){d.stopPropagation()}else{d.cancelBubble=true}},stopEvent:function(d){this.preventDefault(d);this.stopPropagation(d)},onAvailable:function(j,e,d){var i=new Date();var g=function(){if(i.getElapsed()>10000){clearInterval(h)}var f=document.getElementById(j);if(f){clearInterval(h);e.call(d||window,f)}};var h=setInterval(g,50)},resolveTextNode:function(d){if(d&&3==d.nodeType){return d.parentNode}else{return d}},getRelatedTarget:function(e){e=e.browserEvent||e;var d=e.relatedTarget;if(!d){if(e.type=="mouseout"){d=e.toElement}else{if(e.type=="mouseover"){d=e.fromElement}}}return this.resolveTextNode(d)}};Ext.lib.Ajax=function(){var d=function(e){return function(g,f){if((f=="error"||f=="timeout")&&e.failure){e.failure.call(e.scope||window,{responseText:g.responseText,responseXML:g.responseXML,argument:e.argument})}else{if(e.success){e.success.call(e.scope||window,{responseText:g.responseText,responseXML:g.responseXML,argument:e.argument})}}}};return{request:function(k,h,e,i,f){var j={type:k,url:h,data:i,timeout:e.timeout,complete:d(e)};if(f){var g=f.headers;if(f.xmlData){j.data=f.xmlData;j.processData=false;j.type=(k?k:(f.method?f.method:"POST"));if(!g||!g["Content-Type"]){j.contentType="text/xml"}}else{if(f.jsonData){j.data=typeof f.jsonData=="object"?Ext.encode(f.jsonData):f.jsonData;j.processData=false;j.type=(k?k:(f.method?f.method:"POST"));if(!g||!g["Content-Type"]){j.contentType="application/json"}}}if(g){j.beforeSend=function(m){for(var l in g){if(g.hasOwnProperty(l)){m.setRequestHeader(l,g[l])}}}}}jQuery.ajax(j)},formRequest:function(i,h,f,j,e,g){jQuery.ajax({type:Ext.getDom(i).method||"POST",url:h,data:jQuery(i).serialize()+(j?"&"+j:""),timeout:f.timeout,complete:d(f)})},isCallInProgress:function(e){return false},abort:function(e){return false},serializeForm:function(e){return jQuery(e.dom||e).serialize()}}}();Ext.lib.Anim=function(){var d=function(e,f){var g=true;return{stop:function(h){},isAnimated:function(){return g},proxyCallback:function(){g=false;Ext.callback(e,f)}}};return{scroll:function(h,f,j,k,e,g){var i=d(e,g);h=Ext.getDom(h);if(typeof f.scroll.to[0]=="number"){h.scrollLeft=f.scroll.to[0]}if(typeof f.scroll.to[1]=="number"){h.scrollTop=f.scroll.to[1]}i.proxyCallback();return i},motion:function(h,f,i,j,e,g){return this.run(h,f,i,j,e,g)},color:function(h,f,j,k,e,g){var i=d(e,g);i.proxyCallback();return i},run:function(g,q,j,p,h,s,r){var l=d(h,s),m=Ext.fly(g,"_animrun");var f={};for(var i in q){if(q[i].from){if(i!="points"){m.setStyle(i,q[i].from)}}switch(i){case"points":var n,u;m.position();if(n=q.points.by){var t=m.getXY();u=m.translatePoints([t[0]+n[0],t[1]+n[1]])}else{u=m.translatePoints(q.points.to)}f.left=u.left;f.top=u.top;if(!parseInt(m.getStyle("left"),10)){m.setLeft(0)}if(!parseInt(m.getStyle("top"),10)){m.setTop(0)}if(q.points.from){m.setXY(q.points.from)}break;case"width":f.width=q.width.to;break;case"height":f.height=q.height.to;break;case"opacity":f.opacity=q.opacity.to;break;case"left":f.left=q.left.to;break;case"top":f.top=q.top.to;break;default:f[i]=q[i].to;break}}jQuery(g).animate(f,j*1000,undefined,l.proxyCallback);return l}}}();Ext.lib.Region=function(f,g,d,e){this.top=f;this[1]=f;this.right=g;this.bottom=d;this.left=e;this[0]=e};Ext.lib.Region.prototype={contains:function(d){return(d.left>=this.left&&d.right<=this.right&&d.top>=this.top&&d.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(h){var f=Math.max(this.top,h.top);var g=Math.min(this.right,h.right);var d=Math.min(this.bottom,h.bottom);var e=Math.max(this.left,h.left);if(d>=f&&g>=e){return new Ext.lib.Region(f,g,d,e)}else{return null}},union:function(h){var f=Math.min(this.top,h.top);var g=Math.max(this.right,h.right);var d=Math.max(this.bottom,h.bottom);var e=Math.min(this.left,h.left);return new Ext.lib.Region(f,g,d,e)},constrainTo:function(d){this.top=this.top.constrain(d.top,d.bottom);this.bottom=this.bottom.constrain(d.top,d.bottom);this.left=this.left.constrain(d.left,d.right);this.right=this.right.constrain(d.left,d.right);return this},adjust:function(f,e,d,g){this.top+=f;this.left+=e;this.right+=g;this.bottom+=d;return this}};Ext.lib.Region.getRegion=function(g){var i=Ext.lib.Dom.getXY(g);var f=i[1];var h=i[0]+g.offsetWidth;var d=i[1]+g.offsetHeight;var e=i[0];return new Ext.lib.Region(f,h,d,e)};Ext.lib.Point=function(d,e){if(Ext.isArray(d)){e=d[1];d=d[0]}this.x=this.right=this.left=this[0]=d;this.y=this.top=this.bottom=this[1]=e};Ext.lib.Point.prototype=new Ext.lib.Region();if(Ext.isIE){function a(){var d=Function.prototype;delete d.createSequence;delete d.defer;delete d.createDelegate;delete d.createCallback;delete d.createInterceptor;window.detachEvent("onunload",a)}window.attachEvent("onunload",a)}})();
\ No newline at end of file
index 752ad96..dee6a7e 100644 (file)
@@ -1,10 +1 @@
-/*\r
- * Ext JS Library 2.2\r
- * Copyright(c) 2006-2008, Ext JS, LLC.\r
- * licensing@extjs.com\r
- * \r
- * http://extjs.com/license\r
- */\r
-\r
-Ext={version:"2.2"};window["undefined"]=window["undefined"];Ext.apply=function(C,D,B){if(B){Ext.apply(C,B)}if(C&&D&&typeof D=="object"){for(var A in D){C[A]=D[A]}}return C};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isGecko3=!isSafari&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return }var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+" == \"undefined\"){"+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7,isIE7:isIE7,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var A=arguments;var B=this;return function(){return B.apply(window,A)}},createDelegate:function(C,B,A){var D=this;return function(){var F=B||arguments;if(A===true){F=Array.prototype.slice.call(arguments,0);F=F.concat(B)}else{if(typeof A=="number"){F=Array.prototype.slice.call(arguments,0);var E=[A,0].concat(B);Array.prototype.splice.apply(F,E)}}return D.apply(C||window,F)}},defer:function(C,E,B,A){var D=this.createDelegate(E,B,A);if(C){return setTimeout(D,C)}D();return 0},createSequence:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){var D=C.apply(this||window,arguments);B.apply(A||this||window,arguments);return D}},createInterceptor:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){B.target=this;B.method=C;if(B.apply(A||this||window,arguments)===false){return }return C.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(A){return A.replace(/('|\\)/g,"\\$1")},leftPad:function(D,B,C){var A=new String(D);if(!C){C=" "}while(A.length<B){A=C+A}return A.toString()},format:function(B){var A=Array.prototype.slice.call(arguments,1);return B.replace(/\{(\d+)\}/g,function(C,D){return A[D]})}});String.prototype.toggle=function(B,A){return this==B?A:B};String.prototype.trim=function(){var A=/^\s+|\s+$/g;return function(){return this.replace(A,"")}}();Ext.applyIf(Number.prototype,{constrain:function(B,A){return Math.min(Math.max(this,B),A)}});Ext.applyIf(Array.prototype,{indexOf:function(C){for(var B=0,A=this.length;B<A;B++){if(this[B]==C){return B}}return -1},remove:function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)}return this}});Date.prototype.getElapsed=function(A){return Math.abs((A||new Date()).getTime()-this.getTime())};
-(function(){var B;Ext.lib.Dom={getViewWidth:function(D){return D?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(D){return D?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){var D=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(D,this.getViewportHeight())},getDocumentWidth:function(){var D=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(D,this.getViewportWidth())},getViewportHeight:function(){var D=self.innerHeight;var E=document.compatMode;if((E||Ext.isIE)&&!Ext.isOpera){D=(E=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight}return D},getViewportWidth:function(){var D=self.innerWidth;var E=document.compatMode;if(E||Ext.isIE){D=(E=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth}return D},isAncestor:function(E,F){E=Ext.getDom(E);F=Ext.getDom(F);if(!E||!F){return false}if(E.contains&&!Ext.isSafari){return E.contains(F)}else{if(E.compareDocumentPosition){return !!(E.compareDocumentPosition(F)&16)}else{var D=F.parentNode;while(D){if(D==E){return true}else{if(!D.tagName||D.tagName.toUpperCase()=="HTML"){return false}}D=D.parentNode}return false}}},getRegion:function(D){return Ext.lib.Region.getRegion(D)},getY:function(D){return this.getXY(D)[1]},getX:function(D){return this.getXY(D)[0]},getXY:function(F){var E,J,L,M,I=(document.body||document.documentElement);F=Ext.getDom(F);if(F==I){return[0,0]}if(F.getBoundingClientRect){L=F.getBoundingClientRect();M=C(document).getScroll();return[L.left+M.left,L.top+M.top]}var N=0,K=0;E=F;var D=C(F).getStyle("position")=="absolute";while(E){N+=E.offsetLeft;K+=E.offsetTop;if(!D&&C(E).getStyle("position")=="absolute"){D=true}if(Ext.isGecko){J=C(E);var O=parseInt(J.getStyle("borderTopWidth"),10)||0;var G=parseInt(J.getStyle("borderLeftWidth"),10)||0;N+=G;K+=O;if(E!=F&&J.getStyle("overflow")!="visible"){N+=G;K+=O}}E=E.offsetParent}if(Ext.isSafari&&D){N-=I.offsetLeft;K-=I.offsetTop}if(Ext.isGecko&&!D){var H=C(I);N+=parseInt(H.getStyle("borderLeftWidth"),10)||0;K+=parseInt(H.getStyle("borderTopWidth"),10)||0}E=F.parentNode;while(E&&E!=I){if(!Ext.isOpera||(E.tagName!="TR"&&C(E).getStyle("display")!="inline")){N-=E.scrollLeft;K-=E.scrollTop}E=E.parentNode}return[N,K]},setXY:function(D,E){D=Ext.fly(D,"_setXY");D.position();var F=D.translatePoints(E);if(E[0]!==false){D.dom.style.left=F.left+"px"}if(E[1]!==false){D.dom.style.top=F.top+"px"}},setX:function(E,D){this.setXY(E,[D,false])},setY:function(D,E){this.setXY(D,[false,E])}};Ext.lib.Event={getPageX:function(D){return Event.pointerX(D.browserEvent||D)},getPageY:function(D){return Event.pointerY(D.browserEvent||D)},getXY:function(D){D=D.browserEvent||D;return[Event.pointerX(D),Event.pointerY(D)]},getTarget:function(D){return Event.element(D.browserEvent||D)},resolveTextNode:function(D){if(D&&3==D.nodeType){return D.parentNode}else{return D}},getRelatedTarget:function(E){E=E.browserEvent||E;var D=E.relatedTarget;if(!D){if(E.type=="mouseout"){D=E.toElement}else{if(E.type=="mouseover"){D=E.fromElement}}}return this.resolveTextNode(D)},on:function(F,D,E){Event.observe(F,D,E,false)},un:function(F,D,E){Event.stopObserving(F,D,E,false)},purgeElement:function(D){},preventDefault:function(D){D=D.browserEvent||D;if(D.preventDefault){D.preventDefault()}else{D.returnValue=false}},stopPropagation:function(D){D=D.browserEvent||D;if(D.stopPropagation){D.stopPropagation()}else{D.cancelBubble=true}},stopEvent:function(D){Event.stop(D.browserEvent||D)},onAvailable:function(I,E,D){var H=new Date(),G;var F=function(){if(H.getElapsed()>10000){clearInterval(G)}var J=document.getElementById(I);if(J){clearInterval(G);E.call(D||window,J)}};G=setInterval(F,50)}};Ext.lib.Ajax=function(){var E=function(F){return F.success?function(G){F.success.call(F.scope||window,{responseText:G.responseText,responseXML:G.responseXML,argument:F.argument})}:Ext.emptyFn};var D=function(F){return F.failure?function(G){F.failure.call(F.scope||window,{responseText:G.responseText,responseXML:G.responseXML,argument:F.argument})}:Ext.emptyFn};return{request:function(L,I,F,J,G){var K={method:L,parameters:J||"",timeout:F.timeout,onSuccess:E(F),onFailure:D(F)};if(G){var H=G.headers;if(H){K.requestHeaders=H}if(G.xmlData){L=(L?L:(G.method?G.method:"POST"));if(!H||!H["Content-Type"]){K.contentType="text/xml"}K.postBody=G.xmlData;delete K.parameters}if(G.jsonData){L=(L?L:(G.method?G.method:"POST"));if(!H||!H["Content-Type"]){K.contentType="application/json"}K.postBody=typeof G.jsonData=="object"?Ext.encode(G.jsonData):G.jsonData;delete K.parameters}}new Ajax.Request(I,K)},formRequest:function(J,I,G,K,F,H){new Ajax.Request(I,{method:Ext.getDom(J).method||"POST",parameters:Form.serialize(J)+(K?"&"+K:""),timeout:G.timeout,onSuccess:E(G),onFailure:D(G)})},isCallInProgress:function(F){return false},abort:function(F){return false},serializeForm:function(F){return Form.serialize(F.dom||F)}}}();Ext.lib.Anim=function(){var D={easeOut:function(F){return 1-Math.pow(1-F,2)},easeIn:function(F){return 1-Math.pow(1-F,2)}};var E=function(F,G){return{stop:function(H){this.effect.cancel()},isAnimated:function(){return this.effect.state=="running"},proxyCallback:function(){Ext.callback(F,G)}}};return{scroll:function(I,G,K,L,F,H){var J=E(F,H);I=Ext.getDom(I);if(typeof G.scroll.to[0]=="number"){I.scrollLeft=G.scroll.to[0]}if(typeof G.scroll.to[1]=="number"){I.scrollTop=G.scroll.to[1]}J.proxyCallback();return J},motion:function(I,G,J,K,F,H){return this.run(I,G,J,K,F,H)},color:function(I,G,J,K,F,H){return this.run(I,G,J,K,F,H)},run:function(G,O,K,N,H,Q,P){var F={};for(var J in O){switch(J){case"points":var M,S,L=Ext.fly(G,"_animrun");L.position();if(M=O.points.by){var R=L.getXY();S=L.translatePoints([R[0]+M[0],R[1]+M[1]])}else{S=L.translatePoints(O.points.to)}F.left=S.left+"px";F.top=S.top+"px";break;case"width":F.width=O.width.to+"px";break;case"height":F.height=O.height.to+"px";break;case"opacity":F.opacity=String(O.opacity.to);break;default:F[J]=String(O[J].to);break}}var I=E(H,Q);I.effect=new Effect.Morph(Ext.id(G),{duration:K,afterFinish:I.proxyCallback,transition:D[N]||Effect.Transitions.linear,style:F});return I}}}();function C(D){if(!B){B=new Ext.Element.Flyweight()}B.dom=D;return B}Ext.lib.Region=function(F,G,D,E){this.top=F;this[1]=F;this.right=G;this.bottom=D;this.left=E;this[0]=E};Ext.lib.Region.prototype={contains:function(D){return(D.left>=this.left&&D.right<=this.right&&D.top>=this.top&&D.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(H){var F=Math.max(this.top,H.top);var G=Math.min(this.right,H.right);var D=Math.min(this.bottom,H.bottom);var E=Math.max(this.left,H.left);if(D>=F&&G>=E){return new Ext.lib.Region(F,G,D,E)}else{return null}},union:function(H){var F=Math.min(this.top,H.top);var G=Math.max(this.right,H.right);var D=Math.max(this.bottom,H.bottom);var E=Math.min(this.left,H.left);return new Ext.lib.Region(F,G,D,E)},constrainTo:function(D){this.top=this.top.constrain(D.top,D.bottom);this.bottom=this.bottom.constrain(D.top,D.bottom);this.left=this.left.constrain(D.left,D.right);this.right=this.right.constrain(D.left,D.right);return this},adjust:function(F,E,D,G){this.top+=F;this.left+=E;this.right+=G;this.bottom+=D;return this}};Ext.lib.Region.getRegion=function(G){var I=Ext.lib.Dom.getXY(G);var F=I[1];var H=I[0]+G.offsetWidth;var D=I[1]+G.offsetHeight;var E=I[0];return new Ext.lib.Region(F,H,D,E)};Ext.lib.Point=function(D,E){if(Ext.isArray(D)){E=D[1];D=D[0]}this.x=this.right=this.left=this[0]=D;this.y=this.top=this.bottom=this[1]=E};Ext.lib.Point.prototype=new Ext.lib.Region();if(Ext.isIE){function A(){var D=Function.prototype;delete D.createSequence;delete D.defer;delete D.createDelegate;delete D.createCallback;delete D.createInterceptor;window.detachEvent("onunload",A)}window.attachEvent("onunload",A)}})();
+Ext={version:"2.2.1"};window["undefined"]=window["undefined"];Ext.apply=function(d,e,b){if(b){Ext.apply(d,b)}if(d&&e&&typeof e=="object"){for(var a in e){d[a]=e[a]}}return d};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isChrome=ua.indexOf("chrome")>-1,isSafari=!isChrome&&(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isIE8=!isOpera&&ua.indexOf("msie 8")>-1,isGecko=!isSafari&&!isChrome&&ua.indexOf("gecko")>-1,isGecko3=isGecko&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http://extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return}var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}if(Ext.isIE&&overrides.toString!=origclass.toString){p.toString=overrides.toString}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+' == "undefined"){'+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isDate(ov)){var s=Ext.encode(ov).replace(/"/g,"");buf.push(k,"=",s,"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"||isNaN(v)){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isChrome:isChrome,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7&&!isIE8,isIE7:isIE7,isIE8:isIE8,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var a=arguments;var b=this;return function(){return b.apply(window,a)}},createDelegate:function(c,b,a){var d=this;return function(){var f=b||arguments;if(a===true){f=Array.prototype.slice.call(arguments,0);f=f.concat(b)}else{if(typeof a=="number"){f=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(f,e)}}return d.apply(c||window,f)}},defer:function(c,e,b,a){var d=this.createDelegate(e,b,a);if(c){return setTimeout(d,c)}d();return 0},createSequence:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}},createInterceptor:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){b.target=this;b.method=c;if(b.apply(a||this||window,arguments)===false){return}return c.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=new String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a.toString()},format:function(b){var a=Array.prototype.slice.call(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.applyIf(Array.prototype,{indexOf:function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1},remove:function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this}});Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};(function(){var b;Ext.lib.Dom={getViewWidth:function(d){return d?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(d){return d?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){var d=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(d,this.getViewportHeight())},getDocumentWidth:function(){var d=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(d,this.getViewportWidth())},getViewportHeight:function(){var d=self.innerHeight;var e=document.compatMode;if((e||Ext.isIE)&&!Ext.isOpera){d=(e=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight}return d},getViewportWidth:function(){var d=self.innerWidth;var e=document.compatMode;if(e||Ext.isIE){d=(e=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth}return d},isAncestor:function(e,f){e=Ext.getDom(e);f=Ext.getDom(f);if(!e||!f){return false}if(e.contains&&!Ext.isSafari){return e.contains(f)}else{if(e.compareDocumentPosition){return !!(e.compareDocumentPosition(f)&16)}else{var d=f.parentNode;while(d){if(d==e){return true}else{if(!d.tagName||d.tagName.toUpperCase()=="HTML"){return false}}d=d.parentNode}return false}}},getRegion:function(d){return Ext.lib.Region.getRegion(d)},getY:function(d){return this.getXY(d)[1]},getX:function(d){return this.getXY(d)[0]},getXY:function(f){var e,j,l,m,i=(document.body||document.documentElement);f=Ext.getDom(f);if(f==i){return[0,0]}if(f.getBoundingClientRect){l=f.getBoundingClientRect();m=c(document).getScroll();return[l.left+m.left,l.top+m.top]}var n=0,k=0;e=f;var d=c(f).getStyle("position")=="absolute";while(e){n+=e.offsetLeft;k+=e.offsetTop;if(!d&&c(e).getStyle("position")=="absolute"){d=true}if(Ext.isGecko){j=c(e);var o=parseInt(j.getStyle("borderTopWidth"),10)||0;var g=parseInt(j.getStyle("borderLeftWidth"),10)||0;n+=g;k+=o;if(e!=f&&j.getStyle("overflow")!="visible"){n+=g;k+=o}}e=e.offsetParent}if(Ext.isSafari&&d){n-=i.offsetLeft;k-=i.offsetTop}if(Ext.isGecko&&!d){var h=c(i);n+=parseInt(h.getStyle("borderLeftWidth"),10)||0;k+=parseInt(h.getStyle("borderTopWidth"),10)||0}e=f.parentNode;while(e&&e!=i){if(!Ext.isOpera||(e.tagName!="TR"&&c(e).getStyle("display")!="inline")){n-=e.scrollLeft;k-=e.scrollTop}e=e.parentNode}return[n,k]},setXY:function(d,e){d=Ext.fly(d,"_setXY");d.position();var f=d.translatePoints(e);if(e[0]!==false){d.dom.style.left=f.left+"px"}if(e[1]!==false){d.dom.style.top=f.top+"px"}},setX:function(e,d){this.setXY(e,[d,false])},setY:function(d,e){this.setXY(d,[false,e])}};Ext.lib.Event={getPageX:function(d){return Event.pointerX(d.browserEvent||d)},getPageY:function(d){return Event.pointerY(d.browserEvent||d)},getXY:function(d){d=d.browserEvent||d;return[Event.pointerX(d),Event.pointerY(d)]},getTarget:function(d){return Event.element(d.browserEvent||d)},resolveTextNode:function(d){if(d&&3==d.nodeType){return d.parentNode}else{return d}},getRelatedTarget:function(e){e=e.browserEvent||e;var d=e.relatedTarget;if(!d){if(e.type=="mouseout"){d=e.toElement}else{if(e.type=="mouseover"){d=e.fromElement}}}return this.resolveTextNode(d)},on:function(f,d,e){Event.observe(f,d,e,false)},un:function(f,d,e){Event.stopObserving(f,d,e,false)},purgeElement:function(d){},preventDefault:function(d){d=d.browserEvent||d;if(d.preventDefault){d.preventDefault()}else{d.returnValue=false}},stopPropagation:function(d){d=d.browserEvent||d;if(d.stopPropagation){d.stopPropagation()}else{d.cancelBubble=true}},stopEvent:function(d){Event.stop(d.browserEvent||d)},onAvailable:function(j,e,d){var i=new Date(),h;var g=function(){if(i.getElapsed()>10000){clearInterval(h)}var f=document.getElementById(j);if(f){clearInterval(h);e.call(d||window,f)}};h=setInterval(g,50)}};Ext.lib.Ajax=function(){var e=function(f){return f.success?function(g){f.success.call(f.scope||window,{responseText:g.responseText,responseXML:g.responseXML,argument:f.argument})}:Ext.emptyFn};var d=function(f){return f.failure?function(g){f.failure.call(f.scope||window,{responseText:g.responseText,responseXML:g.responseXML,argument:f.argument})}:Ext.emptyFn};return{request:function(l,i,f,j,g){var k={method:l,parameters:j||"",timeout:f.timeout,onSuccess:e(f),onFailure:d(f)};if(g){var h=g.headers;if(h){k.requestHeaders=h}if(g.xmlData){l=(l?l:(g.method?g.method:"POST"));if(!h||!h["Content-Type"]){k.contentType="text/xml"}k.postBody=g.xmlData;delete k.parameters}if(g.jsonData){l=(l?l:(g.method?g.method:"POST"));if(!h||!h["Content-Type"]){k.contentType="application/json"}k.postBody=typeof g.jsonData=="object"?Ext.encode(g.jsonData):g.jsonData;delete k.parameters}}new Ajax.Request(i,k)},formRequest:function(j,i,g,k,f,h){new Ajax.Request(i,{method:Ext.getDom(j).method||"POST",parameters:Form.serialize(j)+(k?"&"+k:""),timeout:g.timeout,onSuccess:e(g),onFailure:d(g)})},isCallInProgress:function(f){return false},abort:function(f){return false},serializeForm:function(f){return Form.serialize(f.dom||f)}}}();Ext.lib.Anim=function(){var d={easeOut:function(f){return 1-Math.pow(1-f,2)},easeIn:function(f){return 1-Math.pow(1-f,2)}};var e=function(f,g){return{stop:function(h){this.effect.cancel()},isAnimated:function(){return this.effect.state=="running"},proxyCallback:function(){Ext.callback(f,g)}}};return{scroll:function(i,g,k,l,f,h){var j=e(f,h);i=Ext.getDom(i);if(typeof g.scroll.to[0]=="number"){i.scrollLeft=g.scroll.to[0]}if(typeof g.scroll.to[1]=="number"){i.scrollTop=g.scroll.to[1]}j.proxyCallback();return j},motion:function(i,g,j,k,f,h){return this.run(i,g,j,k,f,h)},color:function(i,g,j,k,f,h){return this.run(i,g,j,k,f,h)},run:function(g,q,l,p,h,s,r){var f={};for(var j in q){switch(j){case"points":var n,u,m=Ext.fly(g,"_animrun");m.position();if(n=q.points.by){var t=m.getXY();u=m.translatePoints([t[0]+n[0],t[1]+n[1]])}else{u=m.translatePoints(q.points.to)}f.left=u.left+"px";f.top=u.top+"px";break;case"width":f.width=q.width.to+"px";break;case"height":f.height=q.height.to+"px";break;case"opacity":f.opacity=String(q.opacity.to);break;default:f[j]=String(q[j].to);break}}var i=e(h,s);i.effect=new Effect.Morph(Ext.id(g),{duration:l,afterFinish:i.proxyCallback,transition:d[p]||Effect.Transitions.linear,style:f});return i}}}();function c(d){if(!b){b=new Ext.Element.Flyweight()}b.dom=d;return b}Ext.lib.Region=function(f,g,d,e){this.top=f;this[1]=f;this.right=g;this.bottom=d;this.left=e;this[0]=e};Ext.lib.Region.prototype={contains:function(d){return(d.left>=this.left&&d.right<=this.right&&d.top>=this.top&&d.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(h){var f=Math.max(this.top,h.top);var g=Math.min(this.right,h.right);var d=Math.min(this.bottom,h.bottom);var e=Math.max(this.left,h.left);if(d>=f&&g>=e){return new Ext.lib.Region(f,g,d,e)}else{return null}},union:function(h){var f=Math.min(this.top,h.top);var g=Math.max(this.right,h.right);var d=Math.max(this.bottom,h.bottom);var e=Math.min(this.left,h.left);return new Ext.lib.Region(f,g,d,e)},constrainTo:function(d){this.top=this.top.constrain(d.top,d.bottom);this.bottom=this.bottom.constrain(d.top,d.bottom);this.left=this.left.constrain(d.left,d.right);this.right=this.right.constrain(d.left,d.right);return this},adjust:function(f,e,d,g){this.top+=f;this.left+=e;this.right+=g;this.bottom+=d;return this}};Ext.lib.Region.getRegion=function(g){var i=Ext.lib.Dom.getXY(g);var f=i[1];var h=i[0]+g.offsetWidth;var d=i[1]+g.offsetHeight;var e=i[0];return new Ext.lib.Region(f,h,d,e)};Ext.lib.Point=function(d,e){if(Ext.isArray(d)){e=d[1];d=d[0]}this.x=this.right=this.left=this[0]=d;this.y=this.top=this.bottom=this[1]=e};Ext.lib.Point.prototype=new Ext.lib.Region();if(Ext.isIE){function a(){var d=Function.prototype;delete d.createSequence;delete d.defer;delete d.createDelegate;delete d.createCallback;delete d.createInterceptor;window.detachEvent("onunload",a)}window.attachEvent("onunload",a)}})();
\ No newline at end of file
diff --git a/typo3/contrib/extjs/adapter/yui/ext-yui-adapter.js b/typo3/contrib/extjs/adapter/yui/ext-yui-adapter.js
new file mode 100644 (file)
index 0000000..c95d22e
--- /dev/null
@@ -0,0 +1 @@
+Ext={version:"2.2.1"};window["undefined"]=window["undefined"];Ext.apply=function(d,e,b){if(b){Ext.apply(d,b)}if(d&&e&&typeof e=="object"){for(var a in e){d[a]=e[a]}}return d};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isChrome=ua.indexOf("chrome")>-1,isSafari=!isChrome&&(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isIE8=!isOpera&&ua.indexOf("msie 8")>-1,isGecko=!isSafari&&!isChrome&&ua.indexOf("gecko")>-1,isGecko3=isGecko&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http://extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return}var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}if(Ext.isIE&&overrides.toString!=origclass.toString){p.toString=overrides.toString}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+' == "undefined"){'+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isDate(ov)){var s=Ext.encode(ov).replace(/"/g,"");buf.push(k,"=",s,"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"||isNaN(v)){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.length=="number"&&typeof v.splice=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isChrome:isChrome,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7&&!isIE8,isIE7:isIE7,isIE8:isIE8,isGecko:isGecko,isGecko2:isGecko&&!isGecko3,isGecko3:isGecko3,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isMac&&isGecko&&!isGecko3))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var a=arguments;var b=this;return function(){return b.apply(window,a)}},createDelegate:function(c,b,a){var d=this;return function(){var f=b||arguments;if(a===true){f=Array.prototype.slice.call(arguments,0);f=f.concat(b)}else{if(typeof a=="number"){f=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(f,e)}}return d.apply(c||window,f)}},defer:function(c,e,b,a){var d=this.createDelegate(e,b,a);if(c){return setTimeout(d,c)}d();return 0},createSequence:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}},createInterceptor:function(b,a){if(typeof b!="function"){return this}var c=this;return function(){b.target=this;b.method=c;if(b.apply(a||this||window,arguments)===false){return}return c.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=new String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a.toString()},format:function(b){var a=Array.prototype.slice.call(arguments,1);return b.replace(/\{(\d+)\}/g,function(c,d){return a[d]})}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.applyIf(Array.prototype,{indexOf:function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1},remove:function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this}});Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};if(typeof YAHOO=="undefined"){throw"Unable to load Ext, core YUI utilities (yahoo, dom, event) not found."}(function(){var f=YAHOO.util.Event;var g=YAHOO.util.Dom;var b=YAHOO.util.Connect;var h=YAHOO.util.Easing;var a=YAHOO.util.Anim;var d;Ext.lib.Dom={getViewWidth:function(i){return i?g.getDocumentWidth():g.getViewportWidth()},getViewHeight:function(i){return i?g.getDocumentHeight():g.getViewportHeight()},isAncestor:function(i,j){return g.isAncestor(i,j)},getRegion:function(i){return g.getRegion(i)},getY:function(i){return this.getXY(i)[1]},getX:function(i){return this.getXY(i)[0]},getXY:function(k){var j,o,r,s,n=(document.body||document.documentElement);k=Ext.getDom(k);if(k==n){return[0,0]}if(k.getBoundingClientRect){r=k.getBoundingClientRect();s=e(document).getScroll();return[r.left+s.left,r.top+s.top]}var t=0,q=0;j=k;var i=e(k).getStyle("position")=="absolute";while(j){t+=j.offsetLeft;q+=j.offsetTop;if(!i&&e(j).getStyle("position")=="absolute"){i=true}if(Ext.isGecko){o=e(j);var u=parseInt(o.getStyle("borderTopWidth"),10)||0;var l=parseInt(o.getStyle("borderLeftWidth"),10)||0;t+=l;q+=u;if(j!=k&&o.getStyle("overflow")!="visible"){t+=l;q+=u}}j=j.offsetParent}if(Ext.isSafari&&i){t-=n.offsetLeft;q-=n.offsetTop}if(Ext.isGecko&&!i){var m=e(n);t+=parseInt(m.getStyle("borderLeftWidth"),10)||0;q+=parseInt(m.getStyle("borderTopWidth"),10)||0}j=k.parentNode;while(j&&j!=n){if(!Ext.isOpera||(j.tagName!="TR"&&e(j).getStyle("display")!="inline")){t-=j.scrollLeft;q-=j.scrollTop}j=j.parentNode}return[t,q]},setXY:function(i,j){i=Ext.fly(i,"_setXY");i.position();var k=i.translatePoints(j);if(j[0]!==false){i.dom.style.left=k.left+"px"}if(j[1]!==false){i.dom.style.top=k.top+"px"}},setX:function(j,i){this.setXY(j,[i,false])},setY:function(i,j){this.setXY(i,[false,j])}};Ext.lib.Event={getPageX:function(i){return f.getPageX(i.browserEvent||i)},getPageY:function(i){return f.getPageY(i.browserEvent||i)},getXY:function(i){return f.getXY(i.browserEvent||i)},getTarget:function(i){return f.getTarget(i.browserEvent||i)},getRelatedTarget:function(i){return f.getRelatedTarget(i.browserEvent||i)},on:function(m,i,l,k,j){f.on(m,i,l,k,j)},un:function(k,i,j){f.removeListener(k,i,j)},purgeElement:function(i){f.purgeElement(i)},preventDefault:function(i){f.preventDefault(i.browserEvent||i)},stopPropagation:function(i){f.stopPropagation(i.browserEvent||i)},stopEvent:function(i){f.stopEvent(i.browserEvent||i)},onAvailable:function(l,k,j,i){return f.onAvailable(l,k,j,i)}};Ext.lib.Ajax={request:function(o,m,i,n,j){if(j){var k=j.headers;if(k){for(var l in k){if(k.hasOwnProperty(l)){b.initHeader(l,k[l],false)}}}if(j.xmlData){if(!k||!k["Content-Type"]){b.initHeader("Content-Type","text/xml",false)}o=(o?o:(j.method?j.method:"POST"));n=j.xmlData}else{if(j.jsonData){if(!k||!k["Content-Type"]){b.initHeader("Content-Type","application/json",false)}o=(o?o:(j.method?j.method:"POST"));n=typeof j.jsonData=="object"?Ext.encode(j.jsonData):j.jsonData}}}return b.asyncRequest(o,m,i,n)},formRequest:function(m,l,j,n,i,k){b.setForm(m,i,k);return b.asyncRequest(Ext.getDom(m).method||"POST",l,j,n)},isCallInProgress:function(i){return b.isCallInProgress(i)},abort:function(i){return b.abort(i)},serializeForm:function(i){var j=b.setForm(i.dom||i);b.resetFormState();return j}};Ext.lib.Region=YAHOO.util.Region;Ext.lib.Point=YAHOO.util.Point;Ext.lib.Anim={scroll:function(l,j,m,n,i,k){this.run(l,j,m,n,i,k,YAHOO.util.Scroll)},motion:function(l,j,m,n,i,k){this.run(l,j,m,n,i,k,YAHOO.util.Motion)},color:function(l,j,m,n,i,k){this.run(l,j,m,n,i,k,YAHOO.util.ColorAnim)},run:function(m,j,o,p,i,l,k){k=k||YAHOO.util.Anim;if(typeof p=="string"){p=YAHOO.util.Easing[p]}var n=new k(m,j,o,p);n.animateX(function(){Ext.callback(i,l)});return n}};function e(i){if(!d){d=new Ext.Element.Flyweight()}d.dom=i;return d}if(Ext.isIE){function c(){var i=Function.prototype;delete i.createSequence;delete i.defer;delete i.createDelegate;delete i.createCallback;delete i.createInterceptor;window.detachEvent("onunload",c)}window.attachEvent("onunload",c)}if(YAHOO.util.Anim){YAHOO.util.Anim.prototype.animateX=function(k,i){var j=function(){this.onComplete.unsubscribe(j);if(typeof k=="function"){k.call(i||this,this)}};this.onComplete.subscribe(j,this,true);this.animate()}}if(YAHOO.util.DragDrop&&Ext.dd.DragDrop){YAHOO.util.DragDrop.defaultPadding=Ext.dd.DragDrop.defaultPadding;YAHOO.util.DragDrop.constrainTo=Ext.dd.DragDrop.constrainTo}YAHOO.util.Dom.getXY=function(i){var j=function(k){return Ext.lib.Dom.getXY(k)};return YAHOO.util.Dom.batch(i,j,YAHOO.util.Dom,true)};if(YAHOO.util.AnimMgr){YAHOO.util.AnimMgr.fps=1000}YAHOO.util.Region.prototype.adjust=function(k,j,i,m){this.top+=k;this.left+=j;this.right+=m;this.bottom+=i;return this};YAHOO.util.Region.prototype.constrainTo=function(i){this.top=this.top.constrain(i.top,i.bottom);this.bottom=this.bottom.constrain(i.top,i.bottom);this.left=this.left.constrain(i.left,i.right);this.right=this.right.constrain(i.left,i.right);return this}})();
\ No newline at end of file
index 6a046f2..072ce1c 100644 (file)
 /*\r
- * Ext JS Library 2.2\r
- * Copyright(c) 2006-2008, Ext JS, LLC.\r
+ * Ext JS Library 2.2.1\r
+ * Copyright(c) 2006-2009, Ext JS, LLC.\r
  * licensing@extjs.com\r
  * \r
  * http://extjs.com/license\r
  */\r
 \r
-
-Ext.DomHelper = function(){
-    var tempTableEl = null;
-    var emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;
-    var tableRe = /^table|tbody|tr|td$/i;
-
-        var createHtml = function(o){
-        if(typeof o == 'string'){
-            return o;
-        }
-        var b = "";
-        if (Ext.isArray(o)) {
-            for (var i = 0, l = o.length; i < l; i++) {
-                b += createHtml(o[i]);
-            }
-            return b;
-        }
-        if(!o.tag){
-            o.tag = "div";
-        }
-        b += "<" + o.tag;
-        for(var attr in o){
-            if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || typeof o[attr] == "function") continue;
-            if(attr == "style"){
-                var s = o["style"];
-                if(typeof s == "function"){
-                    s = s.call();
-                }
-                if(typeof s == "string"){
-                    b += ' style="' + s + '"';
-                }else if(typeof s == "object"){
-                    b += ' style="';
-                    for(var key in s){
-                        if(typeof s[key] != "function"){
-                            b += key + ":" + s[key] + ";";
-                        }
-                    }
-                    b += '"';
-                }
-            }else{
-                if(attr == "cls"){
-                    b += ' class="' + o["cls"] + '"';
-                }else if(attr == "htmlFor"){
-                    b += ' for="' + o["htmlFor"] + '"';
-                }else{
-                    b += " " + attr + '="' + o[attr] + '"';
-                }
-            }
-        }
-        if(emptyTags.test(o.tag)){
-            b += "/>";
-        }else{
-            b += ">";
-            var cn = o.children || o.cn;
-            if(cn){
-                b += createHtml(cn);
-            } else if(o.html){
-                b += o.html;
-            }
-            b += "</" + o.tag + ">";
-        }
-        return b;
-    };
-
-        
-    var createDom = function(o, parentNode){
-        var el;
-        if (Ext.isArray(o)) {                                   el = document.createDocumentFragment();             for(var i = 0, l = o.length; i < l; i++) {
-                createDom(o[i], el);
-            }
-        } else if (typeof o == "string") {                     el = document.createTextNode(o);
-        } else {
-            el = document.createElement(o.tag||'div');
-            var useSet = !!el.setAttribute;             for(var attr in o){
-                if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || attr == "style" || typeof o[attr] == "function") continue;
-                if(attr=="cls"){
-                    el.className = o["cls"];
-                }else{
-                    if(useSet) el.setAttribute(attr, o[attr]);
-                    else el[attr] = o[attr];
-                }
-            }
-            Ext.DomHelper.applyStyles(el, o.style);
-            var cn = o.children || o.cn;
-            if(cn){
-                createDom(cn, el);
-            } else if(o.html){
-                el.innerHTML = o.html;
-            }
-        }
-        if(parentNode){
-           parentNode.appendChild(el);
-        }
-        return el;
-    };
-
-    var ieTable = function(depth, s, h, e){
-        tempTableEl.innerHTML = [s, h, e].join('');
-        var i = -1, el = tempTableEl;
-        while(++i < depth){
-            el = el.firstChild;
-        }
-        return el;
-    };
-
-        var ts = '<table>',
-        te = '</table>',
-        tbs = ts+'<tbody>',
-        tbe = '</tbody>'+te,
-        trs = tbs + '<tr>',
-        tre = '</tr>'+tbe;
-
-    
-    var insertIntoTable = function(tag, where, el, html){
-        if(!tempTableEl){
-            tempTableEl = document.createElement('div');
-        }
-        var node;
-        var before = null;
-        if(tag == 'td'){
-            if(where == 'afterbegin' || where == 'beforeend'){                 return;
-            }
-            if(where == 'beforebegin'){
-                before = el;
-                el = el.parentNode;
-            } else{
-                before = el.nextSibling;
-                el = el.parentNode;
-            }
-            node = ieTable(4, trs, html, tre);
-        }
-        else if(tag == 'tr'){
-            if(where == 'beforebegin'){
-                before = el;
-                el = el.parentNode;
-                node = ieTable(3, tbs, html, tbe);
-            } else if(where == 'afterend'){
-                before = el.nextSibling;
-                el = el.parentNode;
-                node = ieTable(3, tbs, html, tbe);
-            } else{                 if(where == 'afterbegin'){
-                    before = el.firstChild;
-                }
-                node = ieTable(4, trs, html, tre);
-            }
-        } else if(tag == 'tbody'){
-            if(where == 'beforebegin'){
-                before = el;
-                el = el.parentNode;
-                node = ieTable(2, ts, html, te);
-            } else if(where == 'afterend'){
-                before = el.nextSibling;
-                el = el.parentNode;
-                node = ieTable(2, ts, html, te);
-            } else{
-                if(where == 'afterbegin'){
-                    before = el.firstChild;
-                }
-                node = ieTable(3, tbs, html, tbe);
-            }
-        } else{             if(where == 'beforebegin' || where == 'afterend'){                 return;
-            }
-            if(where == 'afterbegin'){
-                before = el.firstChild;
-            }
-            node = ieTable(2, ts, html, te);
-        }
-        el.insertBefore(node, before);
-        return node;
-    };
-
-
-    return {
-    
-    useDom : false,
-
-    
-    markup : function(o){
-        return createHtml(o);
-    },
-
-    
-    applyStyles : function(el, styles){
-        if(styles){
-           el = Ext.fly(el);
-           if(typeof styles == "string"){
-               var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
-               var matches;
-               while ((matches = re.exec(styles)) != null){
-                   el.setStyle(matches[1], matches[2]);
-               }
-           }else if (typeof styles == "object"){
-               for (var style in styles){
-                  el.setStyle(style, styles[style]);
-               }
-           }else if (typeof styles == "function"){
-                Ext.DomHelper.applyStyles(el, styles.call());
-           }
-        }
-    },
-
-    
-    insertHtml : function(where, el, html){
-        where = where.toLowerCase();
-        if(el.insertAdjacentHTML){
-            if(tableRe.test(el.tagName)){
-                var rs;
-                if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
-                    return rs;
-                }
-            }
-            switch(where){
-                case "beforebegin":
-                    el.insertAdjacentHTML('BeforeBegin', html);
-                    return el.previousSibling;
-                case "afterbegin":
-                    el.insertAdjacentHTML('AfterBegin', html);
-                    return el.firstChild;
-                case "beforeend":
-                    el.insertAdjacentHTML('BeforeEnd', html);
-                    return el.lastChild;
-                case "afterend":
-                    el.insertAdjacentHTML('AfterEnd', html);
-                    return el.nextSibling;
-            }
-            throw 'Illegal insertion point -> "' + where + '"';
-        }
-        var range = el.ownerDocument.createRange();
-        var frag;
-        switch(where){
-             case "beforebegin":
-                range.setStartBefore(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el);
-                return el.previousSibling;
-             case "afterbegin":
-                if(el.firstChild){
-                    range.setStartBefore(el.firstChild);
-                    frag = range.createContextualFragment(html);
-                    el.insertBefore(frag, el.firstChild);
-                    return el.firstChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.firstChild;
-                }
-            case "beforeend":
-                if(el.lastChild){
-                    range.setStartAfter(el.lastChild);
-                    frag = range.createContextualFragment(html);
-                    el.appendChild(frag);
-                    return el.lastChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.lastChild;
-                }
-            case "afterend":
-                range.setStartAfter(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el.nextSibling);
-                return el.nextSibling;
-            }
-            throw 'Illegal insertion point -> "' + where + '"';
-    },
-
-    
-    insertBefore : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "beforeBegin");
-    },
-
-    
-    insertAfter : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
-    },
-
-    
-    insertFirst : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterBegin", "firstChild");
-    },
-
-        doInsert : function(el, o, returnElement, pos, sibling){
-        el = Ext.getDom(el);
-        var newNode;
-        if(this.useDom){
-            newNode = createDom(o, null);
-            (sibling === "firstChild" ? el : el.parentNode).insertBefore(newNode, sibling ? el[sibling] : el);
-        }else{
-            var html = createHtml(o);
-            newNode = this.insertHtml(pos, el, html);
-        }
-        return returnElement ? Ext.get(newNode, true) : newNode;
-    },
-
-    
-    append : function(el, o, returnElement){
-        el = Ext.getDom(el);
-        var newNode;
-        if(this.useDom){
-            newNode = createDom(o, null);
-            el.appendChild(newNode);
-        }else{
-            var html = createHtml(o);
-            newNode = this.insertHtml("beforeEnd", el, html);
-        }
-        return returnElement ? Ext.get(newNode, true) : newNode;
-    },
-
-    
-    overwrite : function(el, o, returnElement){
-        el = Ext.getDom(el);
-        el.innerHTML = createHtml(o);
-        return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
-    },
-
-    
-    createTemplate : function(o){
-        var html = createHtml(o);
-        return new Ext.Template(html);
-    }
-    };
-}();
-
-
-Ext.Template = function(html){
-    var a = arguments;
-    if(Ext.isArray(html)){
-        html = html.join("");
-    }else if(a.length > 1){
-        var buf = [];
-        for(var i = 0, len = a.length; i < len; i++){
-            if(typeof a[i] == 'object'){
-                Ext.apply(this, a[i]);
-            }else{
-                buf[buf.length] = a[i];
-            }
-        }
-        html = buf.join('');
-    }
-    
-    this.html = html;
-    if(this.compiled){
-        this.compile();
-    }
-};
-Ext.Template.prototype = {
-    
-    applyTemplate : function(values){
-        if(this.compiled){
-            return this.compiled(values);
-        }
-        var useF = this.disableFormats !== true;
-        var fm = Ext.util.Format, tpl = this;
-        var fn = function(m, name, format, args){
-            if(format && useF){
-                if(format.substr(0, 5) == "this."){
-                    return tpl.call(format.substr(5), values[name], values);
-                }else{
-                    if(args){
-                                                                                                var re = /^\s*['"](.*)["']\s*$/;
-                        args = args.split(',');
-                        for(var i = 0, len = args.length; i < len; i++){
-                            args[i] = args[i].replace(re, "$1");
-                        }
-                        args = [values[name]].concat(args);
-                    }else{
-                        args = [values[name]];
-                    }
-                    return fm[format].apply(fm, args);
-                }
-            }else{
-                return values[name] !== undefined ? values[name] : "";
-            }
-        };
-        return this.html.replace(this.re, fn);
-    },
-
-    
-    set : function(html, compile){
-        this.html = html;
-        this.compiled = null;
-        if(compile){
-            this.compile();
-        }
-        return this;
-    },
-
-    
-    disableFormats : false,
-
-    
-    re : /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
-
-    
-    compile : function(){
-        var fm = Ext.util.Format;
-        var useF = this.disableFormats !== true;
-        var sep = Ext.isGecko ? "+" : ",";
-        var fn = function(m, name, format, args){
-            if(format && useF){
-                args = args ? ',' + args : "";
-                if(format.substr(0, 5) != "this."){
-                    format = "fm." + format + '(';
-                }else{
-                    format = 'this.call("'+ format.substr(5) + '", ';
-                    args = ", values";
-                }
-            }else{
-                args= ''; format = "(values['" + name + "'] == undefined ? '' : ";
-            }
-            return "'"+ sep + format + "values['" + name + "']" + args + ")"+sep+"'";
-        };
-        var body;
-                if(Ext.isGecko){
-            body = "this.compiled = function(values){ return '" +
-                   this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) +
-                    "';};";
-        }else{
-            body = ["this.compiled = function(values){ return ['"];
-            body.push(this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn));
-            body.push("'].join('');};");
-            body = body.join('');
-        }
-        eval(body);
-        return this;
-    },
-
-        call : function(fnName, value, allValues){
-        return this[fnName](value, allValues);
-    },
-
-    
-    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);
-    },
-
-    doInsert : function(where, el, values, returnEl){
-        el = Ext.getDom(el);
-        var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values));
-        return returnEl ? Ext.get(newNode, true) : newNode;
-    },
-
-    
-    overwrite : function(el, values, returnElement){
-        el = Ext.getDom(el);
-        el.innerHTML = this.applyTemplate(values);
-        return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
-    }
-};
-
-Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
-
-Ext.DomHelper.Template = Ext.Template;
-
-
-Ext.Template.from = function(el, config){
-    el = Ext.getDom(el);
-    return new Ext.Template(el.value || el.innerHTML, config || '');
-};
+\r
+Ext.DomHelper = function(){\r
+    var tempTableEl = null;\r
+    var emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;\r
+    var tableRe = /^table|tbody|tr|td$/i;\r
+\r
+    // build as innerHTML where available\r
+    var createHtml = function(o){\r
+        if(typeof o == 'string'){\r
+            return o;\r
+        }\r
+        var b = "";\r
+        if (Ext.isArray(o)) {\r
+            for (var i = 0, l = o.length; i < l; i++) {\r
+                b += createHtml(o[i]);\r
+            }\r
+            return b;\r
+        }\r
+        if(!o.tag){\r
+            o.tag = "div";\r
+        }\r
+        b += "<" + o.tag;\r
+        for(var attr in o){\r
+            if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || typeof o[attr] == "function") continue;\r
+            if(attr == "style"){\r
+                var s = o["style"];\r
+                if(typeof s == "function"){\r
+                    s = s.call();\r
+                }\r
+                if(typeof s == "string"){\r
+                    b += ' style="' + s + '"';\r
+                }else if(typeof s == "object"){\r
+                    b += ' style="';\r
+                    for(var key in s){\r
+                        if(typeof s[key] != "function"){\r
+                            b += key + ":" + s[key] + ";";\r
+                        }\r
+                    }\r
+                    b += '"';\r
+                }\r
+            }else{\r
+                if(attr == "cls"){\r
+                    b += ' class="' + o["cls"] + '"';\r
+                }else if(attr == "htmlFor"){\r
+                    b += ' for="' + o["htmlFor"] + '"';\r
+                }else{\r
+                    b += " " + attr + '="' + o[attr] + '"';\r
+                }\r
+            }\r
+        }\r
+        if(emptyTags.test(o.tag)){\r
+            b += "/>";\r
+        }else{\r
+            b += ">";\r
+            var cn = o.children || o.cn;\r
+            if(cn){\r
+                b += createHtml(cn);\r
+            } else if(o.html){\r
+                b += o.html;\r
+            }\r
+            b += "</" + o.tag + ">";\r
+        }\r
+        return b;\r
+    };\r
+\r
+    // build as dom\r
+    \r
+    var createDom = function(o, parentNode){\r
+        var el;\r
+        if (Ext.isArray(o)) {                       // Allow Arrays of siblings to be inserted\r
+            el = document.createDocumentFragment(); // in one shot using a DocumentFragment\r
+            for(var i = 0, l = o.length; i < l; i++) {\r
+                createDom(o[i], el);\r
+            }\r
+        } else if (typeof o == "string") {         // Allow a string as a child spec.\r
+            el = document.createTextNode(o);\r
+        } else {\r
+            el = document.createElement(o.tag||'div');\r
+            var useSet = !!el.setAttribute; // In IE some elements don't have setAttribute\r
+            for(var attr in o){\r
+                if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || attr == "style" || typeof o[attr] == "function") continue;\r
+                if(attr=="cls"){\r
+                    el.className = o["cls"];\r
+                }else{\r
+                    if(useSet) el.setAttribute(attr, o[attr]);\r
+                    else el[attr] = o[attr];\r
+                }\r
+            }\r
+            Ext.DomHelper.applyStyles(el, o.style);\r
+            var cn = o.children || o.cn;\r
+            if(cn){\r
+                createDom(cn, el);\r
+            } else if(o.html){\r
+                el.innerHTML = o.html;\r
+            }\r
+        }\r
+        if(parentNode){\r
+           parentNode.appendChild(el);\r
+        }\r
+        return el;\r
+    };\r
+\r
+    var ieTable = function(depth, s, h, e){\r
+        tempTableEl.innerHTML = [s, h, e].join('');\r
+        var i = -1, el = tempTableEl;\r
+        while(++i < depth){\r
+            el = el.firstChild;\r
+        }\r
+        return el;\r
+    };\r
+\r
+    // kill repeat to save bytes\r
+    var ts = '<table>',\r
+        te = '</table>',\r
+        tbs = ts+'<tbody>',\r
+        tbe = '</tbody>'+te,\r
+        trs = tbs + '<tr>',\r
+        tre = '</tr>'+tbe;\r
+\r
+    \r
+    var insertIntoTable = function(tag, where, el, html){\r
+        if(!tempTableEl){\r
+            tempTableEl = document.createElement('div');\r
+        }\r
+        var node;\r
+        var before = null;\r
+        if(tag == 'td'){\r
+            if(where == 'afterbegin' || where == 'beforeend'){ // INTO a TD\r
+                return;\r
+            }\r
+            if(where == 'beforebegin'){\r
+                before = el;\r
+                el = el.parentNode;\r
+            } else{\r
+                before = el.nextSibling;\r
+                el = el.parentNode;\r
+            }\r
+            node = ieTable(4, trs, html, tre);\r
+        }\r
+        else if(tag == 'tr'){\r
+            if(where == 'beforebegin'){\r
+                before = el;\r
+                el = el.parentNode;\r
+                node = ieTable(3, tbs, html, tbe);\r
+            } else if(where == 'afterend'){\r
+                before = el.nextSibling;\r
+                el = el.parentNode;\r
+                node = ieTable(3, tbs, html, tbe);\r
+            } else{ // INTO a TR\r
+                if(where == 'afterbegin'){\r
+                    before = el.firstChild;\r
+                }\r
+                node = ieTable(4, trs, html, tre);\r
+            }\r
+        } else if(tag == 'tbody'){\r
+            if(where == 'beforebegin'){\r
+                before = el;\r
+                el = el.parentNode;\r
+                node = ieTable(2, ts, html, te);\r
+            } else if(where == 'afterend'){\r
+                before = el.nextSibling;\r
+                el = el.parentNode;\r
+                node = ieTable(2, ts, html, te);\r
+            } else{\r
+                if(where == 'afterbegin'){\r
+                    before = el.firstChild;\r
+                }\r
+                node = ieTable(3, tbs, html, tbe);\r
+            }\r
+        } else{ // TABLE\r
+            if(where == 'beforebegin' || where == 'afterend'){ // OUTSIDE the table\r
+                return;\r
+            }\r
+            if(where == 'afterbegin'){\r
+                before = el.firstChild;\r
+            }\r
+            node = ieTable(2, ts, html, te);\r
+        }\r
+        el.insertBefore(node, before);\r
+        return node;\r
+    };\r
+\r
+\r
+    return {\r
+    \r
+    useDom : false,\r
+\r
+    \r
+    markup : function(o){\r
+        return createHtml(o);\r
+    },\r
+\r
+    \r
+    applyStyles : function(el, styles){\r
+        if(styles){\r
+           el = Ext.fly(el);\r
+           if(typeof styles == "string"){\r
+               var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;\r
+               var matches;\r
+               while ((matches = re.exec(styles)) != null){\r
+                   el.setStyle(matches[1], matches[2]);\r
+               }\r
+           }else if (typeof styles == "object"){\r
+               for (var style in styles){\r
+                  el.setStyle(style, styles[style]);\r
+               }\r
+           }else if (typeof styles == "function"){\r
+                Ext.DomHelper.applyStyles(el, styles.call());\r
+           }\r
+        }\r
+    },\r
+\r
+    \r
+    insertHtml : function(where, el, html){\r
+        where = where.toLowerCase();\r
+        if(el.insertAdjacentHTML){\r
+            if(tableRe.test(el.tagName)){\r
+                var rs;\r
+                if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){\r
+                    return rs;\r
+                }\r
+            }\r
+            switch(where){\r
+                case "beforebegin":\r
+                    el.insertAdjacentHTML('BeforeBegin', html);\r
+                    return el.previousSibling;\r
+                case "afterbegin":\r
+                    el.insertAdjacentHTML('AfterBegin', html);\r
+                    return el.firstChild;\r
+                case "beforeend":\r
+                    el.insertAdjacentHTML('BeforeEnd', html);\r
+                    return el.lastChild;\r
+                case "afterend":\r
+                    el.insertAdjacentHTML('AfterEnd', html);\r
+                    return el.nextSibling;\r
+            }\r
+            throw 'Illegal insertion point -> "' + where + '"';\r
+        }\r
+        var range = el.ownerDocument.createRange();\r
+        var frag;\r
+        switch(where){\r
+             case "beforebegin":\r
+                range.setStartBefore(el);\r
+                frag = range.createContextualFragment(html);\r
+                el.parentNode.insertBefore(frag, el);\r
+                return el.previousSibling;\r
+             case "afterbegin":\r
+                if(el.firstChild){\r
+                    range.setStartBefore(el.firstChild);\r
+                    frag = range.createContextualFragment(html);\r
+                    el.insertBefore(frag, el.firstChild);\r
+                    return el.firstChild;\r
+                }else{\r
+                    el.innerHTML = html;\r
+                    return el.firstChild;\r
+                }\r
+            case "beforeend":\r
+                if(el.lastChild){\r
+                    range.setStartAfter(el.lastChild);\r
+                    frag = range.createContextualFragment(html);\r
+                    el.appendChild(frag);\r
+                    return el.lastChild;\r
+                }else{\r
+                    el.innerHTML = html;\r
+                    return el.lastChild;\r
+                }\r
+            case "afterend":\r
+                range.setStartAfter(el);\r
+                frag = range.createContextualFragment(html);\r
+                el.parentNode.insertBefore(frag, el.nextSibling);\r
+                return el.nextSibling;\r
+            }\r
+            throw 'Illegal insertion point -> "' + where + '"';\r
+    },\r
+\r
+    \r
+    insertBefore : function(el, o, returnElement){\r
+        return this.doInsert(el, o, returnElement, "beforeBegin");\r
+    },\r
+\r
+    \r
+    insertAfter : function(el, o, returnElement){\r
+        return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");\r
+    },\r
+\r
+    \r
+    insertFirst : function(el, o, returnElement){\r
+        return this.doInsert(el, o, returnElement, "afterBegin", "firstChild");\r
+    },\r
+\r
+    // private\r
+    doInsert : function(el, o, returnElement, pos, sibling){\r
+        el = Ext.getDom(el);\r
+        var newNode;\r
+        if(this.useDom){\r
+            newNode = createDom(o, null);\r
+            (sibling === "firstChild" ? el : el.parentNode).insertBefore(newNode, sibling ? el[sibling] : el);\r
+        }else{\r
+            var html = createHtml(o);\r
+            newNode = this.insertHtml(pos, el, html);\r
+        }\r
+        return returnElement ? Ext.get(newNode, true) : newNode;\r
+    },\r
+\r
+    \r
+    append : function(el, o, returnElement){\r
+        el = Ext.getDom(el);\r
+        var newNode;\r
+        if(this.useDom){\r
+            newNode = createDom(o, null);\r
+            el.appendChild(newNode);\r
+        }else{\r
+            var html = createHtml(o);\r
+            newNode = this.insertHtml("beforeEnd", el, html);\r
+        }\r
+        return returnElement ? Ext.get(newNode, true) : newNode;\r
+    },\r
+\r
+    \r
+    overwrite : function(el, o, returnElement){\r
+        el = Ext.getDom(el);\r
+        el.innerHTML = createHtml(o);\r
+        return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;\r
+    },\r
+\r
+    \r
+    createTemplate : function(o){\r
+        var html = createHtml(o);\r
+        return new Ext.Template(html);\r
+    }\r
+    };\r
+}();\r
+\r
+\r
+Ext.Template = function(html){\r
+    var a = arguments;\r
+    if(Ext.isArray(html)){\r
+        html = html.join("");\r
+    }else if(a.length > 1){\r
+        var buf = [];\r
+        for(var i = 0, len = a.length; i < len; i++){\r
+            if(typeof a[i] == 'object'){\r
+                Ext.apply(this, a[i]);\r
+            }else{\r
+                buf[buf.length] = a[i];\r
+            }\r
+        }\r
+        html = buf.join('');\r
+    }\r
+    \r
+    this.html = html;\r
+    if(this.compiled){\r
+        this.compile();\r
+    }\r
+};\r
+Ext.Template.prototype = {\r
+    \r
+    applyTemplate : function(values){\r
+        if(this.compiled){\r
+            return this.compiled(values);\r
+        }\r
+        var useF = this.disableFormats !== true;\r
+        var fm = Ext.util.Format, tpl = this;\r
+        var fn = function(m, name, format, args){\r
+            if(format && useF){\r
+                if(format.substr(0, 5) == "this."){\r
+                    return tpl.call(format.substr(5), values[name], values);\r
+                }else{\r
+                    if(args){\r
+                        // quoted values are required for strings in compiled templates,\r
+                        // but for non compiled we need to strip them\r
+                        // quoted reversed for jsmin\r
+                        var re = /^\s*['"](.*)["']\s*$/;\r
+                        args = args.split(',');\r
+                        for(var i = 0, len = args.length; i < len; i++){\r
+                            args[i] = args[i].replace(re, "$1");\r
+                        }\r
+                        args = [values[name]].concat(args);\r
+                    }else{\r
+                        args = [values[name]];\r
+                    }\r
+                    return fm[format].apply(fm, args);\r
+                }\r
+            }else{\r
+                return values[name] !== undefined ? values[name] : "";\r
+            }\r
+        };\r
+        return this.html.replace(this.re, fn);\r
+    },\r
+\r
+    \r
+    set : function(html, compile){\r
+        this.html = html;\r
+        this.compiled = null;\r
+        if(compile){\r
+            this.compile();\r
+        }\r
+        return this;\r
+    },\r
+\r
+    \r
+    disableFormats : false,\r
+\r
+    \r
+    re : /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,\r
+\r
+    \r
+    compile : function(){\r
+        var fm = Ext.util.Format;\r
+        var useF = this.disableFormats !== true;\r
+        var sep = Ext.isGecko ? "+" : ",";\r
+        var fn = function(m, name, format, args){\r
+            if(format && useF){\r
+                args = args ? ',' + args : "";\r
+                if(format.substr(0, 5) != "this."){\r
+                    format = "fm." + format + '(';\r
+                }else{\r
+                    format = 'this.call("'+ format.substr(5) + '", ';\r
+                    args = ", values";\r
+                }\r
+            }else{\r
+                args= ''; format = "(values['" + name + "'] == undefined ? '' : ";\r
+            }\r
+            return "'"+ sep + format + "values['" + name + "']" + args + ")"+sep+"'";\r
+        };\r
+        var body;\r
+        // branched to use + in gecko and [].join() in others\r
+        if(Ext.isGecko){\r
+            body = "this.compiled = function(values){ return '" +\r
+                   this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) +\r
+                    "';};";\r
+        }else{\r
+            body = ["this.compiled = function(values){ return ['"];\r
+            body.push(this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn));\r
+            body.push("'].join('');};");\r
+            body = body.join('');\r
+        }\r
+        eval(body);\r
+        return this;\r
+    },\r
+\r
+    // private function used to call members\r
+    call : function(fnName, value, allValues){\r
+        return this[fnName](value, allValues);\r
+    },\r
+\r
+    \r
+    insertFirst: function(el, values, returnElement){\r
+        return this.doInsert('afterBegin', el, values, returnElement);\r
+    },\r
+\r
+    \r
+    insertBefore: function(el, values, returnElement){\r
+        return this.doInsert('beforeBegin', el, values, returnElement);\r
+    },\r
+\r
+    \r
+    insertAfter : function(el, values, returnElement){\r
+        return this.doInsert('afterEnd', el, values, returnElement);\r
+    },\r
+\r
+    \r
+    append : function(el, values, returnElement){\r
+        return this.doInsert('beforeEnd', el, values, returnElement);\r
+    },\r
+\r
+    doInsert : function(where, el, values, returnEl){\r
+        el = Ext.getDom(el);\r
+        var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values));\r
+        return returnEl ? Ext.get(newNode, true) : newNode;\r
+    },\r
+\r
+    \r
+    overwrite : function(el, values, returnElement){\r
+        el = Ext.getDom(el);\r
+        el.innerHTML = this.applyTemplate(values);\r
+        return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;\r
+    }\r
+};\r
+\r
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;\r
+\r
+// backwards compat\r
+Ext.DomHelper.Template = Ext.Template;\r
+\r
+\r
+Ext.Template.from = function(el, config){\r
+    el = Ext.getDom(el);\r
+    return new Ext.Template(el.value || el.innerHTML, config || '');\r
+};\r
 \r
 \r
 Ext.DomQuery = function(){\r
@@ -674,13 +692,13 @@ Ext.DomQuery = function(){
         return Ext.DomQuery.pseudos[name](cs, value);\r
     };\r
 \r
-    
-    
-    
+    // This is for IE MSXML which does not support expandos.\r
+    // IE runs the same speed using setAttribute, however FF slows way down\r
+    // and Safari completely fails so they need to continue to use expandos.\r
     var isIE = window.ActiveXObject ? true : false;\r
 \r
-    
-    
+    // this eval is stop the compressor from\r
+    // renaming the variable to something shorter\r
     eval("var batch = 30803;");\r
 \r
     var key = 30803;\r
@@ -796,13 +814,13 @@ Ext.DomQuery = function(){
             var tklen = tk.length;\r
             var mm;\r
 \r
-            
+            // accept leading mode switch\r
             var lmode = q.match(modeRe);\r
             if(lmode && lmode[1]){\r
                 fn[fn.length] = 'mode="'+lmode[1].replace(trimRe, "")+'";';\r
                 q = q.replace(lmode[1], "");\r
             }\r
-            
+            // strip leading slashes\r
             while(path.substr(0, 1)=="/"){\r
                 path = path.substr(1);\r
             }\r
@@ -845,7 +863,7 @@ Ext.DomQuery = function(){
                             break;\r
                         }\r
                     }\r
-                    
+                    // prevent infinite loop on bad selector\r
                     if(!matched){\r
                         throw 'Error parsing selector, parsing failed at "' + q + '"';\r
                     }\r
@@ -1166,29509 +1184,33081 @@ Ext.DomQuery = function(){
 \r
 \r
 Ext.query = Ext.DomQuery.select;\r
-
-
-Ext.util.Observable = function(){
-    
-    if(this.listeners){
-        this.on(this.listeners);
-        delete this.listeners;
-    }
-};
-Ext.util.Observable.prototype = {
-    
-    fireEvent : function(){
-        if(this.eventsSuspended !== true){
-            var ce = this.events[arguments[0].toLowerCase()];
-            if(typeof ce == "object"){
-                return ce.fire.apply(ce, Array.prototype.slice.call(arguments, 1));
-            }
-        }
-        return true;
-    },
-
-        filterOptRe : /^(?:scope|delay|buffer|single)$/,
-
-    
-    addListener : function(eventName, fn, scope, o){
-        if(typeof eventName == "object"){
-            o = eventName;
-            for(var e in o){
-                if(this.filterOptRe.test(e)){
-                    continue;
-                }
-                if(typeof o[e] == "function"){
-                                        this.addListener(e, o[e], o.scope,  o);
-                }else{
-                                        this.addListener(e, o[e].fn, o[e].scope, o[e]);
-                }
-            }
-            return;
-        }
-        o = (!o || typeof o == "boolean") ? {} : o;
-        eventName = eventName.toLowerCase();
-        var ce = this.events[eventName] || true;
-        if(typeof ce == "boolean"){
-            ce = new Ext.util.Event(this, eventName);
-            this.events[eventName] = ce;
-        }
-        ce.addListener(fn, scope, o);
-    },
-
-    
-    removeListener : function(eventName, fn, scope){
-        var ce = this.events[eventName.toLowerCase()];
-        if(typeof ce == "object"){
-            ce.removeListener(fn, scope);
-        }
-    },
-
-    
-    purgeListeners : function(){
-        for(var evt in this.events){
-            if(typeof this.events[evt] == "object"){
-                 this.events[evt].clearListeners();
-            }
-        }
-    },
-
-    
-    relayEvents : function(o, events){
-        var createHandler = function(ename){
-            return function(){
-                return this.fireEvent.apply(this, Ext.combine(ename, Array.prototype.slice.call(arguments, 0)));
-            };
-        };
-        for(var i = 0, len = events.length; i < len; i++){
-            var ename = events[i];
-            if(!this.events[ename]){ this.events[ename] = true; };
-            o.on(ename, createHandler(ename), this);
-        }
-    },
-
-    
-    addEvents : function(o){
-        if(!this.events){
-            this.events = {};
-        }
-        if(typeof o == 'string'){
-            for(var i = 0, a = arguments, v; v = a[i]; i++){
-                if(!this.events[a[i]]){
-                    this.events[a[i]] = true;
-                }
-            }
-        }else{
-            Ext.applyIf(this.events, o);
-        }
-    },
-
-    
-    hasListener : function(eventName){
-        var e = this.events[eventName];
-        return typeof e == "object" && e.listeners.length > 0;
-    },
-
-    
-    suspendEvents : function(){
-        this.eventsSuspended = true;
-    },
-
-    
-    resumeEvents : function(){
-        this.eventsSuspended = false;
-    },
-
-                getMethodEvent : function(method){
-        if(!this.methodEvents){
-            this.methodEvents = {};
-        }
-        var e = this.methodEvents[method];
-        if(!e){
-            e = {};
-            this.methodEvents[method] = e;
-
-            e.originalFn = this[method];
-            e.methodName = method;
-            e.before = [];
-            e.after = [];
-
-
-            var returnValue, v, cancel;
-            var obj = this;
-
-            var makeCall = function(fn, scope, args){
-                if((v = fn.apply(scope || obj, args)) !== undefined){
-                    if(typeof v === 'object'){
-                        if(v.returnValue !== undefined){
-                            returnValue = v.returnValue;
-                        }else{
-                            returnValue = v;
-                        }
-                        if(v.cancel === true){
-                            cancel = true;
-                        }
-                    }else if(v === false){
-                        cancel = true;
-                    }else {
-                        returnValue = v;
-                    }
-                }
-            }
-
-            this[method] = function(){
-                returnValue = v = undefined; cancel = false;
-                var args = Array.prototype.slice.call(arguments, 0);
-                for(var i = 0, len = e.before.length; i < len; i++){
-                    makeCall(e.before[i].fn, e.before[i].scope, args);
-                    if(cancel){
-                        return returnValue;
-                    }
-                }
-
-                if((v = e.originalFn.apply(obj, args)) !== undefined){
-                    returnValue = v;
-                }
-
-                for(var i = 0, len = e.after.length; i < len; i++){
-                    makeCall(e.after[i].fn, e.after[i].scope, args);
-                    if(cancel){
-                        return returnValue;
-                    }
-                }
-                return returnValue;
-            };
-        }
-        return e;
-    },
-
-        beforeMethod : function(method, fn, scope){
-        var e = this.getMethodEvent(method);
-        e.before.push({fn: fn, scope: scope});
-    },
-
-        afterMethod : function(method, fn, scope){
-        var e = this.getMethodEvent(method);
-        e.after.push({fn: fn, scope: scope});
-    },
-
-    removeMethodListener : function(method, fn, scope){
-        var e = this.getMethodEvent(method);
-        for(var i = 0, len = e.before.length; i < len; i++){
-            if(e.before[i].fn == fn && e.before[i].scope == scope){
-                e.before.splice(i, 1);
-                return;
-            }
-        }
-        for(var i = 0, len = e.after.length; i < len; i++){
-            if(e.after[i].fn == fn && e.after[i].scope == scope){
-                e.after.splice(i, 1);
-                return;
-            }
-        }
-    }
-};
-
-Ext.util.Observable.prototype.on = Ext.util.Observable.prototype.addListener;
-
-Ext.util.Observable.prototype.un = Ext.util.Observable.prototype.removeListener;
-
-
-Ext.util.Observable.capture = function(o, fn, scope){
-    o.fireEvent = o.fireEvent.createInterceptor(fn, scope);
-};
-
-
-Ext.util.Observable.releaseCapture = function(o){
-    o.fireEvent = Ext.util.Observable.prototype.fireEvent;
-};
-
-(function(){
-
-    var createBuffered = function(h, o, scope){
-        var task = new Ext.util.DelayedTask();
-        return function(){
-            task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0));
-        };
-    };
-
-    var createSingle = function(h, e, fn, scope){
-        return function(){
-            e.removeListener(fn, scope);
-            return h.apply(scope, arguments);
-        };
-    };
-
-    var createDelayed = function(h, o, scope){
-        return function(){
-            var args = Array.prototype.slice.call(arguments, 0);
-            setTimeout(function(){
-                h.apply(scope, args);
-            }, o.delay || 10);
-        };
-    };
-
-    Ext.util.Event = function(obj, name){
-        this.name = name;
-        this.obj = obj;
-        this.listeners = [];
-    };
-
-    Ext.util.Event.prototype = {
-        addListener : function(fn, scope, options){
-            scope = scope || this.obj;
-            if(!this.isListening(fn, scope)){
-                var l = this.createListener(fn, scope, options);
-                if(!this.firing){
-                    this.listeners.push(l);
-                }else{                     this.listeners = this.listeners.slice(0);
-                    this.listeners.push(l);
-                }
-            }
-        },
-
-        createListener : function(fn, scope, o){
-            o = o || {};
-            scope = scope || this.obj;
-            var l = {fn: fn, scope: scope, options: o};
-            var h = fn;
-            if(o.delay){
-                h = createDelayed(h, o, scope);
-            }
-            if(o.single){
-                h = createSingle(h, this, fn, scope);
-            }
-            if(o.buffer){
-                h = createBuffered(h, o, scope);
-            }
-            l.fireFn = h;
-            return l;
-        },
-
-        findListener : function(fn, scope){
-            scope = scope || this.obj;
-            var ls = this.listeners;
-            for(var i = 0, len = ls.length; i < len; i++){
-                var l = ls[i];
-                if(l.fn == fn && l.scope == scope){
-                    return i;
-                }
-            }
-            return -1;
-        },
-
-        isListening : function(fn, scope){
-            return this.findListener(fn, scope) != -1;
-        },
-
-        removeListener : function(fn, scope){
-            var index;
-            if((index = this.findListener(fn, scope)) != -1){
-                if(!this.firing){
-                    this.listeners.splice(index, 1);
-                }else{
-                    this.listeners = this.listeners.slice(0);
-                    this.listeners.splice(index, 1);
-                }
-                return true;
-            }
-            return false;
-        },
-
-        clearListeners : function(){
-            this.listeners = [];
-        },
-
-        fire : function(){
-            var ls = this.listeners, scope, len = ls.length;
-            if(len > 0){
-                this.firing = true;
-                var args = Array.prototype.slice.call(arguments, 0);
-                for(var i = 0; i < len; i++){
-                    var l = ls[i];
-                    if(l.fireFn.apply(l.scope||this.obj||window, arguments) === false){
-                        this.firing = false;
-                        return false;
-                    }
-                }
-                this.firing = false;
-            }
-            return true;
-        }
-    };
-})();
-
-Ext.EventManager = function(){
-    var docReadyEvent, docReadyProcId, docReadyState = false;
-    var resizeEvent, resizeTask, textEvent, textSize;
-    var E = Ext.lib.Event;
-    var D = Ext.lib.Dom;
-        var xname = 'Ex' + 't';
-
-    var elHash = {};
-
-    var addListener = function(el, ename, fn, wrap, scope){
-        var id = Ext.id(el);
-        if(!elHash[id]){
-            elHash[id] = {};
-        }
-        var es = elHash[id];
-        if(!es[ename]){
-            es[ename] = [];
-        }
-        var ls = es[ename];
-        ls.push({
-            id: id,
-            ename: ename,
-            fn: fn,
-            wrap: wrap,
-            scope: scope
-        });
-
-         E.on(el, ename, wrap);
-
-        if(ename == "mousewheel" && el.addEventListener){             el.addEventListener("DOMMouseScroll", wrap, false);
-            E.on(window, 'unload', function(){
-                el.removeEventListener("DOMMouseScroll", wrap, false);
-            });
-        }
-        if(ename == "mousedown" && el == document){             Ext.EventManager.stoppedMouseDownEvent.addListener(wrap);
-        }
-    }
-
-    var removeListener = function(el, ename, fn, scope){
-        el = Ext.getDom(el);
-        var id = Ext.id(el), es = elHash[id], wrap;
-        if(es){
-            var ls = es[ename], l;
-            if(ls){
-                for(var i = 0, len = ls.length; i < len; i++){
-                    l = ls[i];
-                    if(l.fn == fn && (!scope || l.scope == scope)){
-                        wrap = l.wrap;
-                        E.un(el, ename, wrap);
-                        ls.splice(i, 1);
-                        break;
-                    }
-                }
-            }
-        }
-        if(ename == "mousewheel" && el.addEventListener && wrap){
-            el.removeEventListener("DOMMouseScroll", wrap, false);
-        }
-        if(ename == "mousedown" && el == document && wrap){             Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
-        }
-    }
-
-    var removeAll = function(el){
-        el = Ext.getDom(el);
-        var id = Ext.id(el), es = elHash[id], ls;
-        if(es){
-            for(var ename in es){
-                if(es.hasOwnProperty(ename)){
-                    ls = es[ename];
-                    for(var i = 0, len = ls.length; i < len; i++){
-                        E.un(el, ename, ls[i].wrap);
-                        ls[i] = null;
-                    }
-                }
-                es[ename] = null;
-            }
-            delete elHash[id];
-        }
-    }
-
-     var fireDocReady = function(){
-        if(!docReadyState){
-            docReadyState = Ext.isReady = true;
-            if(Ext.isGecko || Ext.isOpera) {
-                document.removeEventListener("DOMContentLoaded", fireDocReady, false);
-            }
-        }
-        if(docReadyProcId){
-            clearInterval(docReadyProcId);
-            docReadyProcId = null;
-        }
-        if(docReadyEvent){
-            docReadyEvent.fire();
-            docReadyEvent.clearListeners();
-       }
-    };
-
-    var initDocReady = function(){
-        docReadyEvent = new Ext.util.Event();
-
-        if(Ext.isReady){
-            return;
-        }
-
-                E.on(window, 'load', fireDocReady);
-
-        if(Ext.isGecko || Ext.isOpera) {
-            document.addEventListener('DOMContentLoaded', fireDocReady, false);
-        }
-        else if(Ext.isIE){
-            docReadyProcId = setInterval(function(){
-                try{
-                                        Ext.isReady || (document.documentElement.doScroll('left'));
-                }catch(e){
-                    return;
-                }
-                fireDocReady();              }, 5);
-
-                       document.onreadystatechange = function(){
-                               if(document.readyState == 'complete'){
-                                       document.onreadystatechange = null;
-                                       fireDocReady();
-                               }
-            };
-        }
-        else if(Ext.isSafari){
-            docReadyProcId = setInterval(function(){
-                var rs = document.readyState;
-                if(rs == 'complete') {
-                    fireDocReady();
-                 }
-            }, 10);
-        }
-    };
-
-    var createBuffered = function(h, o){
-        var task = new Ext.util.DelayedTask(h);
-        return function(e){
-                        e = new Ext.EventObjectImpl(e);
-            task.delay(o.buffer, h, null, [e]);
-        };
-    };
-
-    var createSingle = function(h, el, ename, fn, scope){
-        return function(e){
-            Ext.EventManager.removeListener(el, ename, fn, scope);
-            h(e);
-        };
-    };
-
-    var createDelayed = function(h, o){
-        return function(e){
-                        e = new Ext.EventObjectImpl(e);
-            setTimeout(function(){
-                h(e);
-            }, o.delay || 10);
-        };
-    };
-
-    var listen = function(element, ename, opt, fn, scope){
-        var o = (!opt || typeof opt == "boolean") ? {} : opt;
-        fn = fn || o.fn; scope = scope || o.scope;
-        var el = Ext.getDom(element);
-        if(!el){
-            throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.';
-        }
-        var h = function(e){
-                        if(!window[xname]){
-                return;
-            }
-            e = Ext.EventObject.setEvent(e);
-            var t;
-            if(o.delegate){
-                t = e.getTarget(o.delegate, el);
-                if(!t){
-                    return;
-                }
-            }else{
-                t = e.target;
-            }
-            if(o.stopEvent === true){
-                e.stopEvent();
-            }
-            if(o.preventDefault === true){
-               e.preventDefault();
-            }
-            if(o.stopPropagation === true){
-                e.stopPropagation();
-            }
-
-            if(o.normalized === false){
-                e = e.browserEvent;
-            }
-
-            fn.call(scope || el, e, t, o);
-        };
-        if(o.delay){
-            h = createDelayed(h, o);
-        }
-        if(o.single){
-            h = createSingle(h, el, ename, fn, scope);
-        }
-        if(o.buffer){
-            h = createBuffered(h, o);
-        }
-
-        addListener(el, ename, fn, h, scope);
-        return h;
-    };
-
-    var propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
-    var pub = {
-
-    
-        addListener : function(element, eventName, fn, scope, options){
-            if(typeof eventName == "object"){
-                var o = eventName;
-                for(var e in o){
-                    if(propRe.test(e)){
-                        continue;
-                    }
-                    if(typeof o[e] == "function"){
-                                                listen(element, e, o, o[e], o.scope);
-                    }else{
-                                                listen(element, e, o[e]);
-                    }
-                }
-                return;
-            }
-            return listen(element, eventName, options, fn, scope);
-        },
-
-        
-        removeListener : function(element, eventName, fn, scope){
-            return removeListener(element, eventName, fn, scope);
-        },
-
-        
-        removeAll : function(element){
-            return removeAll(element);
-        },
-
-        
-         onDocumentReady : function(fn, scope, options){
-                       if(!docReadyEvent){
-                initDocReady();
-                       }
-                       if(docReadyState || Ext.isReady){                               options || (options = {});
-                               fn.defer(options.delay||0, scope);
-                       }else{
-                               docReadyEvent.addListener(fn, scope, options);
-                       }
-        },
-
-        
-        onWindowResize : function(fn, scope, options){
-            if(!resizeEvent){
-                resizeEvent = new Ext.util.Event();
-                resizeTask = new Ext.util.DelayedTask(function(){
-                    resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
-                });
-                E.on(window, "resize", this.fireWindowResize, this);
-            }
-            resizeEvent.addListener(fn, scope, options);
-        },
-
-                fireWindowResize : function(){
-            if(resizeEvent){
-                if((Ext.isIE||Ext.isAir) && resizeTask){
-                    resizeTask.delay(50);
-                }else{
-                    resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
-                }
-            }
-        },
-
-        
-        onTextResize : function(fn, scope, options){
-            if(!textEvent){
-                textEvent = new Ext.util.Event();
-                var textEl = new Ext.Element(document.createElement('div'));
-                textEl.dom.className = 'x-text-resize';
-                textEl.dom.innerHTML = 'X';
-                textEl.appendTo(document.body);
-                textSize = textEl.dom.offsetHeight;
-                setInterval(function(){
-                    if(textEl.dom.offsetHeight != textSize){
-                        textEvent.fire(textSize, textSize = textEl.dom.offsetHeight);
-                    }
-                }, this.textResizeInterval);
-            }
-            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());
-            }
-        },
-        
-        ieDeferSrc : false,
-        
-        textResizeInterval : 50
-    };
-     
-    pub.on = pub.addListener;
-    
-    pub.un = pub.removeListener;
-
-    pub.stoppedMouseDownEvent = new Ext.util.Event();
-    return pub;
-}();
-
-Ext.onReady = Ext.EventManager.onDocumentReady;
-
-
-(function(){
-    var initExtCss = function(){
-                var bd = document.body || document.getElementsByTagName('body')[0];
-        if(!bd){ return false; }
-        var cls = [' ',
-                Ext.isIE ? "ext-ie " + (Ext.isIE6 ? 'ext-ie6' : 'ext-ie7')
-                : Ext.isGecko ? "ext-gecko " + (Ext.isGecko2 ? 'ext-gecko2' : 'ext-gecko3')
-                : Ext.isOpera ? "ext-opera"
-                : Ext.isSafari ? "ext-safari" : ""];
-
-        if(Ext.isMac){
-            cls.push("ext-mac");
-        }
-        if(Ext.isLinux){
-            cls.push("ext-linux");
-        }
-        if(Ext.isBorderBox){
-            cls.push('ext-border-box');
-        }
-        if(Ext.isStrict){             var p = bd.parentNode;
-            if(p){
-                p.className += ' ext-strict';
-            }
-        }
-        bd.className += cls.join(' ');
-        return true;
-    }
-
-    if(!initExtCss()){
-        Ext.onReady(initExtCss);
-    }
-})();
-
-
-Ext.EventObject = function(){
-
-    var E = Ext.lib.Event;
-
-        var safariKeys = {
-        3 : 13,         63234 : 37,         63235 : 39,         63232 : 38,         63233 : 40,         63276 : 33,         63277 : 34,         63272 : 46,         63273 : 36,         63275 : 35      };
-
-        var btnMap = Ext.isIE ? {1:0,4:1,2:2} :
-                (Ext.isSafari ? {1:0,2:1,3:2} : {0:0,1:1,2:2});
-
-    Ext.EventObjectImpl = function(e){
-        if(e){
-            this.setEvent(e.browserEvent || e);
-        }
-    };
-
-    Ext.EventObjectImpl.prototype = {
-        
-        browserEvent : null,
-        
-        button : -1,
-        
-        shiftKey : false,
-        
-        ctrlKey : false,
-        
-        altKey : false,
-
-        
-        BACKSPACE: 8,
-        
-        TAB: 9,
-        
-        NUM_CENTER: 12,
-        
-        ENTER: 13,
-        
-        RETURN: 13,
-        
-        SHIFT: 16,
-        
-        CTRL: 17,
-        CONTROL : 17,         
-        ALT: 18,
-        
-        PAUSE: 19,
-        
-        CAPS_LOCK: 20,
-        
-        ESC: 27,
-        
-        SPACE: 32,
-        
-        PAGE_UP: 33,
-        PAGEUP : 33,         
-        PAGE_DOWN: 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,
-
-           
-        setEvent : function(e){
-            if(e == this || (e && e.browserEvent)){                 return e;
-            }
-            this.browserEvent = e;
-            if(e){
-                                this.button = e.button ? btnMap[e.button] : (e.which ? e.which-1 : -1);
-                if(e.type == 'click' && this.button == -1){
-                    this.button = 0;
-                }
-                this.type = e.type;
-                this.shiftKey = e.shiftKey;
-                                this.ctrlKey = e.ctrlKey || e.metaKey;
-                this.altKey = e.altKey;
-                                this.keyCode = e.keyCode;
-                this.charCode = e.charCode;
-                                this.target = E.getTarget(e);
-                                this.xy = E.getXY(e);
-            }else{
-                this.button = -1;
-                this.shiftKey = false;
-                this.ctrlKey = false;
-                this.altKey = false;
-                this.keyCode = 0;
-                this.charCode = 0;
-                this.target = null;
-                this.xy = [0, 0];
-            }
-            return this;
-        },
-
-        
-        stopEvent : function(){
-            if(this.browserEvent){
-                if(this.browserEvent.type == 'mousedown'){
-                    Ext.EventManager.stoppedMouseDownEvent.fire(this);
-                }
-                E.stopEvent(this.browserEvent);
-            }
-        },
-
-        
-        preventDefault : function(){
-            if(this.browserEvent){
-                E.preventDefault(this.browserEvent);
-            }
-        },
-
-        
-        isNavKeyPress : function(){
-            var k = this.keyCode;
-            k = Ext.isSafari ? (safariKeys[k] || k) : k;
-            return (k >= 33 && k <= 40) || k == this.RETURN || k == this.TAB || k == this.ESC;
-        },
-
-        isSpecialKey : function(){
-            var k = this.keyCode;
-            return (this.type == 'keypress' && this.ctrlKey) || k == 9 || k == 13  || k == 40 || k == 27 ||
-            (k == 16) || (k == 17) ||
-            (k >= 18 && k <= 20) ||
-            (k >= 33 && k <= 35) ||
-            (k >= 36 && k <= 39) ||
-            (k >= 44 && k <= 45);
-        },
-
-        
-        stopPropagation : function(){
-            if(this.browserEvent){
-                if(this.browserEvent.type == 'mousedown'){
-                    Ext.EventManager.stoppedMouseDownEvent.fire(this);
-                }
-                E.stopPropagation(this.browserEvent);
-            }
-        },
-
-        
-        getCharCode : function(){
-            return this.charCode || this.keyCode;
-        },
-
-        
-        getKey : function(){
-            var k = this.keyCode || this.charCode;
-            return Ext.isSafari ? (safariKeys[k] || k) : k;
-        },
-
-        
-        getPageX : function(){
-            return this.xy[0];
-        },
-
-        
-        getPageY : function(){
-            return this.xy[1];
-        },
-
-        
-        getTime : function(){
-            if(this.browserEvent){
-                return E.getTime(this.browserEvent);
-            }
-            return null;
-        },
-
-        
-        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(){
-            if(this.browserEvent){
-                return E.getRelatedTarget(this.browserEvent);
-            }
-            return null;
-        },
-
-        
-        getWheelDelta : function(){
-            var e = this.browserEvent;
-            var delta = 0;
-            if(e.wheelDelta){ 
-                delta = e.wheelDelta/120;
-            }else if(e.detail){ 
-                delta = -e.detail/3;
-            }
-            return delta;
-        },
-
-        
-        hasModifier : function(){
-            return ((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false;
-        },
-
-        
-        within : function(el, related){
-            var t = this[related ? "getRelatedTarget" : "getTarget"]();
-            return t && Ext.fly(el).contains(t);
-        },
-
-        getPoint : function(){
-            return new Ext.lib.Point(this.xy[0], this.xy[1]);
-        }
-    };
-
-    return new Ext.EventObjectImpl();
-}();
-
-(function(){
-var D = Ext.lib.Dom;
-var E = Ext.lib.Event;
-var A = Ext.lib.Anim;
-
-var propCache = {};
-var camelRe = /(-[a-z])/gi;
-var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); };
-var view = document.defaultView;
-
-Ext.Element = function(element, forceNew){
-    var dom = typeof element == "string" ?
-            document.getElementById(element) : element;
-    if(!dom){         return null;
-    }
-    var id = dom.id;
-    if(forceNew !== true && id && Ext.Element.cache[id]){         return Ext.Element.cache[id];
-    }
-
-    
-    this.dom = dom;
-
-    
-    this.id = id || Ext.id(dom);
-};
-
-var El = Ext.Element;
-
-El.prototype = {
-    
-    originalDisplay : "",
-
-    visibilityMode : 1,
-    
-    defaultUnit : "px",
-    
-    setVisibilityMode : function(visMode){
-        this.visibilityMode = visMode;
-        return this;
-    },
-    
-    enableDisplayMode : function(display){
-        this.setVisibilityMode(El.DISPLAY);
-        if(typeof display != "undefined") this.originalDisplay = display;
-        return this;
-    },
-
-    
-    findParent : function(simpleSelector, maxDepth, returnEl){
-        var p = this.dom, b = document.body, depth = 0, dq = Ext.DomQuery, stopEl;
-        maxDepth = maxDepth || 50;
-        if(typeof maxDepth != "number"){
-            stopEl = Ext.getDom(maxDepth);
-            maxDepth = 10;
-        }
-        while(p && p.nodeType == 1 && depth < maxDepth && p != b && p != stopEl){
-            if(dq.is(p, simpleSelector)){
-                return returnEl ? Ext.get(p) : p;
-            }
-            depth++;
-            p = p.parentNode;
-        }
-        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);
-    },
-
-
-
-    
-    is : function(simpleSelector){
-        return Ext.DomQuery.is(this.dom, simpleSelector);
-    },
-
-    
-    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 || {};
-        var anim = Ext.lib.Anim[animType](
-            this.dom, args,
-            (opt.duration || defaultDur) || .35,
-            (opt.easing || defaultEase) || 'easeOut',
-            function(){
-                Ext.callback(cb, this);
-                Ext.callback(opt.callback, opt.scope || this, [this, opt]);
-            },
-            this
-        );
-        opt.anim = anim;
-        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]});
-    },
-
-    
-    clean : function(forceReclean){
-        if(this.isCleaned && forceReclean !== true){
-            return this;
-        }
-        var ns = /\S/;
-        var d = this.dom, n = d.firstChild, ni = -1;
-           while(n){
-               var nx = n.nextSibling;
-               if(n.nodeType == 3 && !ns.test(n.nodeValue)){
-                   d.removeChild(n);
-               }else{
-                   n.nodeIndex = ++ni;
-               }
-               n = nx;
-           }
-           this.isCleaned = true;
-           return this;
-       },
-
-    
-    scrollIntoView : function(container, hscroll){
-        var c = Ext.getDom(container) || Ext.getBody().dom;
-        var el = this.dom;
-
-        var o = this.getOffsetsTo(c),
-            l = o[0] + c.scrollLeft,
-            t = o[1] + c.scrollTop,
-            b = t+el.offsetHeight,
-            r = l+el.offsetWidth;
-
-        var ch = c.clientHeight;
-        var ct = parseInt(c.scrollTop, 10);
-        var cl = parseInt(c.scrollLeft, 10);
-        var cb = ct + ch;
-        var cr = cl + c.clientWidth;
-
-        if(el.offsetHeight > ch || t < ct){
-               c.scrollTop = t;
-        }else if(b > cb){
-            c.scrollTop = b-ch;
-        }
-        c.scrollTop = c.scrollTop; 
-        if(hscroll !== false){
-                       if(el.offsetWidth > c.clientWidth || l < cl){
-                c.scrollLeft = l;
-            }else if(r > cr){
-                c.scrollLeft = r-c.clientWidth;
-            }
-            c.scrollLeft = c.scrollLeft;
-        }
-        return this;
-    },
-
-        scrollChildIntoView : function(child, hscroll){
-        Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll);
-    },
-
-    
-    autoHeight : function(animate, duration, onComplete, easing){
-        var oldHeight = this.getHeight();
-        this.clip();
-        this.setHeight(1);         setTimeout(function(){
-            var height = parseInt(this.dom.scrollHeight, 10);             if(!animate){
-                this.setHeight(height);
-                this.unclip();
-                if(typeof onComplete == "function"){
-                    onComplete();
-                }
-            }else{
-                this.setHeight(oldHeight);                 this.setHeight(height, animate, duration, function(){
-                    this.unclip();
-                    if(typeof onComplete == "function") onComplete();
-                }.createDelegate(this), easing);
-            }
-        }.createDelegate(this), 0);
-        return this;
-    },
-
-    
-    contains : function(el){
-        if(!el){return false;}
-        return D.isAncestor(this.dom, el.dom ? el.dom : el);
-    },
-
-    
-    isVisible : function(deep) {
-        var vis = !(this.getStyle("visibility") == "hidden" || this.getStyle("display") == "none");
-        if(deep !== true || !vis){
-            return vis;
-        }
-        var p = this.dom.parentNode;
-        while(p && p.tagName.toLowerCase() != "body"){
-            if(!Ext.fly(p, '_isVisible').isVisible()){
-                return false;
-            }
-            p = p.parentNode;
-        }
-        return true;
-    },
-
-    
-    select : function(selector, unique){
-        return El.select(selector, unique, this.dom);
-    },
-
-    
-    query : function(selector){
-        return Ext.DomQuery.select(selector, this.dom);
-    },
-
-    
-    child : function(selector, returnDom){
-        var n = Ext.DomQuery.selectNode(selector, this.dom);
-        return returnDom ? n : Ext.get(n);
-    },
-
-    
-    down : function(selector, returnDom){
-        var n = Ext.DomQuery.selectNode(" > " + selector, this.dom);
-        return returnDom ? n : Ext.get(n);
-    },
-
-    
-    initDD : function(group, config, overrides){
-        var dd = new Ext.dd.DD(Ext.id(this.dom), group, config);
-        return Ext.apply(dd, overrides);
-    },
-
-    
-    initDDProxy : function(group, config, overrides){
-        var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config);
-        return Ext.apply(dd, overrides);
-    },
-
-    
-    initDDTarget : function(group, config, overrides){
-        var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config);
-        return Ext.apply(dd, overrides);
-    },
-
-    
-     setVisible : function(visible, animate){
-        if(!animate || !A){
-            if(this.visibilityMode == El.DISPLAY){
-                this.setDisplayed(visible);
-            }else{
-                this.fixDisplay();
-                this.dom.style.visibility = visible ? "visible" : "hidden";
-            }
-        }else{
-                        var dom = this.dom;
-            var visMode = this.visibilityMode;
-            if(visible){
-                this.setOpacity(.01);
-                this.setVisible(true);
-            }
-            this.anim({opacity: { to: (visible?1:0) }},
-                  this.preanim(arguments, 1),
-                  null, .35, 'easeIn', function(){
-                     if(!visible){
-                         if(visMode == El.DISPLAY){
-                             dom.style.display = "none";
-                         }else{
-                             dom.style.visibility = "hidden";
-                         }
-                         Ext.get(dom).setOpacity(1);
-                     }
-                 });
-        }
-        return this;
-    },
-
-    
-    isDisplayed : function() {
-        return this.getStyle("display") != "none";
-    },
-
-    
-    toggle : function(animate){
-        this.setVisible(!this.isVisible(), this.preanim(arguments, 0));
-        return this;
-    },
-
-    
-    setDisplayed : function(value) {
-        if(typeof value == "boolean"){
-           value = value ? this.originalDisplay : "none";
-        }
-        this.setStyle("display", value);
-        return this;
-    },
-
-    
-    focus : function() {
-        try{
-            this.dom.focus();
-        }catch(e){}
-        return this;
-    },
-
-    
-    blur : function() {
-        try{
-            this.dom.blur();
-        }catch(e){}
-        return this;
-    },
-
-    
-    addClass : function(className){
-        if(Ext.isArray(className)){
-            for(var i = 0, len = className.length; i < len; i++) {
-               this.addClass(className[i]);
-            }
-        }else{
-            if(className && !this.hasClass(className)){
-                this.dom.className = this.dom.className + " " + className;
-            }
-        }
-        return this;
-    },
-
-    
-    radioClass : function(className){
-        var siblings = this.dom.parentNode.childNodes;
-        for(var i = 0; i < siblings.length; i++) {
-               var s = siblings[i];
-               if(s.nodeType == 1){
-                   Ext.get(s).removeClass(className);
-               }
-        }
-        this.addClass(className);
-        return this;
-    },
-
-    
-    removeClass : function(className){
-        if(!className || !this.dom.className){
-            return this;
-        }
-        if(Ext.isArray(className)){
-            for(var i = 0, len = className.length; i < len; i++) {
-               this.removeClass(className[i]);
-            }
-        }else{
-            if(this.hasClass(className)){
-                var re = this.classReCache[className];
-                if (!re) {
-                   re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', "g");
-                   this.classReCache[className] = re;
-                }
-                this.dom.className =
-                    this.dom.className.replace(re, " ");
-            }
-        }
-        return this;
-    },
-
-        classReCache: {},
-
-    
-    toggleClass : function(className){
-        if(this.hasClass(className)){
-            this.removeClass(className);
-        }else{
-            this.addClass(className);
-        }
-        return this;
-    },
-
-    
-    hasClass : function(className){
-        return className && (' '+this.dom.className+' ').indexOf(' '+className+' ') != -1;
-    },
-
-    
-    replaceClass : function(oldClassName, newClassName){
-        this.removeClass(oldClassName);
-        this.addClass(newClassName);
-        return this;
-    },
-
-    
-    getStyles : function(){
-        var a = arguments, len = a.length, r = {};
-        for(var i = 0; i < len; i++){
-            r[a[i]] = this.getStyle(a[i]);
-        }
-        return r;
-    },
-
-    
-    getStyle : function(){
-        return view && view.getComputedStyle ?
-            function(prop){
-                var el = this.dom, v, cs, camel;
-                if(prop == 'float'){
-                    prop = "cssFloat";
-                }
-                if(v = el.style[prop]){
-                    return v;
-                }
-                if(cs = view.getComputedStyle(el, "")){
-                    if(!(camel = propCache[prop])){
-                        camel = propCache[prop] = prop.replace(camelRe, camelFn);
-                    }
-                    return cs[camel];
-                }
-                return null;
-            } :
-            function(prop){
-                var el = this.dom, v, cs, camel;
-                if(prop == 'opacity'){
-                    if(typeof el.style.filter == 'string'){
-                        var m = el.style.filter.match(/alpha\(opacity=(.*)\)/i);
-                        if(m){
-                            var fv = parseFloat(m[1]);
-                            if(!isNaN(fv)){
-                                return fv ? fv / 100 : 0;
-                            }
-                        }
-                    }
-                    return 1;
-                }else if(prop == 'float'){
-                    prop = "styleFloat";
-                }
-                if(!(camel = propCache[prop])){
-                    camel = propCache[prop] = prop.replace(camelRe, camelFn);
-                }
-                if(v = el.style[camel]){
-                    return v;
-                }
-                if(cs = el.currentStyle){
-                    return cs[camel];
-                }
-                return null;
-            };
-    }(),
-
-    
-    setStyle : function(prop, value){
-        if(typeof prop == "string"){
-            var camel;
-            if(!(camel = propCache[prop])){
-                camel = propCache[prop] = prop.replace(camelRe, camelFn);
-            }
-            if(camel == 'opacity') {
-                this.setOpacity(value);
-            }else{
-                this.dom.style[camel] = value;
-            }
-        }else{
-            for(var style in prop){
-                if(typeof prop[style] != "function"){
-                   this.setStyle(style, prop[style]);
-                }
-            }
-        }
-        return this;
-    },
-
-    
-    applyStyles : function(style){
-        Ext.DomHelper.applyStyles(this.dom, style);
-        return this;
-    },
-
-    
-    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();
-        var e = Ext.fly(el, '_internal').getXY();
-        return [o[0]-e[0],o[1]-e[1]];
-    },
-
-    
-    setX : function(x, animate){
-        if(!animate || !A){
-            D.setX(this.dom, x);
-        }else{
-            this.setXY([x, this.getY()], this.preanim(arguments, 1));
-        }
-        return this;
-    },
-
-    
-    setY : function(y, animate){
-        if(!animate || !A){
-            D.setY(this.dom, y);
-        }else{
-            this.setXY([this.getX(), y], this.preanim(arguments, 1));
-        }
-        return this;
-    },
-
-    
-    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){
-        if(!animate || !A){
-            D.setXY(this.dom, pos);
-        }else{
-            this.anim({points: {to: pos}}, this.preanim(arguments, 1), 'motion');
-        }
-        return this;
-    },
-
-    
-    setLocation : function(x, y, animate){
-        this.setXY([x, y], this.preanim(arguments, 2));
-        return this;
-    },
-
-    
-    moveTo : function(x, y, animate){
-        this.setXY([x, y], this.preanim(arguments, 2));
-        return this;
-    },
-
-    
-    getRegion : function(){
-        return D.getRegion(this.dom);
-    },
-
-    
-    getHeight : function(contentHeight){
-        var h = this.dom.offsetHeight || 0;
-        h = contentHeight !== true ? h : h-this.getBorderWidth("tb")-this.getPadding("tb");
-        return h < 0 ? 0 : h;
-    },
-
-    
-    getWidth : function(contentWidth){
-        var w = this.dom.offsetWidth || 0;
-        w = contentWidth !== true ? w : w-this.getBorderWidth("lr")-this.getPadding("lr");
-        return w < 0 ? 0 : w;
-    },
-
-    
-    getComputedHeight : function(){
-        var h = Math.max(this.dom.offsetHeight, this.dom.clientHeight);
-        if(!h){
-            h = parseInt(this.getStyle('height'), 10) || 0;
-            if(!this.isBorderBox()){
-                h += this.getFrameWidth('tb');
-            }
-        }
-        return h;
-    },
-
-    
-    getComputedWidth : function(){
-        var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth);
-        if(!w){
-            w = parseInt(this.getStyle('width'), 10) || 0;
-            if(!this.isBorderBox()){
-                w += this.getFrameWidth('lr');
-            }
-        }
-        return w;
-    },
-
-    
-    getSize : function(contentSize){
-        return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)};
-    },
-
-    getStyleSize : function(){
-        var w, h, d = this.dom, s = d.style;
-        if(s.width && s.width != 'auto'){
-            w = parseInt(s.width, 10);
-            if(Ext.isBorderBox){
-               w -= this.getFrameWidth('lr');
-            }
-        }
-        if(s.height && s.height != 'auto'){
-            h = parseInt(s.height, 10);
-            if(Ext.isBorderBox){
-               h -= this.getFrameWidth('tb');
-            }
-        }
-        return {width: w || this.getWidth(true), height: h || this.getHeight(true)};
-
-    },
-
-    
-    getViewSize : function(){
-        var d = this.dom, doc = document, aw = 0, ah = 0;
-        if(d == doc || d == doc.body){
-            return {width : D.getViewWidth(), height: D.getViewHeight()};
-        }else{
-            return {
-                width : d.clientWidth,
-                height: d.clientHeight
-            };
-        }
-    },
-
-    
-    getValue : function(asNumber){
-        return asNumber ? parseInt(this.dom.value, 10) : this.dom.value;
-    },
-
-        adjustWidth : function(width){
-        if(typeof width == "number"){
-            if(this.autoBoxAdjust && !this.isBorderBox()){
-               width -= (this.getBorderWidth("lr") + this.getPadding("lr"));
-            }
-            if(width < 0){
-                width = 0;
-            }
-        }
-        return width;
-    },
-
-        adjustHeight : function(height){
-        if(typeof height == "number"){
-           if(this.autoBoxAdjust && !this.isBorderBox()){
-               height -= (this.getBorderWidth("tb") + this.getPadding("tb"));
-           }
-           if(height < 0){
-               height = 0;
-           }
-        }
-        return height;
-    },
-
-    
-    setWidth : function(width, animate){
-        width = this.adjustWidth(width);
-        if(!animate || !A){
-            this.dom.style.width = this.addUnits(width);
-        }else{
-            this.anim({width: {to: width}}, this.preanim(arguments, 1));
-        }
-        return this;
-    },
-
-    
-     setHeight : function(height, animate){
-        height = this.adjustHeight(height);
-        if(!animate || !A){
-            this.dom.style.height = this.addUnits(height);
-        }else{
-            this.anim({height: {to: height}}, this.preanim(arguments, 1));
-        }
-        return this;
-    },
-
-    
-     setSize : function(width, height, animate){
-        if(typeof width == "object"){             height = width.height; width = width.width;
-        }
-        width = this.adjustWidth(width); height = this.adjustHeight(height);
-        if(!animate || !A){
-            this.dom.style.width = this.addUnits(width);
-            this.dom.style.height = this.addUnits(height);
-        }else{
-            this.anim({width: {to: width}, height: {to: height}}, this.preanim(arguments, 2));
-        }
-        return this;
-    },
-
-    
-    setBounds : function(x, y, width, height, animate){
-        if(!animate || !A){
-            this.setSize(width, height);
-            this.setLocation(x, y);
-        }else{
-            width = this.adjustWidth(width); height = this.adjustHeight(height);
-            this.anim({points: {to: [x, y]}, width: {to: width}, height: {to: height}},
-                          this.preanim(arguments, 4), 'motion');
-        }
-        return this;
-    },
-
-    
-    setRegion : function(region, animate){
-        this.setBounds(region.left, region.top, region.right-region.left, region.bottom-region.top, this.preanim(arguments, 1));
-        return this;
-    },
-
-    
-    addListener : function(eventName, fn, scope, options){
-        Ext.EventManager.on(this.dom,  eventName, fn, scope || this, options);
-    },
-
-    
-    removeListener : function(eventName, fn, scope){
-        Ext.EventManager.removeListener(this.dom,  eventName, fn, scope || this);
-        return this;
-    },
-
-    
-    removeAllListeners : function(){
-        Ext.EventManager.removeAll(this.dom);
-        return this;
-    },
-
-    
-    relayEvent : function(eventName, observable){
-        this.on(eventName, function(e){
-            observable.fireEvent(eventName, e);
-        });
-    },
-
-    
-     setOpacity : function(opacity, animate){
-        if(!animate || !A){
-            var s = this.dom.style;
-            if(Ext.isIE){
-                s.zoom = 1;
-                s.filter = (s.filter || '').replace(/alpha\([^\)]*\)/gi,"") +
-                           (opacity == 1 ? "" : " alpha(opacity=" + opacity * 100 + ")");
-            }else{
-                s.opacity = opacity;
-            }
-        }else{
-            this.anim({opacity: {to: opacity}}, this.preanim(arguments, 1), null, .35, 'easeIn');
-        }
-        return this;
-    },
-
-    
-    getLeft : function(local){
-        if(!local){
-            return this.getX();
-        }else{
-            return parseInt(this.getStyle("left"), 10) || 0;
-        }
-    },
-
-    
-    getRight : function(local){
-        if(!local){
-            return this.getX() + this.getWidth();
-        }else{
-            return (this.getLeft(true) + this.getWidth()) || 0;
-        }
-    },
-
-    
-    getTop : function(local) {
-        if(!local){
-            return this.getY();
-        }else{
-            return parseInt(this.getStyle("top"), 10) || 0;
-        }
-    },
-
-    
-    getBottom : function(local){
-        if(!local){
-            return this.getY() + this.getHeight();
-        }else{
-            return (this.getTop(true) + this.getHeight()) || 0;
-        }
-    },
-
-    
-    position : function(pos, zIndex, x, y){
-        if(!pos){
-           if(this.getStyle('position') == 'static'){
-               this.setStyle('position', 'relative');
-           }
-        }else{
-            this.setStyle("position", pos);
-        }
-        if(zIndex){
-            this.setStyle("z-index", zIndex);
-        }
-        if(x !== undefined && y !== undefined){
-            this.setXY([x, y]);
-        }else if(x !== undefined){
-            this.setX(x);
-        }else if(y !== undefined){
-            this.setY(y);
-        }
-    },
-
-    
-    clearPositioning : function(value){
-        value = value ||'';
-        this.setStyle({
-            "left": value,
-            "right": value,
-            "top": value,
-            "bottom": value,
-            "z-index": "",
-            "position" : "static"
-        });
-        return this;
-    },
-
-    
-    getPositioning : function(){
-        var l = this.getStyle("left");
-        var t = this.getStyle("top");
-        return {
-            "position" : this.getStyle("position"),
-            "left" : l,
-            "right" : l ? "" : this.getStyle("right"),
-            "top" : t,
-            "bottom" : t ? "" : this.getStyle("bottom"),
-            "z-index" : this.getStyle("z-index")
-        };
-    },
-
-    
-    getBorderWidth : function(side){
-        return this.addStyles(side, El.borders);
-    },
-
-    
-    getPadding : function(side){
-        return this.addStyles(side, El.paddings);
-    },
-
-    
-    setPositioning : function(pc){
-        this.applyStyles(pc);
-        if(pc.right == "auto"){
-            this.dom.style.right = "";
-        }
-        if(pc.bottom == "auto"){
-            this.dom.style.bottom = "";
-        }
-        return this;
-    },
-
-        fixDisplay : function(){
-        if(this.getStyle("display") == "none"){
-            this.setStyle("visibility", "hidden");
-            this.setStyle("display", this.originalDisplay);             if(this.getStyle("display") == "none"){                 this.setStyle("display", "block");
-            }
-        }
-    },
-
-       setOverflow : function(v){
-       if(v=='auto' && Ext.isMac && Ext.isGecko2){                     this.dom.style.overflow = 'hidden';
-               (function(){this.dom.style.overflow = 'auto';}).defer(1, this);
-       }else{
-               this.dom.style.overflow = v;
-       }
-       },
-
-    
-     setLeftTop : function(left, top){
-        this.dom.style.left = this.addUnits(left);
-        this.dom.style.top = this.addUnits(top);
-        return this;
-    },
-
-    
-     move : function(direction, distance, animate){
-        var xy = this.getXY();
-        direction = direction.toLowerCase();
-        switch(direction){
-            case "l":
-            case "left":
-                this.moveTo(xy[0]-distance, xy[1], this.preanim(arguments, 2));
-                break;
-           case "r":
-           case "right":
-                this.moveTo(xy[0]+distance, xy[1], this.preanim(arguments, 2));
-                break;
-           case "t":
-           case "top":
-           case "up":
-                this.moveTo(xy[0], xy[1]-distance, this.preanim(arguments, 2));
-                break;
-           case "b":
-           case "bottom":
-           case "down":
-                this.moveTo(xy[0], xy[1]+distance, this.preanim(arguments, 2));
-                break;
-        }
-        return this;
-    },
-
-    
-    clip : function(){
-        if(!this.isClipped){
-           this.isClipped = true;
-           this.originalClip = {
-               "o": this.getStyle("overflow"),
-               "x": this.getStyle("overflow-x"),
-               "y": this.getStyle("overflow-y")
-           };
-           this.setStyle("overflow", "hidden");
-           this.setStyle("overflow-x", "hidden");
-           this.setStyle("overflow-y", "hidden");
-        }
-        return this;
-    },
-
-    
-    unclip : function(){
-        if(this.isClipped){
-            this.isClipped = false;
-            var o = this.originalClip;
-            if(o.o){this.setStyle("overflow", o.o);}
-            if(o.x){this.setStyle("overflow-x", o.x);}
-            if(o.y){this.setStyle("overflow-y", o.y);}
-        }
-        return this;
-    },
-
-
-    
-    getAnchorXY : function(anchor, local, s){
-                
-        var w, h, vp = false;
-        if(!s){
-            var d = this.dom;
-            if(d == document.body || d == document){
-                vp = true;
-                w = D.getViewWidth(); h = D.getViewHeight();
-            }else{
-                w = this.getWidth(); h = this.getHeight();
-            }
-        }else{
-            w = s.width;  h = s.height;
-        }
-        var x = 0, y = 0, r = Math.round;
-        switch((anchor || "tl").toLowerCase()){
-            case "c":
-                x = r(w*.5);
-                y = r(h*.5);
-            break;
-            case "t":
-                x = r(w*.5);
-                y = 0;
-            break;
-            case "l":
-                x = 0;
-                y = r(h*.5);
-            break;
-            case "r":
-                x = w;
-                y = r(h*.5);
-            break;
-            case "b":
-                x = r(w*.5);
-                y = h;
-            break;
-            case "tl":
-                x = 0;
-                y = 0;
-            break;
-            case "bl":
-                x = 0;
-                y = h;
-            break;
-            case "br":
-                x = w;
-                y = h;
-            break;
-            case "tr":
-                x = w;
-                y = 0;
-            break;
-        }
-        if(local === true){
-            return [x, y];
-        }
-        if(vp){
-            var sc = this.getScroll();
-            return [x + sc.left, y + sc.top];
-        }
-                var o = this.getXY();
-        return [x+o[0], y+o[1]];
-    },
-
-    
-    getAlignToXY : function(el, p, o){
-        el = Ext.get(el);
-        if(!el || !el.dom){
-            throw "Element.alignToXY with an element that doesn't exist";
-        }
-        var d = this.dom;
-        var c = false;         var p1 = "", p2 = "";
-        o = o || [0,0];
-
-        if(!p){
-            p = "tl-bl";
-        }else if(p == "?"){
-            p = "tl-bl?";
-        }else if(p.indexOf("-") == -1){
-            p = "tl-" + p;
-        }
-        p = p.toLowerCase();
-        var m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/);
-        if(!m){
-           throw "Element.alignTo with an invalid alignment " + p;
-        }
-        p1 = m[1]; p2 = m[2]; c = !!m[3];
-
-                        var a1 = this.getAnchorXY(p1, true);
-        var a2 = el.getAnchorXY(p2, false);
-
-        var x = a2[0] - a1[0] + o[0];
-        var y = a2[1] - a1[1] + o[1];
-
-        if(c){
-                        var w = this.getWidth(), h = this.getHeight(), r = el.getRegion();
-                        var dw = D.getViewWidth()-5, dh = D.getViewHeight()-5;
-
-                                                var p1y = p1.charAt(0), p1x = p1.charAt(p1.length-1);
-           var p2y = p2.charAt(0), p2x = p2.charAt(p2.length-1);
-           var swapY = ((p1y=="t" && p2y=="b") || (p1y=="b" && p2y=="t"));
-           var swapX = ((p1x=="r" && p2x=="l") || (p1x=="l" && p2x=="r"));
-
-           var doc = document;
-           var scrollX = (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0)+5;
-           var scrollY = (doc.documentElement.scrollTop || doc.body.scrollTop || 0)+5;
-
-           if((x+w) > dw + scrollX){
-                x = swapX ? r.left-w : dw+scrollX-w;
-            }
-           if(x < scrollX){
-               x = swapX ? r.right : scrollX;
-           }
-           if((y+h) > dh + scrollY){
-                y = swapY ? r.top-h : dh+scrollY-h;
-            }
-           if (y < scrollY){
-               y = swapY ? r.bottom : scrollY;
-           }
-        }
-        return [x,y];
-    },
-
-        getConstrainToXY : function(){
-        var os = {top:0, left:0, bottom:0, right: 0};
-
-        return function(el, local, offsets, proposedXY){
-            el = Ext.get(el);
-            offsets = offsets ? Ext.applyIf(offsets, os) : os;
-
-            var vw, vh, vx = 0, vy = 0;
-            if(el.dom == document.body || el.dom == document){
-                vw = Ext.lib.Dom.getViewWidth();
-                vh = Ext.lib.Dom.getViewHeight();
-            }else{
-                vw = el.dom.clientWidth;
-                vh = el.dom.clientHeight;
-                if(!local){
-                    var vxy = el.getXY();
-                    vx = vxy[0];
-                    vy = vxy[1];
-                }
-            }
-
-            var s = el.getScroll();
-
-            vx += offsets.left + s.left;
-            vy += offsets.top + s.top;
-
-            vw -= offsets.right;
-            vh -= offsets.bottom;
-
-            var vr = vx+vw;
-            var vb = vy+vh;
-
-            var xy = proposedXY || (!local ? this.getXY() : [this.getLeft(true), this.getTop(true)]);
-            var x = xy[0], y = xy[1];
-            var w = this.dom.offsetWidth, h = this.dom.offsetHeight;
-
-                        var moved = false;
-
-                        if((x + w) > vr){
-                x = vr - w;
-                moved = true;
-            }
-            if((y + h) > vb){
-                y = vb - h;
-                moved = true;
-            }
-                        if(x < vx){
-                x = vx;
-                moved = true;
-            }
-            if(y < vy){
-                y = vy;
-                moved = true;
-            }
-            return moved ? [x, y] : false;
-        };
-    }(),
-
-        adjustForConstraints : function(xy, parent, offsets){
-        return this.getConstrainToXY(parent || document, false, offsets, xy) ||  xy;
-    },
-
-    
-    alignTo : function(element, position, offsets, animate){
-        var xy = this.getAlignToXY(element, position, offsets);
-        this.setXY(xy, this.preanim(arguments, 3));
-        return this;
-    },
-
-    
-    anchorTo : function(el, alignment, offsets, animate, monitorScroll, callback){
-        var action = function(){
-            this.alignTo(el, alignment, offsets, animate);
-            Ext.callback(callback, this);
-        };
-        Ext.EventManager.onWindowResize(action, this);
-        var tm = typeof monitorScroll;
-        if(tm != 'undefined'){
-            Ext.EventManager.on(window, 'scroll', action, this,
-                {buffer: tm == 'number' ? monitorScroll : 50});
-        }
-        action.call(this);         return this;
-    },
-    
-    clearOpacity : function(){
-        if (window.ActiveXObject) {
-            if(typeof this.dom.style.filter == 'string' && (/alpha/i).test(this.dom.style.filter)){
-                this.dom.style.filter = "";
-            }
-        } else {
-            this.dom.style.opacity = "";
-            this.dom.style["-moz-opacity"] = "";
-            this.dom.style["-khtml-opacity"] = "";
-        }
-        return this;
-    },
-
-    
-    hide : function(animate){
-        this.setVisible(false, this.preanim(arguments, 0));
-        return this;
-    },
-
-    
-    show : function(animate){
-        this.setVisible(true, this.preanim(arguments, 0));
-        return this;
-    },
-
-    
-    addUnits : function(size){
-        return Ext.Element.addUnits(size, this.defaultUnit);
-    },
-
-    
-    update : function(html, loadScripts, callback){
-        if(typeof html == "undefined"){
-            html = "";
-        }
-        if(loadScripts !== true){
-            this.dom.innerHTML = html;
-            if(typeof callback == "function"){
-                callback();
-            }
-            return this;
-        }
-        var id = Ext.id();
-        var dom = this.dom;
-
-        html += '<span id="' + id + '"></span>';
-
-        E.onAvailable(id, function(){
-            var hd = document.getElementsByTagName("head")[0];
-            var re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;
-            var srcRe = /\ssrc=([\'\"])(.*?)\1/i;
-            var typeRe = /\stype=([\'\"])(.*?)\1/i;
-
-            var match;
-            while(match = re.exec(html)){
-                var attrs = match[1];
-                var srcMatch = attrs ? attrs.match(srcRe) : false;
-                if(srcMatch && srcMatch[2]){
-                   var s = document.createElement("script");
-                   s.src = srcMatch[2];
-                   var typeMatch = attrs.match(typeRe);
-                   if(typeMatch && typeMatch[2]){
-                       s.type = typeMatch[2];
-                   }
-                   hd.appendChild(s);
-                }else if(match[2] && match[2].length > 0){
-                    if(window.execScript) {
-                       window.execScript(match[2]);
-                    } else {
-                       window.eval(match[2]);
-                    }
-                }
-            }
-            var el = document.getElementById(id);
-            if(el){Ext.removeNode(el);}
-            if(typeof callback == "function"){
-                callback();
-            }
-        });
-        dom.innerHTML = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "");
-        return this;
-    },
-
-    
-    load : function(){
-        var um = this.getUpdater();
-        um.update.apply(um, arguments);
-        return this;
-    },
-
-    
-    getUpdater : function(){
-        if(!this.updateManager){
-            this.updateManager = new Ext.Updater(this);
-        }
-        return this.updateManager;
-    },
-
-    
-    unselectable : function(){
-        this.dom.unselectable = "on";
-        this.swallowEvent("selectstart", true);
-        this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");
-        this.addClass("x-unselectable");
-        return this;
-    },
-
-    
-    getCenterXY : function(){
-        return this.getAlignToXY(document, 'c-c');
-    },
-
-    
-    center : function(centerIn){
-        this.alignTo(centerIn || document, 'c-c');
-        return this;
-    },
-
-    
-    isBorderBox : function(){
-        return noBoxAdjust[this.dom.tagName.toLowerCase()] || Ext.isBorderBox;
-    },
-
-    
-    getBox : function(contentBox, local){
-        var xy;
-        if(!local){
-            xy = this.getXY();
-        }else{
-            var left = parseInt(this.getStyle("left"), 10) || 0;
-            var top = parseInt(this.getStyle("top"), 10) || 0;
-            xy = [left, top];
-        }
-        var el = this.dom, w = el.offsetWidth, h = el.offsetHeight, bx;
-        if(!contentBox){
-            bx = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: w, height: h};
-        }else{
-            var l = this.getBorderWidth("l")+this.getPadding("l");
-            var r = this.getBorderWidth("r")+this.getPadding("r");
-            var t = this.getBorderWidth("t")+this.getPadding("t");
-            var b = this.getBorderWidth("b")+this.getPadding("b");
-            bx = {x: xy[0]+l, y: xy[1]+t, 0: xy[0]+l, 1: xy[1]+t, width: w-(l+r), height: h-(t+b)};
-        }
-        bx.right = bx.x + bx.width;
-        bx.bottom = bx.y + bx.height;
-        return bx;
-    },
-
-    
-    getFrameWidth : function(sides, onlyContentBox){
-        return onlyContentBox && Ext.isBorderBox ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides));
-    },
-
-    
-    setBox : function(box, adjust, animate){
-        var w = box.width, h = box.height;
-        if((adjust && !this.autoBoxAdjust) && !this.isBorderBox()){
-           w -= (this.getBorderWidth("lr") + this.getPadding("lr"));
-           h -= (this.getBorderWidth("tb") + this.getPadding("tb"));
-        }
-        this.setBounds(box.x, box.y, w, h, this.preanim(arguments, 2));
-        return this;
-    },
-
-    
-     repaint : function(){
-        var dom = this.dom;
-        this.addClass("x-repaint");
-        setTimeout(function(){
-            Ext.get(dom).removeClass("x-repaint");
-        }, 1);
-        return this;
-    },
-
-    
-    getMargins : function(side){
-        if(!side){
-            return {
-                top: parseInt(this.getStyle("margin-top"), 10) || 0,
-                left: parseInt(this.getStyle("margin-left"), 10) || 0,
-                bottom: parseInt(this.getStyle("margin-bottom"), 10) || 0,
-                right: parseInt(this.getStyle("margin-right"), 10) || 0
-            };
-        }else{
-            return this.addStyles(side, El.margins);
-         }
-    },
-
-        addStyles : function(sides, styles){
-        var val = 0, v, w;
-        for(var i = 0, len = sides.length; i < len; i++){
-            v = this.getStyle(styles[sides.charAt(i)]);
-            if(v){
-                 w = parseInt(v, 10);
-                 if(w){ val += (w >= 0 ? w : -1 * w); }
-            }
-        }
-        return val;
-    },
-
-    
-    createProxy : function(config, renderTo, matchBox){
-        config = typeof config == "object" ?
-            config : {tag : "div", cls: config};
-
-        var proxy;
-        if(renderTo){
-            proxy = Ext.DomHelper.append(renderTo, config, true);
-        }else {
-            proxy = Ext.DomHelper.insertBefore(this.dom, config, true);
-        }
-        if(matchBox){
-           proxy.setBox(this.getBox());
-        }
-        return proxy;
-    },
-
-    
-    mask : function(msg, msgCls){
-        if(this.getStyle("position") == "static"){
-            this.setStyle("position", "relative");
-        }
-        if(this._maskMsg){
-            this._maskMsg.remove();
-        }
-        if(this._mask){
-            this._mask.remove();
-        }
-
-        this._mask = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask"}, true);
-
-        this.addClass("x-masked");
-        this._mask.setDisplayed(true);
-        if(typeof msg == 'string'){
-            this._maskMsg = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask-msg", cn:{tag:'div'}}, true);
-            var mm = this._maskMsg;
-            mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls : "ext-el-mask-msg";
-            mm.dom.firstChild.innerHTML = msg;
-            mm.setDisplayed(true);
-            mm.center(this);
-        }
-        if(Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && this.getStyle('height') == 'auto'){             this._mask.setSize(this.dom.clientWidth, this.getHeight());
-        }
-        return this._mask;
-    },
-
-    
-    unmask : function(){
-        if(this._mask){
-            if(this._maskMsg){
-                this._maskMsg.remove();
-                delete this._maskMsg;
-            }
-            this._mask.remove();
-            delete this._mask;
-        }
-        this.removeClass("x-masked");
-    },
-
-    
-    isMasked : function(){
-        return this._mask && this._mask.isVisible();
-    },
-
-    
-    createShim : function(){
-        var el = document.createElement('iframe');
-        el.frameBorder = '0';
-        el.className = 'ext-shim';
-        if(Ext.isIE && Ext.isSecure){
-            el.src = Ext.SSL_SECURE_URL;
-        }
-        var shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
-        shim.autoBoxAdjust = false;
-        return shim;
-    },
-
-    
-    remove : function(){
-        Ext.removeNode(this.dom);
-        delete El.cache[this.dom.id];
-    },
-
-    
-    hover : function(overFn, outFn, scope){
-        var preOverFn = function(e){
-            if(!e.within(this, true)){
-                overFn.apply(scope || this, arguments);
-            }
-        };
-        var preOutFn = function(e){
-            if(!e.within(this, true)){
-                outFn.apply(scope || this, arguments);
-            }
-        };
-        this.on("mouseover", preOverFn, this.dom);
-        this.on("mouseout", preOutFn, this.dom);
-        return this;
-    },
-
-    
-    addClassOnOver : function(className){
-        this.hover(
-            function(){
-                Ext.fly(this, '_internal').addClass(className);
-            },
-            function(){
-                Ext.fly(this, '_internal').removeClass(className);
-            }
-        );
-        return this;
-    },
-
-    
-    addClassOnFocus : function(className){
-        this.on("focus", function(){
-            Ext.fly(this, '_internal').addClass(className);
-        }, this.dom);
-        this.on("blur", function(){
-            Ext.fly(this, '_internal').removeClass(className);
-        }, this.dom);
-        return this;
-    },
-    
-    addClassOnClick : function(className){
-        var dom = this.dom;
-        this.on("mousedown", function(){
-            Ext.fly(dom, '_internal').addClass(className);
-            var d = Ext.getDoc();
-            var fn = function(){
-                Ext.fly(dom, '_internal').removeClass(className);
-                d.removeListener("mouseup", fn);
-            };
-            d.on("mouseup", fn);
-        });
-        return this;
-    },
-
-    
-    swallowEvent : function(eventName, preventDefault){
-        var fn = function(e){
-            e.stopPropagation();
-            if(preventDefault){
-                e.preventDefault();
-            }
-        };
-        if(Ext.isArray(eventName)){
-            for(var i = 0, len = eventName.length; i < len; i++){
-                 this.on(eventName[i], fn);
-            }
-            return this;
-        }
-        this.on(eventName, fn);
-        return this;
-    },
-
-    
-    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){
-            if(n.nodeType == 1 && (!selector || Ext.DomQuery.is(n, selector))){
-                return !returnDom ? Ext.get(n) : n;
-            }
-            n = n[dir];
-        }
-        return null;
-    },
-
-    
-    appendChild: function(el){
-        el = Ext.get(el);
-        el.appendTo(this);
-        return this;
-    },
-
-    
-    createChild: function(config, insertBefore, returnDom){
-        config = config || {tag:'div'};
-        if(insertBefore){
-            return Ext.DomHelper.insertBefore(insertBefore, config, returnDom !== true);
-        }
-        return Ext.DomHelper[!this.dom.firstChild ? 'overwrite' : 'append'](this.dom, config,  returnDom !== true);
-    },
-
-    
-    appendTo: function(el){
-        el = Ext.getDom(el);
-        el.appendChild(this.dom);
-        return this;
-    },
-
-    
-    insertBefore: function(el){
-        el = Ext.getDom(el);
-        el.parentNode.insertBefore(this.dom, el);
-        return this;
-    },
-
-    
-    insertAfter: function(el){
-        el = Ext.getDom(el);
-        el.parentNode.insertBefore(this.dom, el.nextSibling);
-        return this;
-    },
-
-    
-    insertFirst: function(el, returnDom){
-        el = el || {};
-        if(typeof el == 'object' && !el.nodeType && !el.dom){             return this.createChild(el, this.dom.firstChild, returnDom);
-        }else{
-            el = Ext.getDom(el);
-            this.dom.insertBefore(el, this.dom.firstChild);
-            return !returnDom ? Ext.get(el) : el;
-        }
-    },
-
-    
-    insertSibling: function(el, where, returnDom){
-        var rt;
-        if(Ext.isArray(el)){
-            for(var i = 0, len = el.length; i < len; i++){
-                rt = this.insertSibling(el[i], where, returnDom);
-            }
-            return rt;
-        }
-        where = where ? where.toLowerCase() : 'before';
-        el = el || {};
-        var refNode = where == 'before' ? this.dom : this.dom.nextSibling;
-
-        if(typeof el == 'object' && !el.nodeType && !el.dom){             if(where == 'after' && !this.dom.nextSibling){
-                rt = Ext.DomHelper.append(this.dom.parentNode, el, !returnDom);
-            }else{
-                rt = Ext.DomHelper[where == 'after' ? 'insertAfter' : 'insertBefore'](this.dom, el, !returnDom);
-            }
-
-        }else{
-            rt = this.dom.parentNode.insertBefore(Ext.getDom(el), refNode);
-            if(!returnDom){
-                rt = Ext.get(rt);
-            }
-        }
-        return rt;
-    },
-
-    
-    wrap: function(config, returnDom){
-        if(!config){
-            config = {tag: "div"};
-        }
-        var newEl = Ext.DomHelper.insertBefore(this.dom, config, !returnDom);
-        newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom);
-        return newEl;
-    },
-
-    
-    replace: function(el){
-        el = Ext.get(el);
-        this.insertBefore(el);
-        el.remove();
-        return this;
-    },
-
-    
-    replaceWith: function(el){
-        if(typeof el == 'object' && !el.nodeType && !el.dom){             el = this.insertSibling(el, 'before');
-        }else{
-            el = Ext.getDom(el);
-            this.dom.parentNode.insertBefore(el, this.dom);
-        }
-        El.uncache(this.id);
-        this.dom.parentNode.removeChild(this.dom);
-        this.dom = el;
-        this.id = Ext.id(el);
-        El.cache[this.id] = this;
-        return this;
-    },
-
-    
-    insertHtml : function(where, html, returnEl){
-        var el = Ext.DomHelper.insertHtml(where, this.dom, html);
-        return returnEl ? Ext.get(el) : el;
-    },
-
-    
-    set : function(o, useSet){
-        var el = this.dom;
-        useSet = typeof useSet == 'undefined' ? (el.setAttribute ? true : false) : useSet;
-        for(var attr in o){
-            if(attr == "style" || typeof o[attr] == "function") continue;
-            if(attr=="cls"){
-                el.className = o["cls"];
-            }else if(o.hasOwnProperty(attr)){
-                if(useSet) el.setAttribute(attr, o[attr]);
-                else el[attr] = o[attr];
-            }
-        }
-        if(o.style){
-            Ext.DomHelper.applyStyles(el, o.style);
-        }
-        return this;
-    },
-
-    
-    addKeyListener : function(key, fn, scope){
-        var config;
-        if(typeof key != "object" || Ext.isArray(key)){
-            config = {
-                key: key,
-                fn: fn,
-                scope: scope
-            };
-        }else{
-            config = {
-                key : key.key,
-                shift : key.shift,
-                ctrl : key.ctrl,
-                alt : key.alt,
-                fn: fn,
-                scope: scope
-            };
-        }
-        return new Ext.KeyMap(this, config);
-    },
-
-    
-    addKeyMap : function(config){
-        return new Ext.KeyMap(this, config);
-    },
-
-    
-     isScrollable : function(){
-        var dom = this.dom;
-        return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;
-    },
-
-    
-    scrollTo : function(side, value, animate){
-        var prop = side.toLowerCase() == "left" ? "scrollLeft" : "scrollTop";
-        if(!animate || !A){
-            this.dom[prop] = value;
-        }else{
-            var to = prop == "scrollLeft" ? [value, this.dom.scrollTop] : [this.dom.scrollLeft, value];
-            this.anim({scroll: {"to": to}}, this.preanim(arguments, 2), 'scroll');
-        }
-        return this;
-    },
-
-    
-     scroll : function(direction, distance, animate){
-         if(!this.isScrollable()){
-             return;
-         }
-         var el = this.dom;
-         var l = el.scrollLeft, t = el.scrollTop;
-         var w = el.scrollWidth, h = el.scrollHeight;
-         var cw = el.clientWidth, ch = el.clientHeight;
-         direction = direction.toLowerCase();
-         var scrolled = false;
-         var a = this.preanim(arguments, 2);
-         switch(direction){
-             case "l":
-             case "left":
-                 if(w - l > cw){
-                     var v = Math.min(l + distance, w-cw);
-                     this.scrollTo("left", v, a);
-                     scrolled = true;
-                 }
-                 break;
-            case "r":
-            case "right":
-                 if(l > 0){
-                     var v = Math.max(l - distance, 0);
-                     this.scrollTo("left", v, a);
-                     scrolled = true;
-                 }
-                 break;
-            case "t":
-            case "top":
-            case "up":
-                 if(t > 0){
-                     var v = Math.max(t - distance, 0);
-                     this.scrollTo("top", v, a);
-                     scrolled = true;
-                 }
-                 break;
-            case "b":
-            case "bottom":
-            case "down":
-                 if(h - t > ch){
-                     var v = Math.min(t + distance, h-ch);
-                     this.scrollTo("top", v, a);
-                     scrolled = true;
-                 }
-                 break;
-         }
-         return scrolled;
-    },
-
-    
-    translatePoints : function(x, y){
-        if(typeof x == 'object' || Ext.isArray(x)){
-            y = x[1]; x = x[0];
-        }
-        var p = this.getStyle('position');
-        var o = this.getXY();
-
-        var l = parseInt(this.getStyle('left'), 10);
-        var t = parseInt(this.getStyle('top'), 10);
-
-        if(isNaN(l)){
-            l = (p == "relative") ? 0 : this.dom.offsetLeft;
-        }
-        if(isNaN(t)){
-            t = (p == "relative") ? 0 : this.dom.offsetTop;
-        }
-
-        return {left: (x - o[0] + l), top: (y - o[1] + t)};
-    },
-
-    
-    getScroll : function(){
-        var d = this.dom, doc = document;
-        if(d == doc || d == doc.body){
-            var l, t;
-            if(Ext.isIE && Ext.isStrict){
-                l = doc.documentElement.scrollLeft || (doc.body.scrollLeft || 0);
-                t = doc.documentElement.scrollTop || (doc.body.scrollTop || 0);
-            }else{
-                l = window.pageXOffset || (doc.body.scrollLeft || 0);
-                t = window.pageYOffset || (doc.body.scrollTop || 0);
-            }
-            return {left: l, top: t};
-        }else{
-            return {left: d.scrollLeft, top: d.scrollTop};
-        }
-    },
-
-    
-    getColor : function(attr, defaultValue, prefix){
-        var v = this.getStyle(attr);
-        if(!v || v == "transparent" || v == "inherit") {
-            return defaultValue;
-        }
-        var color = typeof prefix == "undefined" ? "#" : prefix;
-        if(v.substr(0, 4) == "rgb("){
-            var rvs = v.slice(4, v.length -1).split(",");
-            for(var i = 0; i < 3; i++){
-                var h = parseInt(rvs[i]);
-                var s = h.toString(16);
-                if(h < 16){
-                    s = "0" + s;
-                }
-                color += s;
-            }
-        } else {
-            if(v.substr(0, 1) == "#"){
-                if(v.length == 4) {
-                    for(var i = 1; i < 4; i++){
-                        var c = v.charAt(i);
-                        color +=  c + c;
-                    }
-                }else if(v.length == 7){
-                    color += v.substr(1);
-                }
-            }
-        }
-        return(color.length > 5 ? color.toLowerCase() : defaultValue);
-    },
-
-    
-    boxWrap : function(cls){
-        cls = cls || 'x-box';
-        var el = Ext.get(this.insertHtml('beforeBegin', String.format('<div class="{0}">'+El.boxMarkup+'</div>', cls)));
-        el.child('.'+cls+'-mc').dom.appendChild(this.dom);
-        return el;
-    },
-
-    
-    getAttributeNS : Ext.isIE ? function(ns, name){
-        var d = this.dom;
-        var type = typeof d[ns+":"+name];
-        if(type != 'undefined' && type != 'unknown'){
-            return d[ns+":"+name];
-        }
-        return d[name];
-    } : function(ns, name){
-        var d = this.dom;
-        return d.getAttributeNS(ns, name) || d.getAttribute(ns+":"+name) || d.getAttribute(name) || d[name];
-    },
-
-    
-    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);
-    }
-};
-
-var ep = El.prototype;
-
-
-ep.on = ep.addListener;
-    ep.mon = ep.addListener;
-
-ep.getUpdateManager = ep.getUpdater;
-
-
-ep.un = ep.removeListener;
-
-
-ep.autoBoxAdjust = true;
-
-El.unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;
-
-El.addUnits = function(v, defaultUnit){
-    if(v === "" || v == "auto"){
-        return v;
-    }
-    if(v === undefined){
-        return '';
-    }
-    if(typeof v == "number" || !El.unitPattern.test(v)){
-        return v + (defaultUnit || 'px');
-    }
-    return v;
-};
-
-El.boxMarkup = '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';
-
-El.VISIBILITY = 1;
-
-El.DISPLAY = 2;
-
-El.borders = {l: "border-left-width", r: "border-right-width", t: "border-top-width", b: "border-bottom-width"};
-El.paddings = {l: "padding-left", r: "padding-right", t: "padding-top", b: "padding-bottom"};
-El.margins = {l: "margin-left", r: "margin-right", t: "margin-top", b: "margin-bottom"};
-
-
-
-
-El.cache = {};
-
-var docEl;
-
-
-El.get = function(el){
-    var ex, elm, id;
-    if(!el){ return null; }
-    if(typeof el == "string"){         if(!(elm = document.getElementById(el))){
-            return null;
-        }
-        if(ex = El.cache[el]){
-            ex.dom = elm;
-        }else{
-            ex = El.cache[el] = new El(elm);
-        }
-        return ex;
-    }else if(el.tagName){         if(!(id = el.id)){
-            id = Ext.id(el);
-        }
-        if(ex = El.cache[id]){
-            ex.dom = el;
-        }else{
-            ex = El.cache[id] = new El(el);
-        }
-        return ex;
-    }else if(el instanceof El){
-        if(el != docEl){
-            el.dom = document.getElementById(el.id) || el.dom;                                                                       El.cache[el.id] = el;         }
-        return el;
-    }else if(el.isComposite){
-        return el;
-    }else if(Ext.isArray(el)){
-        return El.select(el);
-    }else if(el == document){
-                if(!docEl){
-            var f = function(){};
-            f.prototype = El.prototype;
-            docEl = new f();
-            docEl.dom = document;
-        }
-        return docEl;
-    }
-    return null;
-};
-
-El.uncache = function(el){
-    for(var i = 0, a = arguments, len = a.length; i < len; i++) {
-        if(a[i]){
-            delete El.cache[a[i].id || a[i]];
-        }
-    }
-};
-
-El.garbageCollect = function(){
-    if(!Ext.enableGarbageCollector){
-        clearInterval(El.collectorThread);
-        return;
-    }
-    for(var eid in El.cache){
-        var el = El.cache[eid], d = el.dom;
-                                                                                                                                                if(!d || !d.parentNode || (!d.offsetParent && !document.getElementById(eid))){
-            delete El.cache[eid];
-            if(d && Ext.enableListenerCollection){
-                Ext.EventManager.removeAll(d);
-            }
-        }
-    }
-}
-El.collectorThreadId = setInterval(El.garbageCollect, 30000);
-
-var flyFn = function(){};
-flyFn.prototype = El.prototype;
-var _cls = new flyFn();
-
-El.Flyweight = function(dom){
-    this.dom = dom;
-};
-
-El.Flyweight.prototype = _cls;
-El.Flyweight.prototype.isFlyweight = true;
-
-El._flyweights = {};
-
-El.fly = function(el, named){
-    named = named || '_global';
-    el = Ext.getDom(el);
-    if(!el){
-        return null;
-    }
-    if(!El._flyweights[named]){
-        El._flyweights[named] = new El.Flyweight();
-    }
-    El._flyweights[named].dom = el;
-    return El._flyweights[named];
-};
-
-
-Ext.get = El.get;
-
-Ext.fly = El.fly;
-
-var noBoxAdjust = Ext.isStrict ? {
-    select:1
-} : {
-    input:1, select:1, textarea:1
-};
-if(Ext.isIE || Ext.isGecko){
-    noBoxAdjust['button'] = 1;
-}
-
-
-Ext.EventManager.on(window, 'unload', function(){
-    delete El.cache;
-    delete El._flyweights;
-});
-})();
-
-Ext.enableFx = true;
-
-
-Ext.Fx = {
-       
-    slideIn : function(anchor, o){
-        var el = this.getFxEl();
-        o = o || {};
-
-        el.queueFx(o, function(){
-
-            anchor = anchor || "t";
-
-                        this.fixDisplay();
-
-                        var r = this.getFxRestore();
-            var b = this.getBox();
-                        this.setSize(b);
-
-                        var wrap = this.fxWrap(r.pos, o, "hidden");
-
-            var st = this.dom.style;
-            st.visibility = "visible";
-            st.position = "absolute";
-
-                        var after = function(){
-                el.fxUnwrap(wrap, r.pos, o);
-                st.width = r.width;
-                st.height = r.height;
-                el.afterFx(o);
-            };
-                        var a, pt = {to: [b.x, b.y]}, bw = {to: b.width}, bh = {to: b.height};
-
-            switch(anchor.toLowerCase()){
-                case "t":
-                    wrap.setSize(b.width, 0);
-                    st.left = st.bottom = "0";
-                    a = {height: bh};
-                break;
-                case "l":
-                    wrap.setSize(0, b.height);
-                    st.right = st.top = "0";
-                    a = {width: bw};
-                break;
-                case "r":
-                    wrap.setSize(0, b.height);
-                    wrap.setX(b.right);
-                    st.left = st.top = "0";
-                    a = {width: bw, points: pt};
-                break;
-                case "b":
-                    wrap.setSize(b.width, 0);
-                    wrap.setY(b.bottom);
-                    st.left = st.top = "0";
-                    a = {height: bh, points: pt};
-                break;
-                case "tl":
-                    wrap.setSize(0, 0);
-                    st.right = st.bottom = "0";
-                    a = {width: bw, height: bh};
-                break;
-                case "bl":
-                    wrap.setSize(0, 0);
-                    wrap.setY(b.y+b.height);
-                    st.right = st.top = "0";
-                    a = {width: bw, height: bh, points: pt};
-                break;
-                case "br":
-                    wrap.setSize(0, 0);
-                    wrap.setXY([b.right, b.bottom]);
-                    st.left = st.top = "0";
-                    a = {width: bw, height: bh, points: pt};
-                break;
-                case "tr":
-                    wrap.setSize(0, 0);
-                    wrap.setX(b.x+b.width);
-                    st.left = st.bottom = "0";
-                    a = {width: bw, height: bh, points: pt};
-                break;
-            }
-            this.dom.style.visibility = "visible";
-            wrap.show();
-
-            arguments.callee.anim = wrap.fxanim(a,
-                o,
-                'motion',
-                .5,
-                'easeOut', after);
-        });
-        return this;
-    },
-    
-       
-    slideOut : function(anchor, o){
-        var el = this.getFxEl();
-        o = o || {};
-
-        el.queueFx(o, function(){
-
-            anchor = anchor || "t";
-
-                        var r = this.getFxRestore();
-            
-            var b = this.getBox();
-                        this.setSize(b);
-
-                        var wrap = this.fxWrap(r.pos, o, "visible");
-
-            var st = this.dom.style;
-            st.visibility = "visible";
-            st.position = "absolute";
-
-            wrap.setSize(b);
-
-            var after = function(){
-                if(o.useDisplay){
-                    el.setDisplayed(false);
-                }else{
-                    el.hide();
-                }
-
-                el.fxUnwrap(wrap, r.pos, o);
-
-                st.width = r.width;
-                st.height = r.height;
-
-                el.afterFx(o);
-            };
-
-            var a, zero = {to: 0};
-            switch(anchor.toLowerCase()){
-                case "t":
-                    st.left = st.bottom = "0";
-                    a = {height: zero};
-                break;
-                case "l":
-                    st.right = st.top = "0";
-                    a = {width: zero};
-                break;
-                case "r":
-                    st.left = st.top = "0";
-                    a = {width: zero, points: {to:[b.right, b.y]}};
-                break;
-                case "b":
-                    st.left = st.top = "0";
-                    a = {height: zero, points: {to:[b.x, b.bottom]}};
-                break;
-                case "tl":
-                    st.right = st.bottom = "0";
-                    a = {width: zero, height: zero};
-                break;
-                case "bl":
-                    st.right = st.top = "0";
-                    a = {width: zero, height: zero, points: {to:[b.x, b.bottom]}};
-                break;
-                case "br":
-                    st.left = st.top = "0";
-                    a = {width: zero, height: zero, points: {to:[b.x+b.width, b.bottom]}};
-                break;
-                case "tr":
-                    st.left = st.bottom = "0";
-                    a = {width: zero, height: zero, points: {to:[b.right, b.y]}};
-                break;
-            }
-
-            arguments.callee.anim = wrap.fxanim(a,
-                o,
-                'motion',
-                .5,
-                "easeOut", after);
-        });
-        return this;
-    },
-
-       
-    puff : function(o){
-        var el = this.getFxEl();
-        o = o || {};
-
-        el.queueFx(o, function(){
-            this.clearOpacity();
-            this.show();
-
-                        var r = this.getFxRestore();
-            var st = this.dom.style;
-
-            var after = function(){
-                if(o.useDisplay){
-                    el.setDisplayed(false);
-                }else{
-                    el.hide();
-                }
-
-                el.clearOpacity();
-
-                el.setPositioning(r.pos);
-                st.width = r.width;
-                st.height = r.height;
-                st.fontSize = '';
-                el.afterFx(o);
-            };
-
-            var width = this.getWidth();
-            var height = this.getHeight();
-
-            arguments.callee.anim = this.fxanim({
-                    width : {to: this.adjustWidth(width * 2)},
-                    height : {to: this.adjustHeight(height * 2)},
-                    points : {by: [-(width * .5), -(height * .5)]},
-                    opacity : {to: 0},
-                    fontSize: {to:200, unit: "%"}
-                },
-                o,
-                'motion',
-                .5,
-                "easeOut", after);
-        });
-        return this;
-    },
-
-       
-    switchOff : function(o){
-        var el = this.getFxEl();
-        o = o || {};
-
-        el.queueFx(o, function(){
-            this.clearOpacity();
-            this.clip();
-
-                        var r = this.getFxRestore();
-            var st = this.dom.style;
-
-            var after = function(){
-                if(o.useDisplay){
-                    el.setDisplayed(false);
-                }else{
-                    el.hide();
-                }
-
-                el.clearOpacity();
-                el.setPositioning(r.pos);
-                st.width = r.width;
-                st.height = r.height;
-
-                el.afterFx(o);
-            };
-
-            this.fxanim({opacity:{to:0.3}}, null, null, .1, null, function(){
-                this.clearOpacity();
-                (function(){
-                    this.fxanim({
-                        height:{to:1},
-                        points:{by:[0, this.getHeight() * .5]}
-                    }, o, 'motion', 0.3, 'easeIn', after);
-                }).defer(100, this);
-            });
-        });
-        return this;
-    },
-
-       
-    highlight : function(color, o){
-        var el = this.getFxEl();
-        o = o || {};
-
-        el.queueFx(o, function(){
-            color = color || "ffff9c";
-            var attr = o.attr || "backgroundColor";
-
-            this.clearOpacity();
-            this.show();
-
-            var origColor = this.getColor(attr);
-            var restoreColor = this.dom.style[attr];
-            var endColor = (o.endColor || origColor) || "ffffff";
-
-            var after = function(){
-                el.dom.style[attr] = restoreColor;
-                el.afterFx(o);
-            };
-
-            var a = {};
-            a[attr] = {from: color, to: endColor};
-            arguments.callee.anim = this.fxanim(a,
-                o,
-                'color',
-                1,
-                'easeIn', after);
-        });
-        return this;
-    },
-
-   
-    frame : function(color, count, o){
-        var el = this.getFxEl();
-        o = o || {};
-
-        el.queueFx(o, function(){
-            color = color || "#C3DAF9";
-            if(color.length == 6){
-                color = "#" + color;
-            }
-            count = count || 1;
-            var duration = o.duration || 1;
-            this.show();
-
-            var b = this.getBox();
-            var animFn = function(){
-                var proxy = Ext.getBody().createChild({
-                     style:{
-                        visbility:"hidden",
-                        position:"absolute",
-                        "z-index":"35000",                         border:"0px solid " + color
-                     }
-                  });
-                var scale = Ext.isBorderBox ? 2 : 1;
-                proxy.animate({
-                    top:{from:b.y, to:b.y - 20},
-                    left:{from:b.x, to:b.x - 20},
-                    borderWidth:{from:0, to:10},
-                    opacity:{from:1, to:0},
-                    height:{from:b.height, to:(b.height + (20*scale))},
-                    width:{from:b.width, to:(b.width + (20*scale))}
-                }, duration, function(){
-                    proxy.remove();
-                    if(--count > 0){
-                         animFn();
-                    }else{
-                        el.afterFx(o);
-                    }
-                });
-            };
-            animFn.call(this);
-        });
-        return this;
-    },
-
-   
-    pause : function(seconds){
-        var el = this.getFxEl();
-        var o = {};
-
-        el.queueFx(o, function(){
-            setTimeout(function(){
-                el.afterFx(o);
-            }, seconds * 1000);
-        });
-        return this;
-    },
-
-   
-    fadeIn : function(o){
-        var el = this.getFxEl();
-        o = o || {};
-        el.queueFx(o, function(){
-            this.setOpacity(0);
-            this.fixDisplay();
-            this.dom.style.visibility = 'visible';
-            var to = o.endOpacity || 1;
-            arguments.callee.anim = this.fxanim({opacity:{to:to}},
-                o, null, .5, "easeOut", function(){
-                if(to == 1){
-                    this.clearOpacity();
-                }
-                el.afterFx(o);
-            });
-        });
-        return this;
-    },
-
-   
-    fadeOut : function(o){
-        var el = this.getFxEl();
-        o = o || {};
-        el.queueFx(o, function(){
-            arguments.callee.anim = this.fxanim({opacity:{to:o.endOpacity || 0}},
-                o, null, .5, "easeOut", function(){
-                if(this.visibilityMode == Ext.Element.DISPLAY || o.useDisplay){
-                     this.dom.style.display = "none";
-                }else{
-                     this.dom.style.visibility = "hidden";
-                }
-                this.clearOpacity();
-                el.afterFx(o);
-            });
-        });
-        return this;
-    },
-
-   
-    scale : function(w, h, o){
-        this.shift(Ext.apply({}, o, {
-            width: w,
-            height: h
-        }));
-        return this;
-    },
-
-   
-    shift : function(o){
-        var el = this.getFxEl();
-        o = o || {};
-        el.queueFx(o, function(){
-            var a = {}, w = o.width, h = o.height, x = o.x, y = o.y,  op = o.opacity;
-            if(w !== undefined){
-                a.width = {to: this.adjustWidth(w)};
-            }
-            if(h !== undefined){
-                a.height = {to: this.adjustHeight(h)};
-            }
-            if(o.left !== undefined){
-                a.left = {to: o.left};
-            }
-            if(o.top !== undefined){
-                a.top = {to: o.top};
-            }
-            if(o.right !== undefined){
-                a.right = {to: o.right};
-            }
-            if(o.bottom !== undefined){
-                a.bottom = {to: o.bottom};
-            }
-            if(x !== undefined || y !== undefined){
-                a.points = {to: [
-                    x !== undefined ? x : this.getX(),
-                    y !== undefined ? y : this.getY()
-                ]};
-            }
-            if(op !== undefined){
-                a.opacity = {to: op};
-            }
-            if(o.xy !== undefined){
-                a.points = {to: o.xy};
-            }
-            arguments.callee.anim = this.fxanim(a,
-                o, 'motion', .35, "easeOut", function(){
-                el.afterFx(o);
-            });
-        });
-        return this;
-    },
-
-       
-    ghost : function(anchor, o){
-        var el = this.getFxEl();
-        o = o || {};
-
-        el.queueFx(o, function(){
-            anchor = anchor || "b";
-
-                        var r = this.getFxRestore();
-            var w = this.getWidth(),
-                h = this.getHeight();
-
-            var st = this.dom.style;
-
-            var after = function(){
-                if(o.useDisplay){
-                    el.setDisplayed(false);
-                }else{
-                    el.hide();
-                }
-
-                el.clearOpacity();
-                el.setPositioning(r.pos);
-                st.width = r.width;
-                st.height = r.height;
-
-                el.afterFx(o);
-            };
-
-            var a = {opacity: {to: 0}, points: {}}, pt = a.points;
-            switch(anchor.toLowerCase()){
-                case "t":
-                    pt.by = [0, -h];
-                break;
-                case "l":
-                    pt.by = [-w, 0];
-                break;
-                case "r":
-                    pt.by = [w, 0];
-                break;
-                case "b":
-                    pt.by = [0, h];
-                break;
-                case "tl":
-                    pt.by = [-w, -h];
-                break;
-                case "bl":
-                    pt.by = [-w, h];
-                break;
-                case "br":
-                    pt.by = [w, h];
-                break;
-                case "tr":
-                    pt.by = [w, -h];
-                break;
-            }
-
-            arguments.callee.anim = this.fxanim(a,
-                o,
-                'motion',
-                .5,
-                "easeOut", after);
-        });
-        return this;
-    },
-
-       
-    syncFx : function(){
-        this.fxDefaults = Ext.apply(this.fxDefaults || {}, {
-            block : false,
-            concurrent : true,
-            stopFx : false
-        });
-        return this;
-    },
-
-       
-    sequenceFx : function(){
-        this.fxDefaults = Ext.apply(this.fxDefaults || {}, {
-            block : false,
-            concurrent : false,
-            stopFx : false
-        });
-        return this;
-    },
-
-       
-    nextFx : function(){
-        var ef = this.fxQueue[0];
-        if(ef){
-            ef.call(this);
-        }
-    },
-
-       
-    hasActiveFx : function(){
-        return this.fxQueue && this.fxQueue[0];
-    },
-
-       
-    stopFx : function(){
-        if(this.hasActiveFx()){
-            var cur = this.fxQueue[0];
-            if(cur && cur.anim && cur.anim.isAnimated()){
-                this.fxQueue = [cur];                 cur.anim.stop(true);
-            }
-        }
-        return this;
-    },
-
-       
-    beforeFx : function(o){
-        if(this.hasActiveFx() && !o.concurrent){
-           if(o.stopFx){
-               this.stopFx();
-               return true;
-           }
-           return false;
-        }
-        return true;
-    },
-
-       
-    hasFxBlock : function(){
-        var q = this.fxQueue;
-        return q && q[0] && q[0].block;
-    },
-
-       
-    queueFx : function(o, fn){
-        if(!this.fxQueue){
-            this.fxQueue = [];
-        }
-        if(!this.hasFxBlock()){
-            Ext.applyIf(o, this.fxDefaults);
-            if(!o.concurrent){
-                var run = this.beforeFx(o);
-                fn.block = o.block;
-                this.fxQueue.push(fn);
-                if(run){
-                    this.nextFx();
-                }
-            }else{
-                fn.call(this);
-            }
-        }
-        return this;
-    },
-
-       
-    fxWrap : function(pos, o, vis){
-        var wrap;
-        if(!o.wrap || !(wrap = Ext.get(o.wrap))){
-            var wrapXY;
-            if(o.fixPosition){
-                wrapXY = this.getXY();
-            }
-            var div = document.createElement("div");
-            div.style.visibility = vis;
-            wrap = Ext.get(this.dom.parentNode.insertBefore(div, this.dom));
-            wrap.setPositioning(pos);
-            if(wrap.getStyle("position") == "static"){
-                wrap.position("relative");
-            }
-            this.clearPositioning('auto');
-            wrap.clip();
-            wrap.dom.appendChild(this.dom);
-            if(wrapXY){
-                wrap.setXY(wrapXY);
-            }
-        }
-        return wrap;
-    },
-
-       
-    fxUnwrap : function(wrap, pos, o){
-        this.clearPositioning();
-        this.setPositioning(pos);
-        if(!o.wrap){
-            wrap.dom.parentNode.insertBefore(this.dom, wrap.dom);
-            wrap.remove();
-        }
-    },
-
-       
-    getFxRestore : function(){
-        var st = this.dom.style;
-        return {pos: this.getPositioning(), width: st.width, height : st.height};
-    },
-
-       
-    afterFx : function(o){
-        if(o.afterStyle){
-            this.applyStyles(o.afterStyle);
-        }
-        if(o.afterCls){
-            this.addClass(o.afterCls);
-        }
-        if(o.remove === true){
-            this.remove();
-        }
-        Ext.callback(o.callback, o.scope, [this]);
-        if(!o.concurrent){
-            this.fxQueue.shift();
-            this.nextFx();
-        }
-    },
-
-       
-    getFxEl : function(){         return Ext.get(this.dom);
-    },
-
-       
-    fxanim : function(args, opt, animType, defaultDur, defaultEase, cb){
-        animType = animType || 'run';
-        opt = opt || {};
-        var anim = Ext.lib.Anim[animType](
-            this.dom, args,
-            (opt.duration || defaultDur) || .35,
-            (opt.easing || defaultEase) || 'easeOut',
-            function(){
-                Ext.callback(cb, this);
-            },
-            this
-        );
-        opt.anim = anim;
-        return anim;
-    }
-};
-
-Ext.Fx.resize = Ext.Fx.scale;
-
-Ext.apply(Ext.Element.prototype, Ext.Fx);
-
 \r
-Ext.CompositeElement = function(els){\r
-    this.elements = [];\r
-    this.addElements(els);\r
+\r
+Ext.util.Observable = function(){\r
+    \r
+    if(this.listeners){\r
+        this.on(this.listeners);\r
+        delete this.listeners;\r
+    }\r
 };\r
-Ext.CompositeElement.prototype = {\r
-    isComposite: true,\r
-    addElements : function(els){\r
-        if(!els) return this;\r
-        if(typeof els == "string"){\r
-            els = Ext.Element.selectorFunction(els);\r
-        }\r
-        var yels = this.elements;\r
-        var index = yels.length-1;\r
-        for(var i = 0, len = els.length; i < len; i++) {\r
-               yels[++index] = Ext.get(els[i]);\r
+Ext.util.Observable.prototype = {\r
+    \r
+    fireEvent : function(){\r
+        if(this.eventsSuspended !== true){\r
+            var ce = this.events[arguments[0].toLowerCase()];\r
+            if(typeof ce == "object"){\r
+                return ce.fire.apply(ce, Array.prototype.slice.call(arguments, 1));\r
+            }\r
         }\r
-        return this;\r
+        return true;\r
     },\r
 \r
-    \r
-    fill : function(els){\r
-        this.elements = [];\r
-        this.add(els);\r
-        return this;\r
-    },\r
+    // private\r
+    filterOptRe : /^(?:scope|delay|buffer|single)$/,\r
 \r
     \r
-    filter : function(selector){\r
-        var els = [];\r
-        this.each(function(el){\r
-            if(el.is(selector)){\r
-                els[els.length] = el.dom;\r
+    addListener : function(eventName, fn, scope, o){\r
+        if(typeof eventName == "object"){\r
+            o = eventName;\r
+            for(var e in o){\r
+                if(this.filterOptRe.test(e)){\r
+                    continue;\r
+                }\r
+                if(typeof o[e] == "function"){\r
+                    // shared options\r
+                    this.addListener(e, o[e], o.scope,  o);\r
+                }else{\r
+                    // individual options\r
+                    this.addListener(e, o[e].fn, o[e].scope, o[e]);\r
+                }\r
             }\r
-        });\r
-        this.fill(els);\r
-        return this;\r
-    },\r
-\r
-    invoke : function(fn, args){\r
-        var els = this.elements;\r
-        for(var i = 0, len = els.length; i < len; i++) {\r
-               Ext.Element.prototype[fn].apply(els[i], args);\r
+            return;\r
         }\r
-        return this;\r
+        o = (!o || typeof o == "boolean") ? {} : o;\r
+        eventName = eventName.toLowerCase();\r
+        var ce = this.events[eventName] || true;\r
+        if(typeof ce == "boolean"){\r
+            ce = new Ext.util.Event(this, eventName);\r
+            this.events[eventName] = ce;\r
+        }\r
+        ce.addListener(fn, scope, o);\r
     },\r
+\r
     \r
-    add : function(els){\r
-        if(typeof els == "string"){\r
-            this.addElements(Ext.Element.selectorFunction(els));\r
-        }else if(els.length !== undefined){\r
-            this.addElements(els);\r
-        }else{\r
-            this.addElements([els]);\r
+    removeListener : function(eventName, fn, scope){\r
+        var ce = this.events[eventName.toLowerCase()];\r
+        if(typeof ce == "object"){\r
+            ce.removeListener(fn, scope);\r
         }\r
-        return this;\r
     },\r
+\r
     \r
-    each : function(fn, scope){\r
-        var els = this.elements;\r
-        for(var i = 0, len = els.length; i < len; i++){\r
-            if(fn.call(scope || els[i], els[i], this, i) === false) {\r
-                break;\r
+    purgeListeners : function(){\r
+        for(var evt in this.events){\r
+            if(typeof this.events[evt] == "object"){\r
+                 this.events[evt].clearListeners();\r
             }\r
         }\r
-        return this;\r
     },\r
 \r
     \r
-    item : function(index){\r
-        return this.elements[index] || null;\r
+    relayEvents : function(o, events){\r
+        var createHandler = function(ename){\r
+            return function(){\r
+                return this.fireEvent.apply(this, Ext.combine(ename, Array.prototype.slice.call(arguments, 0)));\r
+            };\r
+        };\r
+        for(var i = 0, len = events.length; i < len; i++){\r
+            var ename = events[i];\r
+            if(!this.events[ename]){ this.events[ename] = true; };\r
+            o.on(ename, createHandler(ename), this);\r
+        }\r
     },\r
 \r
     \r
-    first : function(){\r
-        return this.item(0);\r
+    addEvents : function(o){\r
+        if(!this.events){\r
+            this.events = {};\r
+        }\r
+        if(typeof o == 'string'){\r
+            for(var i = 0, a = arguments, v; v = a[i]; i++){\r
+                if(!this.events[a[i]]){\r
+                    this.events[a[i]] = true;\r
+                }\r
+            }\r
+        }else{\r
+            Ext.applyIf(this.events, o);\r
+        }\r
     },\r
 \r
     \r
-    last : function(){\r
-        return this.item(this.elements.length-1);\r
+    hasListener : function(eventName){\r
+        var e = this.events[eventName];\r
+        return typeof e == "object" && e.listeners.length > 0;\r
     },\r
 \r
     \r
-    getCount : function(){\r
-        return this.elements.length;\r
+    suspendEvents : function(){\r
+        this.eventsSuspended = true;\r
     },\r
 \r
     \r
-    contains : function(el){\r
-        return this.indexOf(el) !== -1;\r
+    resumeEvents : function(){\r
+        this.eventsSuspended = false;\r
     },\r
 \r
-    \r
-    indexOf : function(el){\r
-        return this.elements.indexOf(Ext.get(el));\r
-    },\r
+    // these are considered experimental\r
+    // allows for easier interceptor and sequences, including cancelling and overwriting the return value of the call\r
+    // private\r
+    getMethodEvent : function(method){\r
+        if(!this.methodEvents){\r
+            this.methodEvents = {};\r
+        }\r
+        var e = this.methodEvents[method];\r
+        if(!e){\r
+            e = {};\r
+            this.methodEvents[method] = e;\r
 \r
+            e.originalFn = this[method];\r
+            e.methodName = method;\r
+            e.before = [];\r
+            e.after = [];\r
 \r
-    \r
-    removeElement : function(el, removeDom){\r
-        if(Ext.isArray(el)){\r
-            for(var i = 0, len = el.length; i < len; i++){\r
-                this.removeElement(el[i]);\r
-            }\r
-            return this;\r
-        }\r
-        var index = typeof el == 'number' ? el : this.indexOf(el);\r
-        if(index !== -1 && this.elements[index]){\r
-            if(removeDom){\r
-                var d = this.elements[index];\r
-                if(d.dom){\r
-                    d.remove();\r
-                }else{\r
-                    Ext.removeNode(d);\r
-                }\r
-            }\r
-            this.elements.splice(index, 1);\r
-        }\r
-        return this;\r
-    },\r
 \r
-    \r
-    replaceElement : function(el, replacement, domReplace){\r
-        var index = typeof el == 'number' ? el : this.indexOf(el);\r
-        if(index !== -1){\r
-            if(domReplace){\r
-                this.elements[index].replaceWith(replacement);\r
-            }else{\r
-                this.elements.splice(index, 1, Ext.get(replacement))\r
+            var returnValue, v, cancel;\r
+            var obj = this;\r
+\r
+            var makeCall = function(fn, scope, args){\r
+                if((v = fn.apply(scope || obj, args)) !== undefined){\r
+                    if(typeof v === 'object'){\r
+                        if(v.returnValue !== undefined){\r
+                            returnValue = v.returnValue;\r
+                        }else{\r
+                            returnValue = v;\r
+                        }\r
+                        if(v.cancel === true){\r
+                            cancel = true;\r
+                        }\r
+                    }else if(v === false){\r
+                        cancel = true;\r
+                    }else {\r
+                        returnValue = v;\r
+                    }\r
+                }\r
             }\r
-        }\r
-        return this;\r
-    },\r
 \r
-    \r
-    clear : function(){\r
-        this.elements = [];\r
-    }\r
-};\r
-(function(){\r
-Ext.CompositeElement.createCall = function(proto, fnName){\r
-    if(!proto[fnName]){\r
-        proto[fnName] = function(){\r
-            return this.invoke(fnName, arguments);\r
-        };\r
-    }\r
-};\r
-for(var fnName in Ext.Element.prototype){\r
-    if(typeof Ext.Element.prototype[fnName] == "function"){\r
-        Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, fnName);\r
-    }\r
-};\r
-})();\r
+            this[method] = function(){\r
+                returnValue = v = undefined; cancel = false;\r
+                var args = Array.prototype.slice.call(arguments, 0);\r
+                for(var i = 0, len = e.before.length; i < len; i++){\r
+                    makeCall(e.before[i].fn, e.before[i].scope, args);\r
+                    if(cancel){\r
+                        return returnValue;\r
+                    }\r
+                }\r
 \r
+                if((v = e.originalFn.apply(obj, args)) !== undefined){\r
+                    returnValue = v;\r
+                }\r
 \r
-Ext.CompositeElementLite = function(els){\r
-    Ext.CompositeElementLite.superclass.constructor.call(this, els);\r
-    this.el = new Ext.Element.Flyweight();\r
-};\r
-Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, {\r
-    addElements : function(els){\r
-        if(els){\r
-            if(Ext.isArray(els)){\r
-                this.elements = this.elements.concat(els);\r
-            }else{\r
-                var yels = this.elements;\r
-                var index = yels.length-1;\r
-                for(var i = 0, len = els.length; i < len; i++) {\r
-                    yels[++index] = els[i];\r
+                for(var i = 0, len = e.after.length; i < len; i++){\r
+                    makeCall(e.after[i].fn, e.after[i].scope, args);\r
+                    if(cancel){\r
+                        return returnValue;\r
+                    }\r
                 }\r
-            }\r
-        }\r
-        return this;\r
-    },\r
-    invoke : function(fn, args){\r
-        var els = this.elements;\r
-        var el = this.el;\r
-        for(var i = 0, len = els.length; i < len; i++) {\r
-            el.dom = els[i];\r
-               Ext.Element.prototype[fn].apply(el, args);\r
+                return returnValue;\r
+            };\r
         }\r
-        return this;\r
+        return e;\r
     },\r
-    \r
-    item : function(index){\r
-        if(!this.elements[index]){\r
-            return null;\r
-        }\r
-        this.el.dom = this.elements[index];\r
-        return this.el;\r
+\r
+    // adds an "interceptor" called before the original method\r
+    beforeMethod : function(method, fn, scope){\r
+        var e = this.getMethodEvent(method);\r
+        e.before.push({fn: fn, scope: scope});\r
     },\r
 \r
-    
-    addListener : function(eventName, handler, scope, opt){\r
-        var els = this.elements;\r
-        for(var i = 0, len = els.length; i < len; i++) {\r
-            Ext.EventManager.on(els[i], eventName, handler, scope || els[i], opt);\r
-        }\r
-        return this;\r
+    // adds a "sequence" called after the original method\r
+    afterMethod : function(method, fn, scope){\r
+        var e = this.getMethodEvent(method);\r
+        e.after.push({fn: fn, scope: scope});\r
     },\r
 \r
-    \r
-    each : function(fn, scope){\r
-        var els = this.elements;\r
-        var el = this.el;\r
-        for(var i = 0, len = els.length; i < len; i++){\r
-            el.dom = els[i];\r
-               if(fn.call(scope || el, el, this, i) === false){\r
-                break;\r
+    removeMethodListener : function(method, fn, scope){\r
+        var e = this.getMethodEvent(method);\r
+        for(var i = 0, len = e.before.length; i < len; i++){\r
+            if(e.before[i].fn == fn && e.before[i].scope == scope){\r
+                e.before.splice(i, 1);\r
+                return;\r
             }\r
         }\r
-        return this;\r
-    },\r
-\r
-    indexOf : function(el){\r
-        return this.elements.indexOf(Ext.getDom(el));\r
-    },\r
-\r
-    replaceElement : function(el, replacement, domReplace){\r
-        var index = typeof el == 'number' ? el : this.indexOf(el);\r
-        if(index !== -1){\r
-            replacement = Ext.getDom(replacement);\r
-            if(domReplace){\r
-                var d = this.elements[index];\r
-                d.parentNode.insertBefore(replacement, d);\r
-                Ext.removeNode(d);\r
+        for(var i = 0, len = e.after.length; i < len; i++){\r
+            if(e.after[i].fn == fn && e.after[i].scope == scope){\r
+                e.after.splice(i, 1);\r
+                return;\r
             }\r
-            this.elements.splice(index, 1, replacement);\r
         }\r
-        return this;\r
-    }\r
-});\r
-Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener;\r
-if(Ext.DomQuery){\r
-    Ext.Element.selectorFunction = Ext.DomQuery.select;\r
-}\r
-\r
-Ext.Element.select = function(selector, unique, root){\r
-    var els;\r
-    if(typeof selector == "string"){\r
-        els = Ext.Element.selectorFunction(selector, root);\r
-    }else if(selector.length !== undefined){\r
-        els = selector;\r
-    }else{\r
-        throw "Invalid selector";\r
-    }\r
-    if(unique === true){\r
-        return new Ext.CompositeElement(els);\r
-    }else{\r
-        return new Ext.CompositeElementLite(els);\r
     }\r
 };\r
 \r
-Ext.select = Ext.Element.select;
-
-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){
-        if(this.fireEvent("beforerequest", this, o) !== false){
-            var p = o.params;
-
-            if(typeof p == "function"){
-                p = p.call(o.scope||window, o);
-            }
-            if(typeof p == "object"){
-                p = Ext.urlEncode(p);
-            }
-            if(this.extraParams){
-                var extras = Ext.urlEncode(this.extraParams);
-                p = p ? (p + '&' + extras) : extras;
-            }
-
-            var url = o.url || this.url;
-            if(typeof url == 'function'){
-                url = url.call(o.scope||window, o);
-            }
-
-            if(o.form){
-                var form = Ext.getDom(o.form);
-                url = url || form.action;
-
-                var enctype = form.getAttribute("enctype");
-                if(o.isUpload || (enctype && enctype.toLowerCase() == 'multipart/form-data')){
-                    return this.doFormUpload(o, p, url);
-                }
-                var f = Ext.lib.Ajax.serializeForm(form);
-                p = p ? (p + '&' + f) : f;
-            }
-
-            var hs = o.headers;
-            if(this.defaultHeaders){
-                hs = Ext.apply(hs || {}, this.defaultHeaders);
-                if(!o.headers){
-                    o.headers = hs;
-                }
-            }
-
-            var cb = {
-                success: this.handleResponse,
-                failure: this.handleFailure,
-                scope: this,
-                argument: {options: o},
-                timeout : o.timeout || this.timeout
-            };
-
-            var method = o.method||this.method||((p || o.xmlData || o.jsonData) ? "POST" : "GET");
-
-            if(method == 'GET' && (this.disableCaching && o.disableCaching !== false) || o.disableCaching === true){
-                var dcp = o.disableCachingParam || this.disableCachingParam;
-                url += (url.indexOf('?') != -1 ? '&' : '?') + dcp + '=' + (new Date().getTime());
-            }
-
-            if(typeof o.autoAbort == 'boolean'){                 if(o.autoAbort){
-                    this.abort();
-                }
-            }else if(this.autoAbort !== false){
-                this.abort();
-            }
-            if((method == 'GET' || o.xmlData || o.jsonData) && p){
-                url += (url.indexOf('?') != -1 ? '&' : '?') + p;
-                p = '';
-            }
-            this.transId = Ext.lib.Ajax.request(method, url, cb, p, o);
-            return this.transId;
-        }else{
-            Ext.callback(o.callback, o.scope, [o, null, null]);
-            return null;
-        }
-    },
-
-    
-    isLoading : function(transId){
-        if(transId){
-            return Ext.lib.Ajax.isCallInProgress(transId);
-        }else{
-            return this.transId ? true : false;
-        }
-    },
-
-    
-    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;
-        response.argument = options ? options.argument : null;
-        this.fireEvent("requestcomplete", this, response, options);
-        Ext.callback(options.success, options.scope, [response, options]);
-        Ext.callback(options.callback, options.scope, [options, true, response]);
-    },
-
-        handleFailure : function(response, e){
-        this.transId = false;
-        var options = response.argument.options;
-        response.argument = options ? options.argument : null;
-        this.fireEvent("requestexception", this, response, options, e);
-        Ext.callback(options.failure, options.scope, [response, options]);
-        Ext.callback(options.callback, options.scope, [options, false, response]);
-    },
-
-        doFormUpload : function(o, ps, url){
-        var id = Ext.id();
-        var frame = document.createElement('iframe');
-        frame.id = id;
-        frame.name = id;
-        frame.className = 'x-hidden';
-        if(Ext.isIE){
-            frame.src = Ext.SSL_SECURE_URL;
-        }
-        document.body.appendChild(frame);
-
-        if(Ext.isIE){
-           document.frames[id].name = id;
-        }
-
-        var form = Ext.getDom(o.form);
-        form.target = id;
-        form.method = 'POST';
-        form.enctype = form.encoding = 'multipart/form-data';
-        if(url){
-            form.action = url;
-        }
-
-        var hiddens, hd;
-        if(ps){             hiddens = [];
-            ps = Ext.urlDecode(ps, false);
-            for(var k in ps){
-                if(ps.hasOwnProperty(k)){
-                    hd = document.createElement('input');
-                    hd.type = 'hidden';
-                    hd.name = k;
-                    hd.value = ps[k];
-                    form.appendChild(hd);
-                    hiddens.push(hd);
-                }
-            }
-        }
-
-        function cb(){
-            var r = {                  responseText : '',
-                responseXML : null
-            };
-
-            r.argument = o ? o.argument : null;
-
-            try {                 var doc;
-                if(Ext.isIE){
-                    doc = frame.contentWindow.document;
-                }else {
-                    doc = (frame.contentDocument || window.frames[id].document);
-                }
-                if(doc && doc.body){
-                    r.responseText = doc.body.innerHTML;
-                }
-                if(doc && doc.XMLDocument){
-                    r.responseXML = doc.XMLDocument;
-                }else {
-                    r.responseXML = doc;
-                }
-            }
-            catch(e) {
-                            }
-
-            Ext.EventManager.removeListener(frame, 'load', cb, this);
-
-            this.fireEvent("requestcomplete", this, r, o);
-
-            Ext.callback(o.success, o.scope, [r, o]);
-            Ext.callback(o.callback, o.scope, [o, true, r]);
-
-            setTimeout(function(){Ext.removeNode(frame);}, 100);
-        }
-
-        Ext.EventManager.on(frame, 'load', cb, this);
-        form.submit();
-
-        if(hiddens){             for(var i = 0, len = hiddens.length; i < len; i++){
-                Ext.removeNode(hiddens[i]);
-            }
-        }
-    }
-});
-
-
-Ext.Ajax = new Ext.data.Connection({
-    
-    
-    
-    
-    
-    
-
-    
-
-    
-    
-    
-    
-    
-    
-
-    
-    autoAbort : false,
-
-    
-    serializeForm : function(form){
-        return Ext.lib.Ajax.serializeForm(form);
-    }
-});
-
-Ext.Updater = Ext.extend(Ext.util.Observable, {
-    constructor: function(el, forceNew){
-        el = Ext.get(el);
-        if(!forceNew && el.updateManager){
-            return el.updateManager;
-        }
-        
-        this.el = el;
-        
-        this.defaultUrl = null;
-
-        this.addEvents(
-            
-            "beforeupdate",
-            
-            "update",
-            
-            "failure"
-        );
-        var d = Ext.Updater.defaults;
-        
-        this.sslBlankUrl = d.sslBlankUrl;
-        
-        this.disableCaching = d.disableCaching;
-        
-        this.indicatorText = d.indicatorText;
-        
-        this.showLoadIndicator = d.showLoadIndicator;
-        
-        this.timeout = d.timeout;
-        
-        this.loadScripts = d.loadScripts;
-        
-        this.transaction = null;
-        
-        this.refreshDelegate = this.refresh.createDelegate(this);
-        
-        this.updateDelegate = this.update.createDelegate(this);
-        
-        this.formUpdateDelegate = this.formUpdate.createDelegate(this);
-
-        if(!this.renderer){
-         
-        this.renderer = this.getDefaultRenderer();
-        }
-        Ext.Updater.superclass.constructor.call(this);
-    },
-    
-    getDefaultRenderer: function() {
-        return new Ext.Updater.BasicRenderer();
-    },
-    
-    getEl : function(){
-        return this.el;
-    },
-
-    
-    update : function(url, params, callback, discardUrl){
-        if(this.fireEvent("beforeupdate", this.el, url, params) !== false){
-            var cfg, callerScope;
-            if(typeof url == "object"){                 cfg = url;
-                url = cfg.url;
-                params = params || cfg.params;
-                callback = callback || cfg.callback;
-                discardUrl = discardUrl || cfg.discardUrl;
-                callerScope = cfg.scope;
-                if(typeof cfg.nocache != "undefined"){this.disableCaching = cfg.nocache;};
-                if(typeof cfg.text != "undefined"){this.indicatorText = '<div class="loading-indicator">'+cfg.text+"</div>";};
-                if(typeof cfg.scripts != "undefined"){this.loadScripts = cfg.scripts;};
-                if(typeof cfg.timeout != "undefined"){this.timeout = cfg.timeout;};
-            }
-            this.showLoading();
-
-            if(!discardUrl){
-                this.defaultUrl = url;
-            }
-            if(typeof url == "function"){
-                url = url.call(this);
-            }
-
-            var o = Ext.apply({}, {
-                url : url,
-                params: (typeof params == "function" && callerScope) ? params.createDelegate(callerScope) : params,
-                success: this.processSuccess,
-                failure: this.processFailure,
-                scope: this,
-                callback: undefined,
-                timeout: (this.timeout*1000),
-                disableCaching: this.disableCaching,
-                argument: {
-                    "options": cfg,
-                    "url": url,
-                    "form": null,
-                    "callback": callback,
-                    "scope": callerScope || window,
-                    "params": params
-                }
-            }, cfg);
-
-            this.transaction = Ext.Ajax.request(o);
-        }
-    },
-
-    
-    formUpdate : function(form, url, reset, callback){
-        if(this.fireEvent("beforeupdate", this.el, form, url) !== false){
-            if(typeof url == "function"){
-                url = url.call(this);
-            }
-            form = Ext.getDom(form)
-            this.transaction = Ext.Ajax.request({
-                form: form,
-                url:url,
-                success: this.processSuccess,
-                failure: this.processFailure,
-                scope: this,
-                timeout: (this.timeout*1000),
-                argument: {
-                    "url": url,
-                    "form": form,
-                    "callback": callback,
-                    "reset": reset
-                }
-            });
-            this.showLoading.defer(1, this);
-        }
-    },
-
-    
-    refresh : function(callback){
-        if(this.defaultUrl == null){
-            return;
-        }
-        this.update(this.defaultUrl, null, callback, true);
-    },
-
-    
-    startAutoRefresh : function(interval, url, params, callback, refreshNow){
-        if(refreshNow){
-            this.update(url || this.defaultUrl, params, callback, true);
-        }
-        if(this.autoRefreshProcId){
-            clearInterval(this.autoRefreshProcId);
-        }
-        this.autoRefreshProcId = setInterval(this.update.createDelegate(this, [url || this.defaultUrl, params, callback, true]), interval*1000);
-    },
-
-    
-     stopAutoRefresh : function(){
-        if(this.autoRefreshProcId){
-            clearInterval(this.autoRefreshProcId);
-            delete this.autoRefreshProcId;
-        }
-    },
-
-    
-    isAutoRefreshing : function(){
-       return this.autoRefreshProcId ? true : false;
-    },
-
-    
-    showLoading : function(){
-        if(this.showLoadIndicator){
-            this.el.update(this.indicatorText);
-        }
-    },
-
-        processSuccess : function(response){
-        this.transaction = null;
-        if(response.argument.form && response.argument.reset){
-            try{                 response.argument.form.reset();
-            }catch(e){}
-        }
-        if(this.loadScripts){
-            this.renderer.render(this.el, response, this,
-                this.updateComplete.createDelegate(this, [response]));
-        }else{
-            this.renderer.render(this.el, response, this);
-            this.updateComplete(response);
-        }
-    },
-
-        updateComplete : function(response){
-        this.fireEvent("update", this.el, response);
-        if(typeof response.argument.callback == "function"){
-            response.argument.callback.call(response.argument.scope, this.el, true, response, response.argument.options);
-        }
-    },
-
-        processFailure : function(response){
-        this.transaction = null;
-        this.fireEvent("failure", this.el, response);
-        if(typeof response.argument.callback == "function"){
-            response.argument.callback.call(response.argument.scope, this.el, false, response, response.argument.options);
-        }
-    },
-
-    
-    setRenderer : function(renderer){
-        this.renderer = renderer;
-    },
-
-    
-    getRenderer : function(){
-       return this.renderer;
-    },
-
-    
-    setDefaultUrl : function(defaultUrl){
-        this.defaultUrl = defaultUrl;
-    },
-
-    
-    abort : function(){
-        if(this.transaction){
-            Ext.Ajax.abort(this.transaction);
-        }
-    },
-
-    
-    isUpdating : function(){
-        if(this.transaction){
-            return Ext.Ajax.isLoading(this.transaction);
-        }
-        return false;
-    }
-});
-
-
-   Ext.Updater.defaults = {
-       
-         timeout : 30,
-         
-        loadScripts : false,
-        
-        sslBlankUrl : (Ext.SSL_SECURE_URL || "javascript:false"),
-        
-        disableCaching : false,
-        
-        showLoadIndicator : true,
-        
-        indicatorText : '<div class="loading-indicator">Loading...</div>'
-   };
-
-
-Ext.Updater.updateElement = function(el, url, params, options){
-    var um = Ext.get(el).getUpdater();
-    Ext.apply(um, options);
-    um.update(url, params, options ? options.callback : null);
-};
-
-Ext.Updater.BasicRenderer = function(){};
-
-Ext.Updater.BasicRenderer.prototype = {
-    
-     render : function(el, response, updateManager, callback){
-        el.update(response.responseText, updateManager.loadScripts, callback);
-    }
-};
-
-Ext.UpdateManager = Ext.Updater;
-
-
-
-
-
-(function() {
-Date.formatCodeToRegex = function(character, currentGroup) {
-        var p = Date.parseCodes[character];
-
-    if (p) {
-      p = Ext.type(p) == 'function'? p() : p;
-      Date.parseCodes[character] = p;     }
-
-    return p? Ext.applyIf({
-      c: p.c? String.format(p.c, currentGroup || "{0}") : p.c
-    }, p) : {
-        g:0,
-        c:null,
-        s:Ext.escapeRe(character)     }
-}
-
-var $f = Date.formatCodeToRegex;
-
-Ext.apply(Date, {
-        parseFunctions: {count:0},
-    parseRegexes: [],
-    formatFunctions: {count:0},
-    daysInMonth : [31,28,31,30,31,30,31,31,30,31,30,31],
-    y2kYear : 50,
-
-    
-    MILLI : "ms",
-
-    
-    SECOND : "s",
-
-    
-    MINUTE : "mi",
-
-    
-    HOUR : "h",
-
-    
-    DAY : "d",
-
-    
-    MONTH : "mo",
-
-    
-    YEAR : "y",
-
-    
-    dayNames : [
-        "Sunday",
-        "Monday",
-        "Tuesday",
-        "Wednesday",
-        "Thursday",
-        "Friday",
-        "Saturday"
-    ],
-
-    
-    monthNames : [
-        "January",
-        "February",
-        "March",
-        "April",
-        "May",
-        "June",
-        "July",
-        "August",
-        "September",
-        "October",
-        "November",
-        "December"
-    ],
-
-    
-    monthNumbers : {
-        Jan:0,
-        Feb:1,
-        Mar:2,
-        Apr:3,
-        May:4,
-        Jun:5,
-        Jul:6,
-        Aug:7,
-        Sep:8,
-        Oct:9,
-        Nov:10,
-        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()];
-    },
-
-    
-    formatCodes : {
-        d: "String.leftPad(this.getDate(), 2, '0')",
-        D: "Date.getShortDayName(this.getDay())",         j: "this.getDate()",
-        l: "Date.dayNames[this.getDay()]",
-        N: "(this.getDay() ? this.getDay() : 7)",
-        S: "this.getSuffix()",
-        w: "this.getDay()",
-        z: "this.getDayOfYear()",
-        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())",         n: "(this.getMonth() + 1)",
-        t: "this.getDaysInMonth()",
-        L: "(this.isLeapYear() ? 1 : 0)",
-        o: "(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",
-        Y: "this.getFullYear()",
-        y: "('' + this.getFullYear()).substring(2, 4)",
-        a: "(this.getHours() < 12 ? 'am' : 'pm')",
-        A: "(this.getHours() < 12 ? 'AM' : 'PM')",
-        g: "((this.getHours() % 12) ? this.getHours() % 12 : 12)",
-        G: "this.getHours()",
-        h: "String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",
-        H: "String.leftPad(this.getHours(), 2, '0')",
-        i: "String.leftPad(this.getMinutes(), 2, '0')",
-        s: "String.leftPad(this.getSeconds(), 2, '0')",
-        u: "String.leftPad(this.getMilliseconds(), 3, '0')",
-        O: "this.getGMTOffset()",
-        P: "this.getGMTOffset(true)",
-        T: "this.getTimezone()",
-        Z: "(this.getTimezoneOffset() * -60)",
-        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));             }
-            return code.join(" + ");
-        },
-        
-        U: "Math.round(this.getTime() / 1000)"
-    },
-
-    
-    parseDate : function(input, format) {
-        var p = Date.parseFunctions;
-        if (p[format] == null) {
-            Date.createParser(format);
-        }
-        var func = p[format];
-        return Date[func](input);
-    },
-
-        getFormatCode : function(character) {
-        var f = Date.formatCodes[character];
-
-        if (f) {
-          f = Ext.type(f) == 'function'? f() : f;
-          Date.formatCodes[character] = f;         }
-
-                return f || ("'" + String.escape(character) + "'");
-    },
-
-        createNewFormat : function(format) {
-        var funcName = "format" + Date.formatFunctions.count++;
-        Date.formatFunctions[format] = funcName;
-        var code = "Date.prototype." + funcName + " = function(){return ";
-        var special = false;
-        var ch = '';
-        for (var i = 0; i < format.length; ++i) {
-            ch = format.charAt(i);
-            if (!special && ch == "\\") {
-                special = true;
-            }
-            else if (special) {
-                special = false;
-                code += "'" + String.escape(ch) + "' + ";
-            }
-            else {
-                code += Date.getFormatCode(ch) + " + ";
-            }
-        }
-        eval(code.substring(0, code.length - 3) + ";}");
-    },
-
-        createParser : function(format) {
-        var funcName = "parse" + Date.parseFunctions.count++;
-        var regexNum = Date.parseRegexes.length;
-        var currentGroup = 1;
-        Date.parseFunctions[format] = funcName;
-
-        var code = "Date." + funcName + " = function(input){\n"
-            + "var y, m, d, h = 0, i = 0, s = 0, ms = 0, o, z, u, v;\n"
-            + "input = String(input);\n"
-            + "d = new Date();\n"
-            + "y = d.getFullYear();\n"
-            + "m = d.getMonth();\n"
-            + "d = d.getDate();\n"
-            + "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n"
-            + "if (results && results.length > 0) {";
-        var regex = "";
-
-        var special = false;
-        var ch = '';
-        for (var i = 0; i < format.length; ++i) {
-            ch = format.charAt(i);
-            if (!special && ch == "\\") {
-                special = true;
-            }
-            else if (special) {
-                special = false;
-                regex += String.escape(ch);
-            }
-            else {
-                var obj = Date.formatCodeToRegex(ch, currentGroup);
-                currentGroup += obj.g;
-                regex += obj.s;
-                if (obj.g && obj.c) {
-                    code += obj.c;
-                }
-            }
-        }
-
-        code += "if (u){\n"
-            + "v = new Date(u * 1000);\n"             + "}else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0){\n"
-            + "v = new Date(y, m, d, h, i, s, ms);\n"
-            + "}else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0){\n"
-            + "v = new Date(y, m, d, h, i, s);\n"
-            + "}else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0){\n"
-            + "v = new Date(y, m, d, h, i);\n"
-            + "}else if (y >= 0 && m >= 0 && d > 0 && h >= 0){\n"
-            + "v = new Date(y, m, d, h);\n"
-            + "}else if (y >= 0 && m >= 0 && d > 0){\n"
-            + "v = new Date(y, m, d);\n"
-            + "}else if (y >= 0 && m >= 0){\n"
-            + "v = new Date(y, m);\n"
-            + "}else if (y >= 0){\n"
-            + "v = new Date(y);\n"
-            + "}\n}\nreturn (v && (z || o))?"             +     " (Ext.type(z) == 'number' ? v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - z) :"             +         " v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn))) : v;\n"             + "}";
-
-        Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$", "i");
-        eval(code);
-    },
-
-        parseCodes : {
-        
-        d: {
-            g:1,
-            c:"d = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})"         },
-        j: {
-            g:1,
-            c:"d = parseInt(results[{0}], 10);\n",
-            s:"(\\d{1,2})"         },
-        D: function() {
-            for (var a = [], i = 0; i < 7; a.push(Date.getShortDayName(i)), ++i);             return {
-                g:0,
-                c:null,
-                s:"(?:" + a.join("|") +")"
-            }
-        },
-        l: function() {
-            return {
-                g:0,
-                c:null,
-                s:"(?:" + Date.dayNames.join("|") + ")"
-            }
-        },
-        N: {
-            g:0,
-            c:null,
-            s:"[1-7]"         },
-        S: {
-            g:0,
-            c:null,
-            s:"(?:st|nd|rd|th)"
-        },
-        w: {
-            g:0,
-            c:null,
-            s:"[0-6]"         },
-        z: {
-            g:0,
-            c:null,
-            s:"(?:\\d{1,3}"         },
-        W: {
-            g:0,
-            c:null,
-            s:"(?:\\d{2})"         },
-        F: function() {
-            return {
-                g:1,
-                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);             return Ext.applyIf({
-                s:"(" + a.join("|") + ")"
-            }, $f("F"));
-        },
-        m: {
-            g:1,
-            c:"m = parseInt(results[{0}], 10) - 1;\n",
-            s:"(\\d{2})"         },
-        n: {
-            g:1,
-            c:"m = parseInt(results[{0}], 10) - 1;\n",
-            s:"(\\d{1,2})"         },
-        t: {
-            g:0,
-            c:null,
-            s:"(?:\\d{2})"         },
-        L: {
-            g:0,
-            c:null,
-            s:"(?:1|0)"
-        },
-        o: function() {
-            return $f("Y");
-        },
-        Y: {
-            g:1,
-            c:"y = parseInt(results[{0}], 10);\n",
-            s:"(\\d{4})"         },
-        y: {
-            g:1,
-            c:"var ty = parseInt(results[{0}], 10);\n"
-                + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",             s:"(\\d{1,2})"
-        },
-        a: {
-            g:1,
-            c:"if (results[{0}] == 'am') {\n"
-                + "if (h == 12) { h = 0; }\n"
-                + "} else { if (h < 12) { h += 12; }}",
-            s:"(am|pm)"
-        },
-        A: {
-            g:1,
-            c:"if (results[{0}] == 'AM') {\n"
-                + "if (h == 12) { h = 0; }\n"
-                + "} else { if (h < 12) { h += 12; }}",
-            s:"(AM|PM)"
-        },
-        g: function() {
-            return $f("G");
-        },
-        G: {
-            g:1,
-            c:"h = parseInt(results[{0}], 10);\n",
-            s:"(\\d{1,2})"         },
-        h: function() {
-            return $f("H");
-        },
-        H: {
-            g:1,
-            c:"h = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})"         },
-        i: {
-            g:1,
-            c:"i = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})"         },
-        s: {
-            g:1,
-            c:"s = parseInt(results[{0}], 10);\n",
-            s:"(\\d{2})"         },
-        u: {
-            g:1,
-            c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",
-            s:"(\\d+)"         },
-        O: {
-            g:1,
-            c:[
-                "o = results[{0}];",
-                "var sn = o.substring(0,1);",                 "var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);",                 "var 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})"         },
-        P: {
-            g:1,
-            c:[
-                "o = results[{0}];",
-                "var sn = o.substring(0,1);",                 "var hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60);",                 "var 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})"         },
-        T: {
-            g:0,
-            c:null,
-            s:"[A-Z]{1,4}"         },
-        Z: {
-            g:1,
-            c:"z = results[{0}] * 1;\n"                   + "z = (-43200 <= z && z <= 50400)? z : null;\n",
-            s:"([+\-]?\\d{1,5})"         },
-        c: function() {
-            var calc = [];
-            var arr = [
-                $f("Y", 1),                 $f("m", 2),                 $f("d", 3),                 $f("h", 4),                 $f("i", 5),                 $f("s", 6),                 {c:"ms = (results[7] || '.0').substring(1); ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},                 {c:"if(results[9] == 'Z'){\no = 0;\n}else{\n" + $f("P", 9).c + "\n}"}             ];
-            for (var i = 0, l = arr.length; i < l; ++i) {
-                calc.push(arr[i].c);
-            }
-
-            return {
-                g:1,
-                c:calc.join(""),
-                s:arr[0].s + "-" + arr[1].s + "-" + arr[2].s + "T" + arr[3].s + ":" + arr[4].s + ":" + arr[5].s
-                      + "((\.|,)\\d+)?"                       + "(" + $f("P", null).s + "|Z)"             }
-        },
-        U: {
-            g:1,
-            c:"u = parseInt(results[{0}], 10);\n",
-            s:"(-?\\d+)"         }
-    }
-});
-
-}());
-
-Ext.override(Date, {
-        dateFormat : function(format) {
-        if (Date.formatFunctions[format] == null) {
-            Date.createNewFormat(format);
-        }
-        var func = Date.formatFunctions[format];
-        return this[func]();
-    },
-
-    
-    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.abs(Math.floor(this.getTimezoneOffset() / 60)), 2, "0")
-            + (colon ? ":" : "")
-            + String.leftPad(Math.abs(this.getTimezoneOffset() % 60), 2, "0");
-    },
-
-    
-    getDayOfYear : function() {
-        var num = 0;
-        Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
-        for (var i = 0; i < this.getMonth(); ++i) {
-            num += Date.daysInMonth[i];
-        }
-        return num + this.getDate() - 1;
-    },
-
-    
-    getWeekOfYear : function() {
-                var ms1d = 864e5;         var ms7d = 7 * ms1d;         var DC3 = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3) / ms1d;         var AWN = Math.floor(DC3 / 7);         var 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() {
-        var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7;
-        return (day < 0) ? (day + 7) : day;
-    },
-
-
-    
-    getFirstDateOfMonth : function() {
-        return new Date(this.getFullYear(), this.getMonth(), 1);
-    },
-
-    
-    getLastDateOfMonth : function() {
-        return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth());
-    },
-
-    
-    getDaysInMonth : function() {
-        Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
-        return Date.daysInMonth[this.getMonth()];
-    },
-
-    
-    getSuffix : function() {
-        switch (this.getDate()) {
-            case 1:
-            case 21:
-            case 31:
-                return "st";
-            case 2:
-            case 22:
-                return "nd";
-            case 3:
-            case 23:
-                return "rd";
-            default:
-                return "th";
-        }
-    },
-
-    
-    clone : function() {
-        return new Date(this.getTime());
-    },
-
-    
-    clearTime : function(clone){
-        if(clone){
-            return this.clone().clearTime();
-        }
-        this.setHours(0);
-        this.setMinutes(0);
-        this.setSeconds(0);
-        this.setMilliseconds(0);
-        return this;
-    },
-
-    
-    add : function(interval, value){
-        var d = this.clone();
-        if (!interval || value === 0) return d;
-
-        switch(interval.toLowerCase()){
-            case Date.MILLI:
-                d.setMilliseconds(this.getMilliseconds() + value);
-                break;
-            case Date.SECOND:
-                d.setSeconds(this.getSeconds() + value);
-                break;
-            case Date.MINUTE:
-                d.setMinutes(this.getMinutes() + value);
-                break;
-            case Date.HOUR:
-                d.setHours(this.getHours() + value);
-                break;
-            case Date.DAY:
-                d.setDate(this.getDate() + value);
-                break;
-            case Date.MONTH:
-                var day = this.getDate();
-                if(day > 28){
-                    day = Math.min(day, this.getFirstDateOfMonth().add('mo', value).getLastDateOfMonth().getDate());
-                }
-                d.setDate(day);
-                d.setMonth(this.getMonth() + value);
-                break;
-            case Date.YEAR:
-                d.setFullYear(this.getFullYear() + value);
-                break;
-        }
-        return d;
-    },
-
-    
-    between : function(start, end){
-        var t = this.getTime();
-        return start.getTime() <= t && t <= end.getTime();
-    }
-});
-
-
-
-Date.prototype.format = Date.prototype.dateFormat;
-
-
-if(Ext.isSafari){
-    Date.brokenSetMonth = Date.prototype.setMonth;
-    Date.prototype.setMonth = function(num){
-        if(num <= -1){
-            var n = Math.ceil(-num);
-            var back_year = Math.ceil(n/12);
-            var month = (n % 12) ? 12 - n % 12 : 0 ;
-            this.setFullYear(this.getFullYear() - back_year);
-            return Date.brokenSetMonth.call(this, month);
-        } else {
-            return Date.brokenSetMonth.apply(this, arguments);
-        }
-    };
-}
-
-Ext.util.DelayedTask = function(fn, scope, args){
-    var id = null, d, t;
-
-    var call = function(){
-        var now = new Date().getTime();
-        if(now - t >= d){
-            clearInterval(id);
-            id = null;
-            fn.apply(scope, args || []);
-        }
-    };
-    
-    this.delay = function(delay, newFn, newScope, newArgs){
-        if(id && delay != d){
-            this.cancel();
-        }
-        d = delay;
-        t = new Date().getTime();
-        fn = newFn || fn;
-        scope = newScope || scope;
-        args = newArgs || args;
-        if(!id){
-            id = setInterval(call, d);
-        }
-    };
-
-    
-    this.cancel = function(){
-        if(id){
-            clearInterval(id);
-            id = null;
-        }
-    };
-};
-
-Ext.util.TaskRunner = function(interval){
-    interval = interval || 10;
-    var tasks = [], removeQueue = [];
-    var id = 0;
-    var running = false;
-
-        var stopThread = function(){
-        running = false;
-        clearInterval(id);
-        id = 0;
-    };
-
-        var startThread = function(){
-        if(!running){
-            running = true;
-            id = setInterval(runTasks, interval);
-        }
-    };
-
-        var removeTask = function(t){
-        removeQueue.push(t);
-        if(t.onStop){
-            t.onStop.apply(t.scope || t);
-        }
-    };
-
-        var runTasks = function(){
-        if(removeQueue.length > 0){
-            for(var i = 0, len = removeQueue.length; i < len; i++){
-                tasks.remove(removeQueue[i]);
-            }
-            removeQueue = [];
-            if(tasks.length < 1){
-                stopThread();
-                return;
-            }
-        }
-        var now = new Date().getTime();
-        for(var i = 0, len = tasks.length; i < len; ++i){
-            var t = tasks[i];
-            var itime = now - t.taskRunTime;
-            if(t.interval <= itime){
-                var rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]);
-                t.taskRunTime = now;
-                if(rt === false || t.taskRunCount === t.repeat){
-                    removeTask(t);
-                    return;
-                }
-            }
-            if(t.duration && t.duration <= (now - t.taskStartTime)){
-                removeTask(t);
-            }
-        }
-    };
-
-    
-    this.start = function(task){
-        tasks.push(task);
-        task.taskStartTime = new Date().getTime();
-        task.taskRunTime = 0;
-        task.taskRunCount = 0;
-        startThread();
-        return task;
-    };
-
-    
-    this.stop = function(task){
-        removeTask(task);
-        return task;
-    };
-
-    
-    this.stopAll = function(){
-        stopThread();
-        for(var i = 0, len = tasks.length; i < len; i++){
-            if(tasks[i].onStop){
-                tasks[i].onStop();
-            }
-        }
-        tasks = [];
-        removeQueue = [];
-    };
-};
-
-
-Ext.TaskMgr = new Ext.util.TaskRunner();
-
-Ext.util.MixedCollection = function(allowFunctions, keyFn){
-    this.items = [];
-    this.map = {};
-    this.keys = [];
-    this.length = 0;
-    this.addEvents(
-        
-        "clear",
-        
-        "add",
-        
-        "replace",
-        
-        "remove",
-        "sort"
-    );
-    this.allowFunctions = allowFunctions === true;
-    if(keyFn){
-        this.getKey = keyFn;
-    }
-    Ext.util.MixedCollection.superclass.constructor.call(this);
-};
-
-Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
-    allowFunctions : false,
-
-
-    add : function(key, o){
-        if(arguments.length == 1){
-            o = arguments[0];
-            key = this.getKey(o);
-        }
-        if(typeof key == "undefined" || key === null){
-            this.length++;
-            this.items.push(o);
-            this.keys.push(null);
-        }else{
-            var old = this.map[key];
-            if(old){
-                return this.replace(key, o);
-            }
-            this.length++;
-            this.items.push(o);
-            this.map[key] = o;
-            this.keys.push(key);
-        }
-        this.fireEvent("add", this.length-1, o, key);
-        return o;
-    },
-
-
-    getKey : function(o){
-         return o.id;
-    },
-
-
-    replace : function(key, o){
-        if(arguments.length == 1){
-            o = arguments[0];
-            key = this.getKey(o);
-        }
-        var old = this.item(key);
-        if(typeof key == "undefined" || key === null || typeof old == "undefined"){
-             return this.add(key, o);
-        }
-        var index = this.indexOfKey(key);
-        this.items[index] = o;
-        this.map[key] = o;
-        this.fireEvent("replace", key, old, o);
-        return o;
-    },
-
-
-    addAll : function(objs){
-        if(arguments.length > 1 || Ext.isArray(objs)){
-            var args = arguments.length > 1 ? arguments : objs;
-            for(var i = 0, len = args.length; i < len; i++){
-                this.add(args[i]);
-            }
-        }else{
-            for(var key in objs){
-                if(this.allowFunctions || typeof objs[key] != "function"){
-                    this.add(key, objs[key]);
-                }
-            }
-        }
-    },
-
-
-    each : function(fn, scope){
-        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;
-            }
-        }
-    },
-
-
-    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])){
-                return this.items[i];
-            }
-        }
-        return null;
-    },
-
-
-    insert : function(index, key, o){
-        if(arguments.length == 2){
-            o = arguments[1];
-            key = this.getKey(o);
-        }
-        if(index >= this.length){
-            return this.add(key, o);
-        }
-        this.length++;
-        this.items.splice(index, 0, o);
-        if(typeof key != "undefined" && key != null){
-            this.map[key] = o;
-        }
-        this.keys.splice(index, 0, key);
-        this.fireEvent("add", index, o, key);
-        return o;
-    },
-
-
-    remove : function(o){
-        return this.removeAt(this.indexOf(o));
-    },
-
-
-    removeAt : function(index){
-        if(index < this.length && index >= 0){
-            this.length--;
-            var o = this.items[index];
-            this.items.splice(index, 1);
-            var key = this.keys[index];
-            if(typeof key != "undefined"){
-                delete this.map[key];
-            }
-            this.keys.splice(index, 1);
-            this.fireEvent("remove", o, key);
-            return o;
-        }
-        return false;
-    },
-
-
-    removeKey : function(key){
-        return this.removeAt(this.indexOfKey(key));
-    },
-