/*
 * Ext JS Library 2.2
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */

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);
		var isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1;
		var isGecko=!isSafari&&ua.indexOf("gecko")>-1,isGecko3=!isSafari&&ua.indexOf("rv:1.9")>-1,isBorderBox=isIE&&!isStrict;
		var isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1);
		var 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);
											K+="&"
										}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)
				}
			}
		})()
	})();

