/*
 * 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),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.isIE7) {
                                        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)
            }
        }
    })()
})();

