Index: ssts-web/src/main/webapp/ext/js/ext-all.js =================================================================== diff -u -r36653 -r36661 --- ssts-web/src/main/webapp/ext/js/ext-all.js (.../ext-all.js) (revision 36653) +++ ssts-web/src/main/webapp/ext/js/ext-all.js (.../ext-all.js) (revision 36661) @@ -1 +1,27226 @@ -Ext.DomHelper=function(){var L=null;var F=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var B=/^table|tbody|tr|td$/i;var A=function(T){if(typeof T=="string"){return T}var O="";if(Ext.isArray(T)){for(var R=0,P=T.length;R"}else{O+=">";var U=T.children||T.cn;if(U){O+=A(U)}else{if(T.html){O+=T.html}}O+=""}return O};var M=function(T,O){var S;if(Ext.isArray(T)){S=document.createDocumentFragment();for(var R=0,P=T.length;R",K=""+E,H=C+"",D=""+K;var G=function(N,O,Q,P){if(!L){L=document.createElement("div")}var R;var S=null;if(N=="td"){if(O=="afterbegin"||O=="beforeend"){return}if(O=="beforebegin"){S=Q;Q=Q.parentNode}else{S=Q.nextSibling;Q=Q.parentNode}R=I(4,H,P,D)}else{if(N=="tr"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(4,H,P,D)}}}else{if(N=="tbody"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(3,C,P,K)}}}else{if(O=="beforebegin"||O=="afterend"){return}if(O=="afterbegin"){S=Q.firstChild}R=I(2,J,P,E)}}}Q.insertBefore(R,S);return R};return{useDom:false,markup:function(N){return A(N)},applyStyles:function(P,Q){if(Q){P=Ext.fly(P);if(typeof Q=="string"){var O=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var R;while((R=O.exec(Q))!=null){P.setStyle(R[1],R[2])}}else{if(typeof Q=="object"){for(var N in Q){P.setStyle(N,Q[N])}}else{if(typeof Q=="function"){Ext.DomHelper.applyStyles(P,Q.call())}}}}},insertHtml:function(P,R,Q){P=P.toLowerCase();if(R.insertAdjacentHTML){if(B.test(R.tagName)){var O;if(O=G(R.tagName.toLowerCase(),P,R,Q)){return O}}switch(P){case"beforebegin":R.insertAdjacentHTML("BeforeBegin",Q);return R.previousSibling;case"afterbegin":R.insertAdjacentHTML("AfterBegin",Q);return R.firstChild;case"beforeend":R.insertAdjacentHTML("BeforeEnd",Q);return R.lastChild;case"afterend":R.insertAdjacentHTML("AfterEnd",Q);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""}if((typeof Range!=="undefined")&&!Range.prototype.createContextualFragment){Range.prototype.createContextualFragment=function(html){var frag=document.createDocumentFragment();var div=document.createElement("div");frag.appendChild(div);div.outerHTML=html;return frag}}var N=R.ownerDocument.createRange();var S;switch(P){case"beforebegin":N.setStartBefore(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R);return R.previousSibling;case"afterbegin":if(R.firstChild){N.setStartBefore(R.firstChild);S=N.createContextualFragment(Q);R.insertBefore(S,R.firstChild);return R.firstChild}else{R.innerHTML=Q;return R.firstChild}case"beforeend":if(R.lastChild){N.setStartAfter(R.lastChild);S=N.createContextualFragment(Q);R.appendChild(S);return R.lastChild}else{R.innerHTML=Q;return R.lastChild}case"afterend":N.setStartAfter(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R.nextSibling);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""},insertBefore:function(N,P,O){return this.doInsert(N,P,O,"beforeBegin")},insertAfter:function(N,P,O){return this.doInsert(N,P,O,"afterEnd","nextSibling")},insertFirst:function(N,P,O){return this.doInsert(N,P,O,"afterBegin","firstChild")},doInsert:function(Q,S,R,T,P){Q=Ext.getDom(Q);var O;if(this.useDom){O=M(S,null);(P==="firstChild"?Q:Q.parentNode).insertBefore(O,P?Q[P]:Q)}else{var N=A(S);O=this.insertHtml(T,Q,N)}return R?Ext.get(O,true):O},append:function(P,R,Q){P=Ext.getDom(P);var O;if(this.useDom){O=M(R,null);P.appendChild(O)}else{var N=A(R);O=this.insertHtml("beforeEnd",P,N)}return Q?Ext.get(O,true):O},overwrite:function(N,P,O){N=Ext.getDom(N);N.innerHTML=A(P);return O?Ext.get(N.firstChild,true):N.firstChild},createTemplate:function(O){var N=A(O);return new Ext.Template(N)}}}();Ext.Template=function(E){var B=arguments;if(Ext.isArray(E)){E=E.join("")}else{if(B.length>1){var C=[];for(var D=0,A=B.length;D+~]\s?|\s|$)/;var tagTokenRe=/^(#)?([\w-\*]+)/;var nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/;function child(p,index){var i=0;var n=p.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null}function next(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n}function prev(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n}function children(d){var n=d.firstChild,ni=-1;while(n){var nx=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){d.removeChild(n)}else{n.nodeIndex=++ni}n=nx}return this}function byClassName(c,a,v){if(!v){return c}var r=[],ri=-1,cn;for(var i=0,ci;ci=c[i];i++){if((" "+ci.className+" ").indexOf(v)!=-1){r[++ri]=ci}}return r}function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs;if(!ns){return result}tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){for(var i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(var j=0,ci;ci=cs[j];j++){result[++ri]=ci}}}else{if(mode=="/"||mode==">"){var utag=tagName.toUpperCase();for(var i=0,ni,cn;ni=ns[i];i++){cn=ni.children||ni.childNodes;for(var j=0,cj;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)&&(n.nodeType!=1||(tagName=="*"||n.tagName.toLowerCase()!=tagName))){}if(n){result[++ri]=n}}}}}}return result}function concat(a,b){if(b.slice){return a.concat(b)}for(var i=0,l=b.length;i1){return nodup(results)}return results},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}var n=valueCache[path](root);n=n[0]?n[0]:n;var v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el);var result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w-]+)/,select:"n = byClassName(n, null, \" {1} \");"},{re:/^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:"n = byPseudo(n, \"{1}\", \"{2}\");"},{re:/^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:"n = byAttribute(n, \"{2}\", \"{4}\", \"{3}\", \"{1}\");"},{re:/^#([\w-]+)/,select:"n = byId(n, null, \"{1}\");"},{re:/^@([\w-]+)/,select:"return {firstChild:{nodeValue:attrValue(n, \"{1}\")}};"}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)==0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1;var m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a);var f=(m[1]||1)-0,l=m[2]-0;for(var i=0,n;n=c[i];i++){var pn=n.parentNode;if(batch!=pn._batch){var j=0;for(var cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l==0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f==0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},"empty":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var cns=ci.childNodes,j=0,cn,empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},"contains":function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if((ci.textContent||ci.innerText||"").indexOf(v)!=-1){r[++ri]=ci}}return r},"nodeValue":function(c,v){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},"checked":function(c){var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},"not":function(c,ss){return Ext.DomQuery.filter(c,ss,true)},"any":function(c,selectors){var ss=selectors.split("|");var r=[],ri=-1,s;for(var i=0,ci;ci=c[i];i++){for(var j=0;s=ss[j];j++){if(Ext.DomQuery.is(ci,s)){r[++ri]=ci;break}}}return r},"odd":function(c){return this["nth-child"](c,"odd")},"even":function(c){return this["nth-child"](c,"even")},"nth":function(c,a){return c[a-1]||[]},"first":function(c){return c[0]||[]},"last":function(c){return c[c.length-1]||[]},"has":function(c,ss){var s=Ext.DomQuery.select;var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},"next":function(c,ss){var is=Ext.DomQuery.is;var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},"prev":function(c,ss){var is=Ext.DomQuery.is;var r=[],ri=-1;for(var i=0,ci;ci=c[i];i++){var n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r}}}}();Ext.query=Ext.DomQuery.select;Ext.util.Observable=function(){if(this.listeners){this.on(this.listeners);delete this.listeners}};Ext.util.Observable.prototype={fireEvent:function(){if(this.eventsSuspended!==true){var A=this.events[arguments[0].toLowerCase()];if(typeof A=="object"){return A.fire.apply(A,Array.prototype.slice.call(arguments,1))}}return true},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(A,C,B,F){if(typeof A=="object"){F=A;for(var E in F){if(this.filterOptRe.test(E)){continue}if(typeof F[E]=="function"){this.addListener(E,F[E],F.scope,F)}else{this.addListener(E,F[E].fn,F[E].scope,F[E])}}return}F=(!F||typeof F=="boolean")?{}:F;A=A.toLowerCase();var D=this.events[A]||true;if(typeof D=="boolean"){D=new Ext.util.Event(this,A);this.events[A]=D}D.addListener(C,B,F)},removeListener:function(A,C,B){var D=this.events[A.toLowerCase()];if(typeof D=="object"){D.removeListener(C,B)}},purgeListeners:function(){for(var A in this.events){if(typeof this.events[A]=="object"){this.events[A].clearListeners()}}},relayEvents:function(F,D){var E=function(G){return function(){return this.fireEvent.apply(this,Ext.combine(G,Array.prototype.slice.call(arguments,0)))}};for(var C=0,A=D.length;C0},suspendEvents:function(){this.eventsSuspended=true},resumeEvents:function(){this.eventsSuspended=false},getMethodEvent:function(G){if(!this.methodEvents){this.methodEvents={}}var F=this.methodEvents[G];if(!F){F={};this.methodEvents[G]=F;F.originalFn=this[G];F.methodName=G;F.before=[];F.after=[];var C,B,D;var E=this;var A=function(J,I,H){if((B=J.apply(I||E,H))!==undefined){if(typeof B==="object"){if(B.returnValue!==undefined){C=B.returnValue}else{C=B}if(B.cancel===true){D=true}}else{if(B===false){D=true}else{C=B}}}};this[G]=function(){C=B=undefined;D=false;var I=Array.prototype.slice.call(arguments,0);for(var J=0,H=F.before.length;J0){this.firing=true;var G=Array.prototype.slice.call(arguments,0);for(var H=0;H");var D=document.getElementById("ie-deferred-loader");D.onreadystatechange=function(){if(this.readyState=="complete"){B()}}}else{if(Ext.isSafari){M=setInterval(function(){var E=document.readyState;if(E=="complete"){B()}},10)}}}L.on(window,"load",B)};var R=function(E,U){var D=new Ext.util.DelayedTask(E);return function(V){V=new Ext.EventObjectImpl(V);D.delay(U.buffer,E,null,[V])}};var P=function(V,U,D,E){return function(W){Ext.EventManager.removeListener(U,D,E);V(W)}};var F=function(D,E){return function(U){U=new Ext.EventObjectImpl(U);setTimeout(function(){D(U)},E.delay||10)}};var J=function(U,E,D,Y,X){var Z=(!D||typeof D=="boolean")?{}:D;Y=Y||Z.fn;X=X||Z.scope;var W=Ext.getDom(U);if(!W){throw"Error listening for \""+E+"\". Element \""+U+"\" doesn't exist."}var V=function(b){b=Ext.EventObject.setEvent(b);var a;if(Z.delegate){a=b.getTarget(Z.delegate,W);if(!a){return}}else{a=b.target}if(Z.stopEvent===true){b.stopEvent()}if(Z.preventDefault===true){b.preventDefault()}if(Z.stopPropagation===true){b.stopPropagation()}if(Z.normalized===false){b=b.browserEvent}Y.call(X||W,b,a,Z)};if(Z.delay){V=F(V,Z)}if(Z.single){V=P(V,W,E,Y)}if(Z.buffer){V=R(V,Z)}Y._handlers=Y._handlers||[];Y._handlers.push([Ext.id(W),E,V]);L.on(W,E,V);if(E=="mousewheel"&&W.addEventListener){W.addEventListener("DOMMouseScroll",V,false);L.on(window,"unload",function(){W.removeEventListener("DOMMouseScroll",V,false)})}if(E=="mousedown"&&W==document){Ext.EventManager.stoppedMouseDownEvent.addListener(V)}return V};var G=function(E,U,Z){var D=Ext.id(E),a=Z._handlers,X=Z;if(a){for(var V=0,Y=a.length;V=33&&D<=40)||D==this.RETURN||D==this.TAB||D==this.ESC},isSpecialKey:function(){var D=this.keyCode;return(this.type=="keypress"&&this.ctrlKey)||D==9||D==13||D==40||D==27||(D==16)||(D==17)||(D>=18&&D<=20)||(D>=33&&D<=35)||(D>=36&&D<=39)||(D>=44&&D<=45)},stopPropagation:function(){if(this.browserEvent){if(this.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}B.stopPropagation(this.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){var D=this.keyCode||this.charCode;return Ext.isSafari?(A[D]||D):D},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getTime:function(){if(this.browserEvent){return B.getTime(this.browserEvent)}return null},getXY:function(){return this.xy},getTarget:function(E,G,D){var F=Ext.get(this.target);return E?F.findParent(E,G,D):(D?F:this.target)},getRelatedTarget:function(){if(this.browserEvent){return B.getRelatedTarget(this.browserEvent)}return null},getWheelDelta:function(){var D=this.browserEvent;var E=0;if(D.wheelDelta){E=D.wheelDelta/120}else{if(D.detail){E=-D.detail/3}}return E},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)?true:false},within:function(E,F){var D=this[F?"getRelatedTarget":"getTarget"]();return D&&Ext.fly(E).contains(D)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])}};return new Ext.EventObjectImpl()}();(function(){var D=Ext.lib.Dom;var E=Ext.lib.Event;var A=Ext.lib.Anim;var propCache={};var camelRe=/(-[a-z])/gi;var camelFn=function(m,a){return a.charAt(1).toUpperCase()};var view=document.defaultView;Ext.Element=function(element,forceNew){var dom=typeof element=="string"?document.getElementById(element):element;if(!dom){return null}var id=dom.id;if(forceNew!==true&&id&&Ext.Element.cache[id]){return Ext.Element.cache[id]}this.dom=dom;this.id=id||Ext.id(dom)};var El=Ext.Element;El.prototype={originalDisplay:"",visibilityMode:1,defaultUnit:"px",setVisibilityMode:function(visMode){this.visibilityMode=visMode;return this},enableDisplayMode:function(display){this.setVisibilityMode(El.DISPLAY);if(typeof display!="undefined"){this.originalDisplay=display}return this},findParent:function(simpleSelector,maxDepth,returnEl){var p=this.dom,b=document.body,depth=0,dq=Ext.DomQuery,stopEl;maxDepth=maxDepth||50;if(typeof maxDepth!="number"){stopEl=Ext.getDom(maxDepth);maxDepth=10}while(p&&p.nodeType==1&&depthch||tcb){c.scrollTop=b-ch}}c.scrollTop=c.scrollTop;if(hscroll!==false){if(el.offsetWidth>c.clientWidth||lcr){c.scrollLeft=r-c.clientWidth}}c.scrollLeft=c.scrollLeft}return this},scrollChildIntoView:function(child,hscroll){Ext.fly(child,"_scrollChildIntoView").scrollIntoView(this,hscroll)},autoHeight:function(animate,duration,onComplete,easing){var oldHeight=this.getHeight();this.clip();this.setHeight(1);setTimeout(function(){var height=parseInt(this.dom.scrollHeight,10);if(!animate){this.setHeight(height);this.unclip();if(typeof onComplete=="function"){onComplete()}}else{this.setHeight(oldHeight);this.setHeight(height,animate,duration,function(){this.unclip();if(typeof onComplete=="function"){onComplete()}}.createDelegate(this),easing)}}.createDelegate(this),0);return this},contains:function(el){if(!el){return false}return D.isAncestor(this.dom,el.dom?el.dom:el)},isVisible:function(deep){var vis=!(this.getStyle("visibility")=="hidden"||this.getStyle("display")=="none");if(deep!==true||!vis){return vis}var p=this.dom.parentNode;while(p&&p.tagName.toLowerCase()!="body"){if(!Ext.fly(p,"_isVisible").isVisible()){return false}p=p.parentNode}return true},select:function(selector,unique){return El.select(selector,unique,this.dom)},query:function(selector,unique){return Ext.DomQuery.select(selector,this.dom)},child:function(selector,returnDom){var n=Ext.DomQuery.selectNode(selector,this.dom);return returnDom?n:Ext.get(n)},down:function(selector,returnDom){var n=Ext.DomQuery.selectNode(" > "+selector,this.dom);return returnDom?n:Ext.get(n)},initDD:function(group,config,overrides){var dd=new Ext.dd.DD(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},initDDProxy:function(group,config,overrides){var dd=new Ext.dd.DDProxy(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},initDDTarget:function(group,config,overrides){var dd=new Ext.dd.DDTarget(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},setVisible:function(visible,animate){if(!animate||!A){if(this.visibilityMode==El.DISPLAY){this.setDisplayed(visible)}else{this.fixDisplay();this.dom.style.visibility=visible?"visible":"hidden"}}else{var dom=this.dom;var visMode=this.visibilityMode;if(visible){this.setOpacity(0.01);this.setVisible(true)}this.anim({opacity:{to:(visible?1:0)}},this.preanim(arguments,1),null,0.35,"easeIn",function(){if(!visible){if(visMode==El.DISPLAY){dom.style.display="none"}else{dom.style.visibility="hidden"}Ext.get(dom).setOpacity(1)}})}return this},isDisplayed:function(){return this.getStyle("display")!="none"},toggle:function(animate){this.setVisible(!this.isVisible(),this.preanim(arguments,0));return this},setDisplayed:function(value){if(typeof value=="boolean"){value=value?this.originalDisplay:"none"}this.setStyle("display",value);return this},focus:function(){try{this.dom.focus()}catch(e){}return this},blur:function(){try{this.dom.blur()}catch(e){}return this},addClass:function(className){if(Ext.isArray(className)){for(var i=0,len=className.length;idw+scrollX){x=swapX?r.left-w:dw+scrollX-w}if(xdh+scrollY){y=swapY?r.top-h:dh+scrollY-h}if(yvr){x=vr-w;moved=true}if((y+h)>vb){y=vb-h;moved=true}if(x";E.onAvailable(id,function(){var hd=document.getElementsByTagName("head")[0];var re=/(?:]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;var srcRe=/\ssrc=([\'\"])(.*?)\1/i;var typeRe=/\stype=([\'\"])(.*?)\1/i;var match;while(match=re.exec(html)){var attrs=match[1];var srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){var s=document.createElement("script");s.src=srcMatch[2];var typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}var el=document.getElementById(id);if(el){Ext.removeNode(el)}if(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},load:function(){var um=this.getUpdater();um.update.apply(um,arguments);return this},getUpdater:function(){if(!this.updateManager){this.updateManager=new Ext.Updater(this)}return this.updateManager},unselectable:function(){this.dom.unselectable="on";this.swallowEvent("selectstart",true);this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");this.addClass("x-unselectable");return this},getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(centerIn){this.alignTo(centerIn||document,"c-c");return this},isBorderBox:function(){return noBoxAdjust[this.dom.tagName.toLowerCase()]||Ext.isBorderBox},getBox:function(contentBox,local){var xy;if(!local){xy=this.getXY()}else{var left=parseInt(this.getStyle("left"),10)||0;var top=parseInt(this.getStyle("top"),10)||0;xy=[left,top]}var el=this.dom,w=el.offsetWidth,h=el.offsetHeight,bx;if(!contentBox){bx={x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h}}else{var l=this.getBorderWidth("l")+this.getPadding("l");var r=this.getBorderWidth("r")+this.getPadding("r");var t=this.getBorderWidth("t")+this.getPadding("t");var b=this.getBorderWidth("b")+this.getPadding("b");bx={x:xy[0]+l,y:xy[1]+t,0:xy[0]+l,1:xy[1]+t,width:w-(l+r),height:h-(t+b)}}bx.right=bx.x+bx.width;bx.bottom=bx.y+bx.height;return bx},getFrameWidth:function(sides,onlyContentBox){return onlyContentBox&&Ext.isBorderBox?0:(this.getPadding(sides)+this.getBorderWidth(sides))},setBox:function(box,adjust,animate){var w=box.width,h=box.height;if((adjust&&!this.autoBoxAdjust)&&!this.isBorderBox()){w-=(this.getBorderWidth("lr")+this.getPadding("lr"));h-=(this.getBorderWidth("tb")+this.getPadding("tb"))}this.setBounds(box.x,box.y,w,h,this.preanim(arguments,2));return this},repaint:function(){var dom=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.get(dom).removeClass("x-repaint")},1);return this},getMargins:function(side){if(!side){return{top:parseInt(this.getStyle("margin-top"),10)||0,left:parseInt(this.getStyle("margin-left"),10)||0,bottom:parseInt(this.getStyle("margin-bottom"),10)||0,right:parseInt(this.getStyle("margin-right"),10)||0}}else{return this.addStyles(side,El.margins)}},addStyles:function(sides,styles){var val=0,v,w;for(var i=0,len=sides.length;i=0?w:-1*w)}}}return val},createProxy:function(config,renderTo,matchBox){config=typeof config=="object"?config:{tag:"div",cls:config};var proxy;if(renderTo){proxy=Ext.DomHelper.append(renderTo,config,true)}else{proxy=Ext.DomHelper.insertBefore(this.dom,config,true)}if(matchBox){proxy.setBox(this.getBox())}return proxy},mask:function(msg,msgCls){if(this.getStyle("position")=="static"){this.setStyle("position","relative")}if(this._maskMsg){this._maskMsg.remove()}if(this._mask){this._mask.remove()}this._mask=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask"},true);this.addClass("x-masked");this._mask.setDisplayed(true);if(typeof msg=="string"){this._maskMsg=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask-msg",cn:{tag:"div"}},true);var mm=this._maskMsg;mm.dom.className=msgCls?"ext-el-mask-msg "+msgCls:"ext-el-mask-msg";mm.dom.firstChild.innerHTML=msg;mm.setDisplayed(true);mm.center(this)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&this.getStyle("height")=="auto"){this._mask.setSize(this.dom.clientWidth,this.getHeight())}return this._mask},unmask:function(){if(this._mask){if(this._maskMsg){this._maskMsg.remove();delete this._maskMsg}this._mask.remove();delete this._mask}this.removeClass("x-masked")},isMasked:function(){return this._mask&&this._mask.isVisible()},createShim:function(){var el=document.createElement("iframe");el.frameBorder="no";el.className="ext-shim";if(Ext.isIE&&Ext.isSecure){el.src=Ext.SSL_SECURE_URL}var shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim},remove:function(){Ext.removeNode(this.dom);delete El.cache[this.dom.id]},hover:function(overFn,outFn,scope){var preOverFn=function(e){if(!e.within(this,true)){overFn.apply(scope||this,arguments)}};var preOutFn=function(e){if(!e.within(this,true)){outFn.apply(scope||this,arguments)}};this.on("mouseover",preOverFn,this.dom);this.on("mouseout",preOutFn,this.dom);return this},addClassOnOver:function(className,preventFlicker){this.hover(function(){Ext.fly(this,"_internal").addClass(className)},function(){Ext.fly(this,"_internal").removeClass(className)});return this},addClassOnFocus:function(className){this.on("focus",function(){Ext.fly(this,"_internal").addClass(className)},this.dom);this.on("blur",function(){Ext.fly(this,"_internal").removeClass(className)},this.dom);return this},addClassOnClick:function(className){var dom=this.dom;this.on("mousedown",function(){Ext.fly(dom,"_internal").addClass(className);var d=Ext.getDoc();var fn=function(){Ext.fly(dom,"_internal").removeClass(className);d.removeListener("mouseup",fn)};d.on("mouseup",fn)});return this},swallowEvent:function(eventName,preventDefault){var fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){for(var i=0,len=eventName.length;idom.clientHeight||dom.scrollWidth>dom.clientWidth},scrollTo:function(side,value,animate){var prop=side.toLowerCase()=="left"?"scrollLeft":"scrollTop";if(!animate||!A){this.dom[prop]=value}else{var to=prop=="scrollLeft"?[value,this.dom.scrollTop]:[this.dom.scrollLeft,value];this.anim({scroll:{"to":to}},this.preanim(arguments,2),"scroll")}return this},scroll:function(direction,distance,animate){if(!this.isScrollable()){return}var el=this.dom;var l=el.scrollLeft,t=el.scrollTop;var w=el.scrollWidth,h=el.scrollHeight;var cw=el.clientWidth,ch=el.clientHeight;direction=direction.toLowerCase();var scrolled=false;var a=this.preanim(arguments,2);switch(direction){case"l":case"left":if(w-l>cw){var v=Math.min(l+distance,w-cw);this.scrollTo("left",v,a);scrolled=true}break;case"r":case"right":if(l>0){var v=Math.max(l-distance,0);this.scrollTo("left",v,a);scrolled=true}break;case"t":case"top":case"up":if(t>0){var v=Math.max(t-distance,0);this.scrollTo("top",v,a);scrolled=true}break;case"b":case"bottom":case"down":if(h-t>ch){var v=Math.min(t+distance,h-ch);this.scrollTo("top",v,a);scrolled=true}break}return scrolled},translatePoints:function(x,y){if(typeof x=="object"||Ext.isArray(x)){y=x[1];x=x[0]}var p=this.getStyle("position");var o=this.getXY();var l=parseInt(this.getStyle("left"),10);var t=parseInt(this.getStyle("top"),10);if(isNaN(l)){l=(p=="relative")?0:this.dom.offsetLeft}if(isNaN(t)){t=(p=="relative")?0:this.dom.offsetTop}return{left:(x-o[0]+l),top:(y-o[1]+t)}},getScroll:function(){var d=this.dom,doc=document;if(d==doc||d==doc.body){var l,t;if(Ext.isIE&&Ext.isStrict){l=doc.documentElement.scrollLeft||(doc.body.scrollLeft||0);t=doc.documentElement.scrollTop||(doc.body.scrollTop||0)}else{l=window.pageXOffset||(doc.body.scrollLeft||0);t=window.pageYOffset||(doc.body.scrollTop||0)}return{left:l,top:t}}else{return{left:d.scrollLeft,top:d.scrollTop}}},getColor:function(attr,defaultValue,prefix){var v=this.getStyle(attr);if(!v||v=="transparent"||v=="inherit"){return defaultValue}var color=typeof prefix=="undefined"?"#":prefix;if(v.substr(0,4)=="rgb("){var rvs=v.slice(4,v.length-1).split(",");for(var i=0;i<3;i++){var h=parseInt(rvs[i]);var s=h.toString(16);if(h<16){s="0"+s}color+=s}}else{if(v.substr(0,1)=="#"){if(v.length==4){for(var i=1;i<4;i++){var c=v.charAt(i);color+=c+c}}else{if(v.length==7){color+=v.substr(1)}}}}return(color.length>5?color.toLowerCase():defaultValue)},boxWrap:function(cls){cls=cls||"x-box";var el=Ext.get(this.insertHtml("beforeBegin",String.format("
"+El.boxMarkup+"
",cls)));el.child("."+cls+"-mc").dom.appendChild(this.dom);return el},getAttributeNS:Ext.isIE?function(ns,name){var d=this.dom;var type=typeof d[ns+":"+name];if(type!="undefined"&&type!="unknown"){return d[ns+":"+name]}return d[name]}:function(ns,name){var d=this.dom;return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)||d.getAttribute(name)||d[name]},getTextWidth:function(text,min,max){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(text,this.dom.innerHTML,true)).width).constrain(min||0,max||1000000)}};var ep=El.prototype;ep.on=ep.addListener;ep.mon=ep.addListener;ep.getUpdateManager=ep.getUpdater;ep.un=ep.removeListener;ep.autoBoxAdjust=true;El.unitPattern=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;El.addUnits=function(v,defaultUnit){if(v===""||v=="auto"){return v}if(v===undefined){return""}if(typeof v=="number"||!El.unitPattern.test(v)){return v+(defaultUnit||"px")}return v};El.boxMarkup="
";El.VISIBILITY=1;El.DISPLAY=2;El.borders={l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};El.paddings={l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};El.margins={l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};El.cache={};var docEl;El.get=function(el){var ex,elm,id;if(!el){return null}if(typeof el=="string"){if(!(elm=document.getElementById(el))){return null}if(ex=El.cache[el]){ex.dom=elm}else{ex=El.cache[el]=new El(elm)}return ex}else{if(el.tagName){if(!(id=el.id)){id=Ext.id(el)}if(ex=El.cache[id]){ex.dom=el}else{ex=El.cache[id]=new El(el)}return ex}else{if(el instanceof El){if(el!=docEl){el.dom=document.getElementById(el.id)||el.dom;El.cache[el.id]=el}return el}else{if(el.isComposite){return el}else{if(Ext.isArray(el)){return El.select(el)}else{if(el==document){if(!docEl){var f=function(){};f.prototype=El.prototype;docEl=new f();docEl.dom=document}return docEl}}}}}}return null};El.uncache=function(el){for(var i=0,a=arguments,len=a.length;i0){F()}else{B.afterFx(D)}})};F.call(this)});return this},pause:function(C){var A=this.getFxEl();var B={};A.queueFx(B,function(){setTimeout(function(){A.afterFx(B)},C*1000)});return this},fadeIn:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.setOpacity(0);this.fixDisplay();this.dom.style.visibility="visible";var C=B.endOpacity||1;arguments.callee.anim=this.fxanim({opacity:{to:C}},B,null,0.5,"easeOut",function(){if(C==1){this.clearOpacity()}A.afterFx(B)})});return this},fadeOut:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){arguments.callee.anim=this.fxanim({opacity:{to:B.endOpacity||0}},B,null,0.5,"easeOut",function(){if(this.visibilityMode==Ext.Element.DISPLAY||B.useDisplay){this.dom.style.display="none"}else{this.dom.style.visibility="hidden"}this.clearOpacity();A.afterFx(B)})});return this},scale:function(A,B,C){this.shift(Ext.apply({},C,{width:A,height:B}));return this},shift:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){var E={},D=B.width,F=B.height,C=B.x,H=B.y,G=B.opacity;if(D!==undefined){E.width={to:this.adjustWidth(D)}}if(F!==undefined){E.height={to:this.adjustHeight(F)}}if(C!==undefined||H!==undefined){E.points={to:[C!==undefined?C:this.getX(),H!==undefined?H:this.getY()]}}if(G!==undefined){E.opacity={to:G}}if(B.xy!==undefined){E.points={to:B.xy}}arguments.callee.anim=this.fxanim(E,B,"motion",0.35,"easeOut",function(){A.afterFx(B)})});return this},ghost:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"b";var H=this.getFxRestore();var E=this.getWidth(),G=this.getHeight();var F=this.dom.style;var J=function(){if(C.useDisplay){B.setDisplayed(false)}else{B.hide()}B.clearOpacity();B.setPositioning(H.pos);F.width=H.width;F.height=H.height;B.afterFx(C)};var D={opacity:{to:0},points:{}},I=D.points;switch(A.toLowerCase()){case"t":I.by=[0,-G];break;case"l":I.by=[-E,0];break;case"r":I.by=[E,0];break;case"b":I.by=[0,G];break;case"tl":I.by=[-E,-G];break;case"bl":I.by=[-E,G];break;case"br":I.by=[E,G];break;case"tr":I.by=[E,-G];break}arguments.callee.anim=this.fxanim(D,C,"motion",0.5,"easeOut",J)});return this},syncFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:true,stopFx:false});return this},sequenceFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:false,stopFx:false});return this},nextFx:function(){var A=this.fxQueue[0];if(A){A.call(this)}},hasActiveFx:function(){return this.fxQueue&&this.fxQueue[0]},stopFx:function(){if(this.hasActiveFx()){var A=this.fxQueue[0];if(A&&A.anim&&A.anim.isAnimated()){this.fxQueue=[A];A.anim.stop(true)}}return this},beforeFx:function(A){if(this.hasActiveFx()&&!A.concurrent){if(A.stopFx){this.stopFx();return true}return false}return true},hasFxBlock:function(){var A=this.fxQueue;return A&&A[0]&&A[0].block},queueFx:function(C,A){if(!this.fxQueue){this.fxQueue=[]}if(!this.hasFxBlock()){Ext.applyIf(C,this.fxDefaults);if(!C.concurrent){var B=this.beforeFx(C);A.block=C.block;this.fxQueue.push(A);if(B){this.nextFx()}}else{A.call(this)}}return this},fxWrap:function(F,D,C){var B;if(!D.wrap||!(B=Ext.get(D.wrap))){var A;if(D.fixPosition){A=this.getXY()}var E=document.createElement("div");E.style.visibility=C;B=Ext.get(this.dom.parentNode.insertBefore(E,this.dom));B.setPositioning(F);if(B.getStyle("position")=="static"){B.position("relative")}this.clearPositioning("auto");B.clip();B.dom.appendChild(this.dom);if(A){B.setXY(A)}}return B},fxUnwrap:function(A,C,B){this.clearPositioning();this.setPositioning(C);if(!B.wrap){A.dom.parentNode.insertBefore(this.dom,A.dom);A.remove()}},getFxRestore:function(){var A=this.dom.style;return{pos:this.getPositioning(),width:A.width,height:A.height}},afterFx:function(A){if(A.afterStyle){this.applyStyles(A.afterStyle)}if(A.afterCls){this.addClass(A.afterCls)}if(A.remove===true){this.remove()}Ext.callback(A.callback,A.scope,[this]);if(!A.concurrent){this.fxQueue.shift();this.nextFx()}},getFxEl:function(){return Ext.get(this.dom)},fxanim:function(D,E,B,F,C,A){B=B||"run";E=E||{};var G=Ext.lib.Anim[B](this.dom,D,(E.duration||F)||0.35,(E.easing||C)||"easeOut",function(){Ext.callback(A,this)},this);E.anim=G;return G}};Ext.Fx.resize=Ext.Fx.scale;Ext.apply(Ext.Element.prototype,Ext.Fx);Ext.CompositeElement=function(A){this.elements=[];this.addElements(A)};Ext.CompositeElement.prototype={isComposite:true,addElements:function(E){if(!E){return this}if(typeof E=="string"){E=Ext.Element.selectorFunction(E)}var D=this.elements;var B=D.length-1;for(var C=0,A=E.length;C"+A.text+""}if(typeof A.scripts!="undefined"){this.loadScripts=A.scripts}if(typeof A.timeout!="undefined"){this.timeout=A.timeout}}this.showLoading();if(!D){this.defaultUrl=B}if(typeof B=="function"){B=B.call(this)}G=G||(F?"POST":"GET");if(G=="GET"){B=this.prepareUrl(B)}var E=Ext.apply(A||{},{url:B,params:(typeof F=="function"&&C)?F.createDelegate(C):F,success:this.processSuccess,failure:this.processFailure,scope:this,callback:undefined,timeout:(this.timeout*1000),argument:{"options":A,"url":B,"form":null,"callback":H,"scope":C||window,"params":F}});this.transaction=Ext.Ajax.request(E)}},formUpdate:function(C,A,B,D){if(this.fireEvent("beforeupdate",this.el,C,A)!==false){if(typeof A=="function"){A=A.call(this)}C=Ext.getDom(C);this.transaction=Ext.Ajax.request({form:C,url:A,success:this.processSuccess,failure:this.processFailure,scope:this,timeout:(this.timeout*1000),argument:{"url":A,"form":C,"callback":D,"reset":B}});this.showLoading.defer(1,this)}},refresh:function(A){if(this.defaultUrl==null){return}this.update(this.defaultUrl,null,A,true)},startAutoRefresh:function(B,C,D,E,A){if(A){this.update(C||this.defaultUrl,D,E,true)}if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId)}this.autoRefreshProcId=setInterval(this.update.createDelegate(this,[C||this.defaultUrl,D,E,true]),B*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return this.autoRefreshProcId?true:false},showLoading:function(){if(this.showLoadIndicator){this.el.update(this.indicatorText)}},prepareUrl:function(B){if(this.disableCaching){var A="_dc="+(new Date().getTime());if(B.indexOf("?")!==-1){B+="&"+A}else{B+="?"+A}}return B},processSuccess:function(A){this.transaction=null;if(A.argument.form&&A.argument.reset){try{A.argument.form.reset()}catch(B){}}if(this.loadScripts){this.renderer.render(this.el,A,this,this.updateComplete.createDelegate(this,[A]))}else{this.renderer.render(this.el,A,this);this.updateComplete(A)}},updateComplete:function(A){this.fireEvent("update",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,true,A,A.argument.options)}},processFailure:function(A){this.transaction=null;this.fireEvent("failure",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,false,A,A.argument.options)}},setRenderer:function(A){this.renderer=A},getRenderer:function(){return this.renderer},setDefaultUrl:function(A){this.defaultUrl=A},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){if(this.transaction){return Ext.Ajax.isLoading(this.transaction)}return false}});Ext.Updater.defaults={timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL||"javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:"
Loading...
"};Ext.Updater.updateElement=function(D,C,E,B){var A=Ext.get(D).getUpdater();Ext.apply(A,B);A.update(C,E,B?B.callback:null)};Ext.Updater.update=Ext.Updater.updateElement;Ext.Updater.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(C,A,B,D){C.update(A.responseText,B.loadScripts,D)}};Ext.UpdateManager=Ext.Updater;Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(B){if(Date.formatFunctions[B]==null){Date.createNewFormat(B)}var A=Date.formatFunctions[B];return this[A]()};Date.prototype.format=Date.prototype.dateFormat;Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function(){return ";var special=false;var ch="";for(var i=0;i 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0))) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() % 12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"u":return"String.leftPad(this.getMilliseconds(), 3, '0') + ";case"O":return"this.getGMTOffset() + ";case"P":return"this.getGMTOffset(true) + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";case"c":for(var F=Date.getFormatCode,G="Y-m-dTH:i:sP",C="",B=0,A=G.length;B 0) {";var regex="";var special=false;var ch="";for(var i=0;i= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0)\n{v = new Date(y, m, d, h, i, s, ms);}\nelse if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{v = new Date(y, m, d, h, i, s);}\nelse if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{v = new Date(y, m, d, h, i);}\nelse if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n{v = new Date(y, m, d, h);}\nelse if (y >= 0 && m >= 0 && d > 0)\n{v = new Date(y, m, d);}\nelse if (y >= 0 && m >= 0)\n{v = new Date(y, m);}\nelse if (y >= 0)\n{v = new Date(y);}\n}return (v && (z || o))?\n (z ? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$","i");eval(code)};Date.formatCodeToRegex=function(G,F){switch(G){case"d":return{g:1,c:"d = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"D":for(var C=[],E=0;E<7;C.push(Date.getShortDayName(E)),++E){}return{g:0,c:null,s:"(?:"+C.join("|")+")"};case"j":return{g:1,c:"d = parseInt(results["+F+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"N":return{g:0,c:null,s:"[1-7]"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"[0-6]"};case"z":return{g:0,c:null,s:"(?:\\d{1,3}"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.getMonthNumber(results["+F+"]), 10);\n",s:"("+Date.monthNames.join("|")+")"};case"m":return{g:1,c:"m = parseInt(results["+F+"], 10) - 1;\n",s:"(\\d{2})"};case"M":for(var C=[],E=0;E<12;C.push(Date.getShortMonthName(E)),++E){}return{g:1,c:"m = parseInt(Date.getMonthNumber(results["+F+"]), 10);\n",s:"("+C.join("|")+")"};case"n":return{g:1,c:"m = parseInt(results["+F+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"(?:\\d{2})"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"o":case"Y":return{g:1,c:"y = parseInt(results["+F+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+F+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+F+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+F+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":return{g:1,c:"h = parseInt(results["+F+"], 10);\n",s:"(\\d{1,2})"};case"h":case"H":return{g:1,c:"h = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"i":return{g:1,c:"i = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"u":return{g:1,c:"ms = parseInt(results["+F+"], 10);\n",s:"(\\d{3})"};case"O":return{g:1,c:["o = results[",F,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);\n","var mn = o.substring(3,5) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""),s:"([+-]\\d{4})"};case"P":return{g:1,c:["o = results[",F,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60);\n","var mn = o.substring(4,6) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""),s:"([+-]\\d{2}:\\d{2})"};case"T":return{g:0,c:null,s:"[A-Z]{1,4}"};case"Z":return{g:1,c:"z = results["+F+"] * 1;\nz = (-43200 <= z && z <= 50400)? z : null;\n",s:"([+-]?\\d{1,5})"};case"c":var H=Date.formatCodeToRegex,D=[];var A=[H("Y",1),H("m",2),H("d",3),H("h",4),H("i",5),H("s",6),H("P",7)];for(var E=0,B=A.length;E0?"-":"+")+String.leftPad(Math.abs(Math.floor(this.getTimezoneOffset()/60)),2,"0")+(A?":":"")+String.leftPad(this.getTimezoneOffset()%60,2,"0")};Date.prototype.getDayOfYear=function(){var A=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var B=0;B28){A=Math.min(A,this.getFirstDateOfMonth().add("mo",C).getLastDateOfMonth().getDate())}D.setDate(A);D.setMonth(this.getMonth()+C);break;case Date.YEAR:D.setFullYear(this.getFullYear()+C);break}return D};Date.prototype.between=function(C,A){var B=this.getTime();return C.getTime()<=B&&B<=A.getTime()};Ext.util.DelayedTask=function(E,D,A){var G=null,F,B;var C=function(){var H=new Date().getTime();if(H-B>=F){clearInterval(G);G=null;E.apply(D,A||[])}};this.delay=function(I,K,J,H){if(G&&I!=F){this.cancel()}F=I;B=new Date().getTime();E=K||E;D=J||D;A=H||A;if(!G){G=setInterval(C,F)}};this.cancel=function(){if(G){clearInterval(G);G=null}}};Ext.util.TaskRunner=function(E){E=E||10;var F=[],A=[];var B=0;var G=false;var D=function(){G=false;clearInterval(B);B=0};var H=function(){if(!G){G=true;B=setInterval(I,E)}};var C=function(J){A.push(J);if(J.onStop){J.onStop.apply(J.scope||J)}};var I=function(){if(A.length>0){for(var O=0,K=A.length;O1||Ext.isArray(E)){var B=arguments.length>1?arguments:E;for(var D=0,A=B.length;D=this.length){return this.add(B,C)}this.length++;this.items.splice(A,0,C);if(typeof B!="undefined"&&B!=null){this.map[B]=C}this.keys.splice(A,0,B);this.fireEvent("add",A,C,B);return C},remove:function(A){return this.removeAt(this.indexOf(A))},removeAt:function(A){if(A=0){this.length--;var C=this.items[A];this.items.splice(A,1);var B=this.keys[A];if(typeof B!="undefined"){delete this.map[B]}this.keys.splice(A,1);this.fireEvent("remove",C,B);return C}return false},removeKey:function(A){return this.removeAt(this.indexOfKey(A))},getCount:function(){return this.length},indexOf:function(A){return this.items.indexOf(A)},indexOfKey:function(A){return this.keys.indexOf(A)},item:function(A){var B=typeof this.map[A]!="undefined"?this.map[A]:this.items[A];return typeof B!="function"||this.allowFunctions?B:null},itemAt:function(A){return this.items[A]},key:function(A){return this.map[A]},contains:function(A){return this.indexOf(A)!=-1},containsKey:function(A){return typeof this.map[A]!="undefined"},clear:function(){this.length=0;this.items=[];this.keys=[];this.map={};this.fireEvent("clear")},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},_sort:function(I,A,H){var C=String(A).toUpperCase()=="DESC"?-1:1;H=H||function(K,J){return K-J};var G=[],B=this.keys,F=this.items;for(var D=0,E=F.length;D=A;C--){D[D.length]=B[C]}}return D},filter:function(C,B,D,A){if(Ext.isEmpty(B,false)){return this.clone()}B=this.createValueMatcher(B,D,A);return this.filterBy(function(E){return E&&B.test(E[C])})},filterBy:function(F,E){var G=new Ext.util.MixedCollection();G.getKey=this.getKey;var B=this.keys,D=this.items;for(var C=0,A=D.length;C0){for(var C=0;Clen){return value.substr(0,len-3)+"..."}return value},undef:function(value){return value!==undefined?value:""},defaultValue:function(value,defaultValue){return value!==undefined&&value!==""?value:defaultValue},htmlEncode:function(value){return!value?value:String(value).replace(/&/g,"&").replace(/>/g,">").replace(/").replace(/</g,"<").replace(/"/g,"\"")},trim:function(value){return String(value).replace(trimRe,"")},substr:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},capitalize:function(value){return!value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);args.unshift(value);return eval(fn).apply(window,args)}else{return eval(fn).call(window,value)}},usMoney:function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);v=String(v);var ps=v.split(".");var whole=ps[0];var sub=ps[1]?"."+ps[1]:".00";var r=/(\d+)(\d{3})/;while(r.test(whole)){whole=whole.replace(r,"$1,$2")}v=whole+sub;if(v.charAt(0)=="-"){return"-"+v.substr(1)}return""+v},date:function(v,format){if(!v){return""}if(!Ext.isDate(v)){v=new Date(Date.parse(v))}return v.dateFormat(format||"m/d/Y")},dateRenderer:function(format){return function(v){return Ext.util.Format.date(v,format)}},stripTagsRE:/<\/?[^>]+>/gi,stripTags:function(v){return!v?v:String(v).replace(this.stripTagsRE,"")},stripScriptsRe:/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,stripScripts:function(v){return!v?v:String(v).replace(this.stripScriptsRe,"")},fileSize:function(size){if(size<1024){return size+" bytes"}else{if(size<1048576){return(Math.round(((size*10)/1024))/10)+" KB"}else{return(Math.round(((size*10)/1048576))/10)+" MB"}}},math:function(){var fns={};return function(v,a){if(!fns[a]){fns[a]=new Function("v","return v "+a+";")}return fns[a](v)}}()}}();Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var P=this.html;P=["",P,""].join("");var O=/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;var N=/^]*?for="(.*?)"/;var L=/^]*?if="(.*?)"/;var J=/^]*?exec="(.*?)"/;var C,B=0;var G=[];while(C=P.match(O)){var M=C[0].match(N);var K=C[0].match(L);var I=C[0].match(J);var E=null,H=null,D=null;var A=M&&M[1]?M[1]:"";if(K){E=K&&K[1]?K[1]:null;if(E){H=new Function("values","parent","xindex","xcount","with(values){ return "+(Ext.util.Format.htmlDecode(E))+"; }")}}if(I){E=I&&I[1]?I[1]:null;if(E){D=new Function("values","parent","xindex","xcount","with(values){ "+(Ext.util.Format.htmlDecode(E))+"; }")}}if(A){switch(A){case".":A=new Function("values","parent","with(values){ return values; }");break;case"..":A=new Function("values","parent","with(values){ return parent; }");break;default:A=new Function("values","parent","with(values){ return "+A+"; }")}}G.push({id:B,target:A,exec:D,test:H,body:C[1]||""});P=P.replace(C[0],"{xtpl"+B+"}");++B}for(var F=G.length-1;F>=0;--F){this.compileTpl(G[F])}this.master=G[G.length-1];this.tpls=G};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(A,H,G,D,C){var J=this.tpls[A];if(J.test&&!J.test.call(this,H,G,D,C)){return""}if(J.exec&&J.exec.call(this,H,G,D,C)){return""}var I=J.target?J.target.call(this,H,G):H;G=J.target?H:G;if(J.target&&Ext.isArray(I)){var B=[];for(var E=0,F=I.length;E=0;--E){D[H[E].selectorText]=H[E]}}catch(G){}},getRules:function(F){if(D==null||F){D={};var H=C.styleSheets;for(var G=0,E=H.length;G=37&&A<=40){C.stopEvent()}},relay:function(C){var A=C.getKey();var B=this.keyToHandler[A];if(B&&this[B]){if(this.doRelay(C,this[B],B)!==true){C[this.defaultEventAction]()}}},doRelay:function(C,B,A){return B.call(this.scope||this,C)},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab"},enable:function(){if(this.disabled){if(this.forceKeyDown||Ext.isIE||Ext.isAir){this.el.on("keydown",this.relay,this)}else{this.el.on("keydown",this.prepareEvent,this);this.el.on("keypress",this.relay,this)}this.disabled=false}},disable:function(){if(!this.disabled){if(this.forceKeyDown||Ext.isIE||Ext.isAir){this.el.un("keydown",this.relay)}else{this.el.un("keydown",this.prepareEvent);this.el.un("keypress",this.relay)}this.disabled=true}}};Ext.KeyMap=function(C,B,A){this.el=Ext.get(C);this.eventName=A||"keydown";this.bindings=[];if(B){this.addBinding(B)}this.enable()};Ext.KeyMap.prototype={stopEvent:false,addBinding:function(D){if(Ext.isArray(D)){for(var F=0,H=D.length;F=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true}}this.xTicks.sort(this.DDM.numericSort)},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true}}this.yTicks.sort(this.DDM.numericSort)},setXConstraint:function(E,D,C){this.leftConstraint=E;this.rightConstraint=D;this.minX=this.initPageX-E;this.maxX=this.initPageX+D;if(C){this.setXTicks(this.initPageX,C)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(C,E,D){this.topConstraint=C;this.bottomConstraint=E;this.minY=this.initPageY-C;this.maxY=this.initPageY+E;if(D){this.setYTicks(this.initPageY,D)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(I,F){if(!F){return I}else{if(F[0]>=I){return F[0]}else{for(var D=0,C=F.length;D=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E]}}return F[F.length-1]}}},toString:function(){return("DragDrop "+this.id)}}})();if(!Ext.dd.DragDropMgr){Ext.dd.DragDropMgr=function(){var A=Ext.EventManager;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(D,C){for(var E in this.ids){for(var B in this.ids[E]){var F=this.ids[E][B];if(!this.isTypeOfDD(F)){continue}F[D].apply(F,C)}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true)},_onResize:function(B){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(C,B){if(!this.initialized){this.init()}if(!this.ids[B]){this.ids[B]={}}this.ids[B][C.id]=C},removeDDFromGroup:function(D,B){if(!this.ids[B]){this.ids[B]={}}var C=this.ids[B];if(C&&C[D.id]){delete C[D.id]}},_remove:function(C){for(var B in C.groups){if(B&&this.ids[B][C.id]){delete this.ids[B][C.id]}}delete this.handleIds[C.id]},regHandle:function(C,B){if(!this.handleIds[C]){this.handleIds[C]={}}this.handleIds[C][B]=B},isDragDrop:function(B){return(this.getDDById(B))?true:false},getRelated:function(F,C){var E=[];for(var D in F.groups){for(j in this.ids[D]){var B=this.ids[D][j];if(!this.isTypeOfDD(B)){continue}if(!C||B.isTarget){E[E.length]=B}}}return E},isLegalTarget:function(F,E){var C=this.getRelated(F,true);for(var D=0,B=C.length;Dthis.clickPixelThresh||B>this.clickPixelThresh){this.startDrag(this.startX,this.startY)}}if(this.dragThreshMet){this.dragCurrent.b4Drag(D);this.dragCurrent.onDrag(D);if(!this.dragCurrent.moveOnly){this.fireEvents(D,false)}}this.stopEvent(D);return true},fireEvents:function(K,L){var N=this.dragCurrent;if(!N||N.isLocked()){return}var O=K.getPoint();var B=[];var E=[];var I=[];var G=[];var D=[];for(var F in this.dragOvers){var C=this.dragOvers[F];if(!this.isTypeOfDD(C)){continue}if(!this.isOverTarget(O,C,this.mode)){E.push(C)}B[F]=true;delete this.dragOvers[F]}for(var M in N.groups){if("string"!=typeof M){continue}for(F in this.ids[M]){var H=this.ids[M][F];if(!this.isTypeOfDD(H)){continue}if(H.isTarget&&!H.isLocked()&&H!=N){if(this.isOverTarget(O,H,this.mode)){if(L){G.push(H)}else{if(!B[H.id]){D.push(H)}else{I.push(H)}this.dragOvers[H.id]=H}}}}}if(this.mode){if(E.length){N.b4DragOut(K,E);N.onDragOut(K,E)}if(D.length){N.onDragEnter(K,D)}if(I.length){N.b4DragOver(K,I);N.onDragOver(K,I)}if(G.length){N.b4DragDrop(K,G);N.onDragDrop(K,G)}}else{var J=0;for(F=0,J=E.length;F2000){}else{setTimeout(B._addListeners,10);if(document&&document.body){B._timeoutCount+=1}}}},handleWasClicked:function(B,D){if(this.isHandle(D,B.id)){return true}else{var C=B.parentNode;while(C){if(this.isHandle(D,C.id)){return true}else{C=C.parentNode}}}return false}}}();Ext.dd.DDM=Ext.dd.DragDropMgr;Ext.dd.DDM._addListeners()}Ext.dd.DD=function(C,A,B){if(C){this.init(C,A,B)}};Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D)},setDelta:function(B,A){this.deltaX=B;this.deltaY=A},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B)},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);var B=C.dom?C:Ext.fly(C,"_dd");if(!this.deltaSetXY){var H=[E.x,E.y];B.setXY(H);var D=B.getLeft(true);var A=B.getTop(true);this.deltaSetXY=[D-E.x,A-E.y]}else{B.setLeftTop(E.x+this.deltaSetXY[0],E.y+this.deltaSetXY[1])}this.cachePosition(E.x,E.y);this.autoScroll(E.x,E.y,C.offsetHeight,C.offsetWidth);return E},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A}else{var C=Ext.lib.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1]}},autoScroll:function(J,I,E,K){if(this.scroll){var L=Ext.lib.Dom.getViewHeight();var B=Ext.lib.Dom.getViewWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G0&&I-NB&&F0&&J-Dthis.maxX){A=this.maxX}}if(this.constrainY){if(Dthis.maxY){D=this.maxY}}A=this.getTick(A,this.xTicks);D=this.getTick(D,this.yTicks);return{x:A,y:D}},applyConfig:function(){Ext.dd.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false)},b4MouseDown:function(A){this.autoOffset(A.getPageX(),A.getPageY())},b4Drag:function(A){this.setDragElPos(A.getPageX(),A.getPageY())},toString:function(){return("DD "+this.id)}});Ext.dd.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame()}};Ext.dd.DDProxy.dragElId="ygddfdiv";Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this;var A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame()},50);return}var D=this.getDragEl();if(!D){D=document.createElement("div");D.id=this.dragElId;var C=D.style;C.position="absolute";C.visibility="hidden";C.cursor="move";C.border="2px solid #aaa";C.zIndex=999;A.insertBefore(D,A.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){Ext.dd.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2))}this.setDragElPos(E,D);Ext.fly(A).show()},_resizeProxy:function(){if(this.resizeFrame){var A=this.getEl();Ext.fly(this.getDragEl()).setSize(A.offsetWidth,A.offsetHeight)}},b4MouseDown:function(B){var A=B.getPageX();var C=B.getPageY();this.autoOffset(A,C);this.setDragElPos(A,C)},b4StartDrag:function(A,B){this.showFrame(A,B)},b4EndDrag:function(A){Ext.fly(this.getDragEl()).hide()},endDrag:function(C){var B=this.getEl();var A=this.getDragEl();A.style.visibility="";this.beforeMove();B.style.visibility="hidden";Ext.dd.DDM.moveToEl(B,A);A.style.visibility="hidden";B.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}});Ext.dd.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B)}};Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{toString:function(){return("DDTarget "+this.id)}});Ext.dd.DragTracker=function(A){Ext.apply(this,A);this.addEvents("mousedown","mouseup","mousemove","dragstart","dragend","drag");this.dragRegion=new Ext.lib.Region(0,0,0,0);if(this.el){this.initEl(this.el)}};Ext.extend(Ext.dd.DragTracker,Ext.util.Observable,{active:false,tolerance:5,autoStart:false,initEl:function(A){this.el=Ext.get(A);A.on("mousedown",this.onMouseDown,this,this.delegate?{delegate:this.delegate}:undefined)},destroy:function(){this.el.un("mousedown",this.onMouseDown,this)},onMouseDown:function(C,B){if(this.fireEvent("mousedown",this,C)!==false&&this.onBeforeStart(C)!==false){this.startXY=this.lastXY=C.getXY();this.dragTarget=this.delegate?B:this.el.dom;C.preventDefault();var A=Ext.getDoc();A.on("mouseup",this.onMouseUp,this);A.on("mousemove",this.onMouseMove,this);A.on("selectstart",this.stopSelect,this);if(this.autoStart){this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this)}}},onMouseMove:function(D,C){D.preventDefault();var B=D.getXY(),A=this.startXY;this.lastXY=B;if(!this.active){if(Math.abs(A[0]-B[0])>this.tolerance||Math.abs(A[1]-B[1])>this.tolerance){this.triggerStart()}else{return}}this.fireEvent("mousemove",this,D);this.onDrag(D);this.fireEvent("drag",this,D)},onMouseUp:function(B){var A=Ext.getDoc();A.un("mousemove",this.onMouseMove,this);A.un("mouseup",this.onMouseUp,this);A.un("selectstart",this.stopSelect,this);B.preventDefault();this.clearStart();this.active=false;delete this.elRegion;this.fireEvent("mouseup",this,B);this.onEnd(B);this.fireEvent("dragend",this,B)},triggerStart:function(A){this.clearStart();this.active=true;this.onStart(this.startXY);this.fireEvent("dragstart",this,this.startXY)},clearStart:function(){if(this.timer){clearTimeout(this.timer);delete this.timer}},stopSelect:function(A){A.stopEvent();return false},onBeforeStart:function(A){},onStart:function(A){},onDrag:function(A){},onEnd:function(A){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getXY:function(A){return A?this.constrainModes[A].call(this,this.lastXY):this.lastXY},getOffset:function(C){var B=this.getXY(C);var A=this.startXY;return[A[0]-B[0],A[1]-B[1]]},constrainModes:{"point":function(B){if(!this.elRegion){this.elRegion=this.getDragCt().getRegion()}var A=this.dragRegion;A.left=B[0];A.top=B[1];A.right=B[0];A.bottom=B[1];A.constrainTo(this.elRegion);return[A.left,A.top]}}});Ext.dd.ScrollManager=function(){var C=Ext.dd.DragDropMgr;var E={};var B=null;var H={};var G=function(K){B=null;A()};var I=function(){if(C.dragCurrent){C.refreshCache(C.dragCurrent.groups)}};var D=function(){if(C.dragCurrent){var K=Ext.dd.ScrollManager;var L=H.el.ddScrollConfig?H.el.ddScrollConfig.increment:K.increment;if(!K.animate){if(H.el.scroll(H.dir,L)){I()}}else{H.el.scroll(H.dir,L,true,K.animDuration,I)}}};var A=function(){if(H.id){clearInterval(H.id)}H.id=0;H.el=null;H.dir=""};var F=function(L,K){A();H.el=L;H.dir=K;H.id=setInterval(D,Ext.dd.ScrollManager.frequency)};var J=function(N,P){if(P||!C.dragCurrent){return}var Q=Ext.dd.ScrollManager;if(!B||B!=C.dragCurrent){B=C.dragCurrent;Q.refreshCache()}var R=Ext.lib.Event.getXY(N);var S=new Ext.lib.Point(R[0],R[1]);for(var L in E){var M=E[L],K=M._region;var O=M.ddScrollConfig?M.ddScrollConfig:Q;if(K&&K.contains(S)&&M.isScrollable()){if(K.bottom-S.y<=O.vthresh){if(H.el!=M){F(M,"down")}return}else{if(K.right-S.x<=O.hthresh){if(H.el!=M){F(M,"left")}return}else{if(S.y-K.top<=O.vthresh){if(H.el!=M){F(M,"up")}return}else{if(S.x-K.left<=O.hthresh){if(H.el!=M){F(M,"right")}return}}}}}}A()};C.fireEvents=C.fireEvents.createSequence(J,C);C.stopDrag=C.stopDrag.createSequence(G,C);return{register:function(M){if(Ext.isArray(M)){for(var L=0,K=M.length;L]+>/gi,asText:function(A){return String(A).replace(this.stripTagsRE,"")},asUCText:function(A){return String(A).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(A){return String(A).toUpperCase()},asDate:function(A){if(!A){return 0}if(Ext.isDate(A)){return A.getTime()}return Date.parse(String(A))},asFloat:function(A){var B=parseFloat(String(A).replace(/,/g,""));if(isNaN(B)){B=0}return B},asInt:function(A){var B=parseInt(String(A).replace(/,/g,""));if(isNaN(B)){B=0}return B}};Ext.data.Record=function(A,B){this.id=(B||B===0)?B:++Ext.data.Record.AUTO_ID;this.data=A};Ext.data.Record.create=function(E){var C=Ext.extend(Ext.data.Record,{});var D=C.prototype;D.fields=new Ext.util.MixedCollection(false,function(F){return F.name});for(var B=0,A=E.length;BG?1:(H0},appendChild:function(E){var F=false;if(Ext.isArray(E)){F=E}else{if(arguments.length>1){F=arguments}}if(F){for(var D=0,A=F.length;D0){var F=D?function(){E.apply(D,arguments)}:E;C.sort(F);for(var B=0;BG+L.left){H=G-I-this.shadowOffset;E=true}if((F+D)>C+L.top){F=C-D-this.shadowOffset;E=true}if(H=J){F=J-D-5}}K=[H,F];this.storeXY(K);A.setXY.call(this,K);this.sync()}}},isVisible:function(){return this.visible},showAction:function(){this.visible=true;if(this.useDisplay===true){this.setDisplayed("")}else{if(this.lastXY){A.setXY.call(this,this.lastXY)}else{if(this.lastLT){A.setLeftTop.call(this,this.lastLT[0],this.lastLT[1])}}}},hideAction:function(){this.visible=false;if(this.useDisplay===true){this.setDisplayed(false)}else{this.setLeftTop(-10000,-10000)}},setVisible:function(E,D,G,H,F){if(E){this.showAction()}if(D&&E){var C=function(){this.sync(true);if(H){H()}}.createDelegate(this);A.setVisible.call(this,true,true,G,C,F)}else{if(!E){this.hideUnders(true)}var C=H;if(D){C=function(){this.hideAction();if(H){H()}}.createDelegate(this)}A.setVisible.call(this,E,D,G,C,F);if(E){this.sync(true)}else{if(!D){this.hideAction()}}}},storeXY:function(C){delete this.lastLT;this.lastXY=C},storeLeftTop:function(D,C){delete this.lastXY;this.lastLT=[D,C]},beforeFx:function(){this.beforeAction();return Ext.Layer.superclass.beforeFx.apply(this,arguments)},afterFx:function(){Ext.Layer.superclass.afterFx.apply(this,arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(C){this.storeLeftTop(C,this.getTop(true));A.setLeft.apply(this,arguments);this.sync()},setTop:function(C){this.storeLeftTop(this.getLeft(true),C);A.setTop.apply(this,arguments);this.sync()},setLeftTop:function(D,C){this.storeLeftTop(D,C);A.setLeftTop.apply(this,arguments);this.sync()},setXY:function(F,D,G,H,E){this.fixDisplay();this.beforeAction();this.storeXY(F);var C=this.createCB(H);A.setXY.call(this,F,D,G,C,E);if(!D){C()}},createCB:function(D){var C=this;return function(){C.constrainXY();C.sync(true);if(D){D()}}},setX:function(C,D,F,G,E){this.setXY([C,this.getY()],D,F,G,E)},setY:function(G,C,E,F,D){this.setXY([this.getX(),G],C,E,F,D)},setSize:function(E,F,D,H,I,G){this.beforeAction();var C=this.createCB(I);A.setSize.call(this,E,F,D,H,C,G);if(!D){C()}},setWidth:function(E,D,G,H,F){this.beforeAction();var C=this.createCB(H);A.setWidth.call(this,E,D,G,C,F);if(!D){C()}},setHeight:function(E,D,G,H,F){this.beforeAction();var C=this.createCB(H);A.setHeight.call(this,E,D,G,C,F);if(!D){C()}},setBounds:function(J,H,K,D,I,F,G,E){this.beforeAction();var C=this.createCB(G);if(!I){this.storeXY([J,H]);A.setXY.call(this,[J,H]);A.setSize.call(this,K,D,I,F,C,E);C()}else{A.setBounds.call(this,J,H,K,D,I,F,C,E)}return this},setZIndex:function(C){this.zindex=C;this.setStyle("z-index",C+2);if(this.shadow){this.shadow.setZIndex(C+1)}if(this.shim){this.shim.setStyle("z-index",C)}}})})();Ext.Shadow=function(C){Ext.apply(this,C);if(typeof this.mode!="string"){this.mode=this.defaultMode}var D=this.offset,B={h:0};var A=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":B.w=0;B.l=B.t=D;B.t-=1;if(Ext.isIE){B.l-=this.offset+A;B.t-=this.offset+A;B.w-=A;B.h-=A;B.t+=1}break;case"sides":B.w=(D*2);B.l=-D;B.t=D-1;if(Ext.isIE){B.l-=(this.offset-A);B.t-=this.offset+A;B.l+=1;B.w-=(this.offset-A)*2;B.w-=A+1;B.h-=1}break;case"frame":B.w=B.h=(D*2);B.l=B.t=-D;B.t+=1;B.h-=2;if(Ext.isIE){B.l-=(this.offset-A);B.t-=(this.offset-A);B.l+=1;B.w-=(this.offset+A+1);B.h-=(this.offset+A);B.h+=1}break}this.adjusts=B};Ext.Shadow.prototype={offset:4,defaultMode:"drop",show:function(A){A=Ext.get(A);if(!this.el){this.el=Ext.Shadow.Pool.pull();if(this.el.dom.nextSibling!=A.dom){this.el.insertBefore(A)}}this.el.setStyle("z-index",this.zIndex||parseInt(A.getStyle("z-index"),10)-1);if(Ext.isIE){this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")"}this.realign(A.getLeft(true),A.getTop(true),A.getWidth(),A.getHeight());this.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(A,M,L,D){if(!this.el){return}var I=this.adjusts,G=this.el.dom,N=G.style;var E=0;N.left=(A+I.l)+"px";N.top=(M+I.t)+"px";var K=(L+I.w),C=(D+I.h),F=K+"px",J=C+"px";if(N.width!=F||N.height!=J){N.width=F;N.height=J;if(!Ext.isIE){var H=G.childNodes;var B=Math.max(0,(K-12))+"px";H[0].childNodes[1].style.width=B;H[1].childNodes[1].style.width=B;H[2].childNodes[1].style.width=B;H[1].style.height=Math.max(0,(C-12))+"px"}}},hide:function(){if(this.el){this.el.dom.style.display="none";Ext.Shadow.Pool.push(this.el);delete this.el}},setZIndex:function(A){this.zIndex=A;if(this.el){this.el.setStyle("z-index",A)}}};Ext.Shadow.Pool=function(){var B=[];var A=Ext.isIE?"
":"
";return{pull:function(){var C=B.shift();if(!C){C=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,A));C.autoBoxAdjust=false}return C},push:function(C){B.push(C)}}}();Ext.BoxComponent=Ext.extend(Ext.Component,{initComponent:function(){Ext.BoxComponent.superclass.initComponent.call(this);this.addEvents("resize","move")},boxReady:false,deferHeight:false,setSize:function(B,D){if(typeof B=="object"){D=B.height;B=B.width}if(!this.boxReady){this.width=B;this.height=D;return this}if(this.lastSize&&this.lastSize.width==B&&this.lastSize.height==D){return this}this.lastSize={width:B,height:D};var C=this.adjustSize(B,D);var F=C.width,A=C.height;if(F!==undefined||A!==undefined){var E=this.getResizeEl();if(!this.deferHeight&&F!==undefined&&A!==undefined){E.setSize(F,A)}else{if(!this.deferHeight&&A!==undefined){E.setHeight(A)}else{if(F!==undefined){E.setWidth(F)}}}this.onResize(F,A,B,D);this.fireEvent("resize",this,F,A,B,D)}return this},setWidth:function(A){return this.setSize(A)},setHeight:function(A){return this.setSize(undefined,A)},getSize:function(){return this.el.getSize()},getPosition:function(A){if(A===true){return[this.el.getLeft(true),this.el.getTop(true)]}return this.xy||this.el.getXY()},getBox:function(A){var B=this.el.getSize();if(A===true){B.x=this.el.getLeft(true);B.y=this.el.getTop(true)}else{var C=this.xy||this.el.getXY();B.x=C[0];B.y=C[1]}return B},updateBox:function(A){this.setSize(A.width,A.height);this.setPagePosition(A.x,A.y);return this},getResizeEl:function(){return this.resizeEl||this.el},getPositionEl:function(){return this.positionEl||this.el},setPosition:function(A,F){if(A&&typeof A[1]=="number"){F=A[1];A=A[0]}this.x=A;this.y=F;if(!this.boxReady){return this}var B=this.adjustPosition(A,F);var E=B.x,D=B.y;var C=this.getPositionEl();if(E!==undefined||D!==undefined){if(E!==undefined&&D!==undefined){C.setLeftTop(E,D)}else{if(E!==undefined){C.setLeft(E)}else{if(D!==undefined){C.setTop(D)}}}this.onPosition(E,D);this.fireEvent("move",this,E,D)}return this},setPagePosition:function(A,C){if(A&&typeof A[1]=="number"){C=A[1];A=A[0]}this.pageX=A;this.pageY=C;if(!this.boxReady){return}if(A===undefined||C===undefined){return}var B=this.el.translatePoints(A,C);this.setPosition(B.left,B.top);return this},onRender:function(B,A){Ext.BoxComponent.superclass.onRender.call(this,B,A);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl)}if(this.positionEl){this.positionEl=Ext.get(this.positionEl)}},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);this.boxReady=true;this.setSize(this.width,this.height);if(this.x||this.y){this.setPosition(this.x,this.y)}else{if(this.pageX||this.pageY){this.setPagePosition(this.pageX,this.pageY)}}},syncSize:function(){delete this.lastSize;this.setSize(this.autoWidth?undefined:this.el.getWidth(),this.autoHeight?undefined:this.el.getHeight());return this},onResize:function(D,B,A,C){},onPosition:function(A,B){},adjustSize:function(A,B){if(this.autoWidth){A="auto"}if(this.autoHeight){B="auto"}return{width:A,height:B}},adjustPosition:function(A,B){return{x:A,y:B}}});Ext.reg("box",Ext.BoxComponent);Ext.SplitBar=function(C,E,B,D,A){this.el=Ext.get(C,true);this.el.dom.unselectable="on";this.resizingEl=Ext.get(E,true);this.orientation=B||Ext.SplitBar.HORIZONTAL;this.minSize=0;this.maxSize=2000;this.animate=false;this.useShim=false;this.shim=null;if(!A){this.proxy=Ext.SplitBar.createProxy(this.orientation)}else{this.proxy=Ext.get(A).dom}this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{dragElId:this.proxy.id});this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);this.dragSpecs={};this.adapter=new Ext.SplitBar.BasicLayoutAdapter();this.adapter.init(this);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.placement=D||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);this.el.addClass("x-splitbar-h")}else{this.placement=D||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);this.el.addClass("x-splitbar-v")}this.addEvents("resize","moved","beforeresize","beforeapply");Ext.SplitBar.superclass.constructor.call(this)};Ext.extend(Ext.SplitBar,Ext.util.Observable,{onStartProxyDrag:function(A,E){this.fireEvent("beforeresize",this);this.overlay=Ext.DomHelper.append(document.body,{cls:"x-drag-overlay",html:" "},true);this.overlay.unselectable();this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();Ext.get(this.proxy).setDisplayed("block");var C=this.adapter.getElementSize(this);this.activeMinSize=this.getMinimumSize();this.activeMaxSize=this.getMaximumSize();var D=C-this.activeMinSize;var B=Math.max(this.activeMaxSize-C,0);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.dd.resetConstraints();this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?D:B,this.placement==Ext.SplitBar.LEFT?B:D);this.dd.setYConstraint(0,0)}else{this.dd.resetConstraints();this.dd.setXConstraint(0,0);this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?D:B,this.placement==Ext.SplitBar.TOP?B:D)}this.dragSpecs.startSize=C;this.dragSpecs.startPoint=[A,E];Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,A,E)},onEndProxyDrag:function(C){Ext.get(this.proxy).setDisplayed(false);var B=Ext.lib.Event.getXY(C);if(this.overlay){this.overlay.remove();delete this.overlay}var A;if(this.orientation==Ext.SplitBar.HORIZONTAL){A=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.LEFT?B[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-B[0])}else{A=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.TOP?B[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-B[1])}A=Math.min(Math.max(A,this.activeMinSize),this.activeMaxSize);if(A!=this.dragSpecs.startSize){if(this.fireEvent("beforeapply",this,A)!==false){this.adapter.setElementSize(this,A);this.fireEvent("moved",this,A);this.fireEvent("resize",this,A)}}},getAdapter:function(){return this.adapter},setAdapter:function(A){this.adapter=A;this.adapter.init(this)},getMinimumSize:function(){return this.minSize},setMinimumSize:function(A){this.minSize=A},getMaximumSize:function(){return this.maxSize},setMaximumSize:function(A){this.maxSize=A},setCurrentSize:function(B){var A=this.animate;this.animate=false;this.adapter.setElementSize(this,B);this.animate=A},destroy:function(A){if(this.shim){this.shim.remove()}this.dd.unreg();Ext.removeNode(this.proxy);if(A){this.el.remove()}}});Ext.SplitBar.createProxy=function(B){var C=new Ext.Element(document.createElement("div"));C.unselectable();var A="x-splitbar-proxy";C.addClass(A+" "+(B==Ext.SplitBar.HORIZONTAL?A+"-h":A+"-v"));document.body.appendChild(C.dom);return C.dom};Ext.SplitBar.BasicLayoutAdapter=function(){};Ext.SplitBar.BasicLayoutAdapter.prototype={init:function(A){},getElementSize:function(A){if(A.orientation==Ext.SplitBar.HORIZONTAL){return A.resizingEl.getWidth()}else{return A.resizingEl.getHeight()}},setElementSize:function(B,A,C){if(B.orientation==Ext.SplitBar.HORIZONTAL){if(!B.animate){B.resizingEl.setWidth(A);if(C){C(B,A)}}else{B.resizingEl.setWidth(A,true,0.1,C,"easeOut")}}else{if(!B.animate){B.resizingEl.setHeight(A);if(C){C(B,A)}}else{B.resizingEl.setHeight(A,true,0.1,C,"easeOut")}}}};Ext.SplitBar.AbsoluteLayoutAdapter=function(A){this.basic=new Ext.SplitBar.BasicLayoutAdapter();this.container=Ext.get(A)};Ext.SplitBar.AbsoluteLayoutAdapter.prototype={init:function(A){this.basic.init(A)},getElementSize:function(A){return this.basic.getElementSize(A)},setElementSize:function(B,A,C){this.basic.setElementSize(B,A,this.moveSplitter.createDelegate(this,[B]))},moveSplitter:function(A){var B=Ext.SplitBar;switch(A.placement){case B.LEFT:A.el.setX(A.resizingEl.getRight());break;case B.RIGHT:A.el.setStyle("right",(this.container.getWidth()-A.resizingEl.getLeft())+"px");break;case B.TOP:A.el.setY(A.resizingEl.getBottom());break;case B.BOTTOM:A.el.setY(A.resizingEl.getTop()-A.el.getHeight());break}}};Ext.SplitBar.VERTICAL=1;Ext.SplitBar.HORIZONTAL=2;Ext.SplitBar.LEFT=1;Ext.SplitBar.RIGHT=2;Ext.SplitBar.TOP=3;Ext.SplitBar.BOTTOM=4;Ext.Container=Ext.extend(Ext.BoxComponent,{autoDestroy:true,defaultType:"panel",initComponent:function(){Ext.Container.superclass.initComponent.call(this);this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");var A=this.items;if(A){delete this.items;if(Ext.isArray(A)){this.add.apply(this,A)}else{this.add(A)}}},initItems:function(){if(!this.items){this.items=new Ext.util.MixedCollection(false,this.getComponentId);this.getLayout()}},setLayout:function(A){if(this.layout&&this.layout!=A){this.layout.setContainer(null)}this.initItems();this.layout=A;A.setContainer(this)},render:function(){Ext.Container.superclass.render.apply(this,arguments);if(this.layout){if(typeof this.layout=="string"){this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)}this.setLayout(this.layout);if(this.activeItem!==undefined){var A=this.activeItem;delete this.activeItem;this.layout.setActiveItem(A);return}}if(!this.ownerCt){this.doLayout()}if(this.monitorResize===true){Ext.EventManager.onWindowResize(this.doLayout,this,[false])}},getLayoutTarget:function(){return this.el},getComponentId:function(A){return A.itemId||A.id},add:function(C){if(!this.items){this.initItems()}var B=arguments,A=B.length;if(A>1){for(var D=0;D2){for(var E=A-1;E>=1;--E){this.insert(D,B[E])}return}var F=this.lookupComponent(this.applyDefaults(C));if(F.ownerCt==this&&this.items.indexOf(F)0){B.setSize(A)}}});Ext.Container.LAYOUTS["fit"]=Ext.layout.FitLayout;Ext.layout.CardLayout=Ext.extend(Ext.layout.FitLayout,{deferredRender:false,renderHidden:true,setActiveItem:function(A){A=this.container.getComponent(A);if(this.activeItem!=A){if(this.activeItem){this.activeItem.hide()}this.activeItem=A;A.show();this.layout()}},renderAll:function(A,B){if(this.deferredRender){this.renderItem(this.activeItem,undefined,B)}else{Ext.layout.CardLayout.superclass.renderAll.call(this,A,B)}}});Ext.Container.LAYOUTS["card"]=Ext.layout.CardLayout;Ext.layout.AnchorLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,getAnchorViewSize:function(A,B){return B.dom==document.body?B.getViewSize():B.getStyleSize()},onLayout:function(F,I){Ext.layout.AnchorLayout.superclass.onLayout.call(this,F,I);var O=this.getAnchorViewSize(F,I);var M=O.width,E=O.height;if(M<20||E<20){return}var B,K;if(F.anchorSize){if(typeof F.anchorSize=="number"){B=F.anchorSize}else{B=F.anchorSize.width;K=F.anchorSize.height}}else{B=F.initialConfig.width;K=F.initialConfig.height}var H=F.items.items,G=H.length,D,J,L,C,A;for(D=0;D ");B.disableFormats=true;B.compile();Ext.layout.BorderLayout.Region.prototype.toolTemplate=B}this.collapsedEl=this.targetEl.createChild({cls:"x-layout-collapsed x-layout-collapsed-"+this.position,id:this.panel.id+"-xcollapsed"});this.collapsedEl.enableDisplayMode("block");if(this.collapseMode=="mini"){this.collapsedEl.addClass("x-layout-cmini-"+this.position);this.miniCollapsedEl=this.collapsedEl.createChild({cls:"x-layout-mini x-layout-mini-"+this.position,html:" "});this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.onExpandClick,this,{stopEvent:true})}else{var A=this.toolTemplate.append(this.collapsedEl.dom,{id:"expand-"+this.position},true);A.addClassOnOver("x-tool-expand-"+this.position+"-over");A.on("click",this.onExpandClick,this,{stopEvent:true});if(this.floatable!==false){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.collapseClick,this)}}}return this.collapsedEl},onExpandClick:function(A){if(this.isSlid){this.afterSlideIn();this.panel.expand(false)}else{this.panel.expand()}},onCollapseClick:function(A){this.panel.collapse()},beforeCollapse:function(B,A){this.lastAnim=A;if(this.splitEl){this.splitEl.hide()}this.getCollapsedEl().show();this.panel.el.setStyle("z-index",100);this.isCollapsed=true;this.layout.layout()},onCollapse:function(A){this.panel.el.setStyle("z-index",1);if(this.lastAnim===false||this.panel.animCollapse===false){this.getCollapsedEl().dom.style.visibility="visible"}else{this.getCollapsedEl().slideIn(this.panel.slideAnchor,{duration:0.2})}this.state.collapsed=true;this.panel.saveState()},beforeExpand:function(A){var B=this.getCollapsedEl();this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,B.getHeight())}else{this.panel.setSize(B.getWidth(),undefined)}B.hide();B.dom.style.visibility="hidden";this.panel.el.setStyle("z-index",100)},onExpand:function(){this.isCollapsed=false;if(this.splitEl){this.splitEl.show()}this.layout.layout();this.panel.el.setStyle("z-index",1);this.state.collapsed=false;this.panel.saveState()},collapseClick:function(A){if(this.isSlid){A.stopPropagation();this.slideIn()}else{A.stopPropagation();this.slideOut()}},onHide:function(){if(this.isCollapsed){this.getCollapsedEl().hide()}else{if(this.splitEl){this.splitEl.hide()}}},onShow:function(){if(this.isCollapsed){this.getCollapsedEl().show()}else{if(this.splitEl){this.splitEl.show()}}},isVisible:function(){return!this.panel.hidden},getMargins:function(){return this.isCollapsed&&this.cmargins?this.cmargins:this.margins},getSize:function(){return this.isCollapsed?this.getCollapsedEl().getSize():this.panel.getSize()},setPanel:function(A){this.panel=A},getMinWidth:function(){return this.minWidth},getMinHeight:function(){return this.minHeight},applyLayoutCollapsed:function(A){var B=this.getCollapsedEl();B.setLeftTop(A.x,A.y);B.setSize(A.width,A.height)},applyLayout:function(A){if(this.isCollapsed){this.applyLayoutCollapsed(A)}else{this.panel.setPosition(A.x,A.y);this.panel.setSize(A.width,A.height)}},beforeSlide:function(){this.panel.beforeEffect()},afterSlide:function(){this.panel.afterEffect()},initAutoHide:function(){if(this.autoHide!==false){if(!this.autoHideHd){var A=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={"mouseout":function(B){if(!B.within(this.el,true)){A.delay(500)}},"mouseover":function(B){A.cancel()},scope:this}}this.el.on(this.autoHideHd)}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover)}},clearMonitor:function(){Ext.getDoc().un("click",this.slideInIf,this)},slideOut:function(){if(this.isSlid||this.el.hasActiveFx()){return}this.isSlid=true;var A=this.panel.tools;if(A&&A.toggle){A.toggle.hide()}this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,this.collapsedEl.getHeight())}else{this.panel.setSize(this.collapsedEl.getWidth(),undefined)}this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.el.setStyle("z-index",102);if(this.animFloat!==false){this.beforeSlide();this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.afterSlide();this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)},scope:this,block:true})}else{this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)}},afterSlideIn:function(){this.clearAutoHide();this.isSlid=false;this.clearMonitor();this.el.setStyle("z-index","");this.el.dom.style.left=this.restoreLT[0];this.el.dom.style.top=this.restoreLT[1];var A=this.panel.tools;if(A&&A.toggle){A.toggle.show()}},slideIn:function(A){if(!this.isSlid||this.el.hasActiveFx()){Ext.callback(A);return}this.isSlid=false;if(this.animFloat!==false){this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:function(){this.el.hide();this.afterSlide();this.afterSlideIn();Ext.callback(A)},scope:this,block:true})}else{this.el.hide();this.afterSlideIn()}},slideInIf:function(A){if(!A.within(this.el)){this.slideIn()}},anchors:{"west":"left","east":"right","north":"top","south":"bottom"},sanchors:{"west":"l","east":"r","north":"t","south":"b"},canchors:{"west":"tl-tr","east":"tr-tl","north":"tl-bl","south":"bl-tl"},getAnchor:function(){return this.anchors[this.position]},getCollapseAnchor:function(){return this.canchors[this.position]},getSlideAnchor:function(){return this.sanchors[this.position]},getAlignAdj:function(){var A=this.cmargins;switch(this.position){case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break}},getExpandAdj:function(){var B=this.collapsedEl,A=this.cmargins;switch(this.position){case"west":return[-(A.right+B.getWidth()+A.left),0];break;case"east":return[A.right+B.getWidth()+A.left,0];break;case"north":return[0,-(A.top+A.bottom+B.getHeight())];break;case"south":return[0,A.top+A.bottom+B.getHeight()];break}}};Ext.layout.BorderLayout.SplitRegion=function(B,A,C){Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this,B,A,C);this.applyLayout=this.applyFns[C]};Ext.extend(Ext.layout.BorderLayout.SplitRegion,Ext.layout.BorderLayout.Region,{splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,splitSettings:{north:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.TOP,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},south:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.BOTTOM,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},east:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.RIGHT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"},west:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.LEFT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"}},applyFns:{west:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;this.panel.setPosition(C.x,C.y);var A=D.offsetWidth;B.left=(C.x+C.width-A)+"px";B.top=(C.y)+"px";B.height=Math.max(0,C.height)+"px";this.panel.setSize(C.width-A,C.height)},east:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetWidth;this.panel.setPosition(C.x+A,C.y);B.left=(C.x)+"px";B.top=(C.y)+"px";B.height=Math.max(0,C.height)+"px";this.panel.setSize(C.width-A,C.height)},north:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetHeight;this.panel.setPosition(C.x,C.y);B.left=(C.x)+"px";B.top=(C.y+C.height-A)+"px";B.width=Math.max(0,C.width)+"px";this.panel.setSize(C.width,C.height-A)},south:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetHeight;this.panel.setPosition(C.x,C.y+A);B.left=(C.x)+"px";B.top=(C.y)+"px";B.width=Math.max(0,C.width)+"px";this.panel.setSize(C.width,C.height-A)}},render:function(A,C){Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this,A,C);var D=this.position;this.splitEl=A.createChild({cls:"x-layout-split x-layout-split-"+D,html:" ",id:this.panel.id+"-xsplit"});if(this.collapseMode=="mini"){this.miniSplitEl=this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"+D,html:" "});this.miniSplitEl.addClassOnOver("x-layout-mini-over");this.miniSplitEl.on("click",this.onCollapseClick,this,{stopEvent:true})}var B=this.splitSettings[D];this.split=new Ext.SplitBar(this.splitEl.dom,C.el,B.orientation);this.split.placement=B.placement;this.split.getMaximumSize=this[B.maxFn].createDelegate(this);this.split.minSize=this.minSize||this[B.minProp];this.split.on("beforeapply",this.onSplitMove,this);this.split.useShim=this.useShim===true;this.maxSize=this.maxSize||this[B.maxProp];if(C.hidden){this.splitEl.hide()}if(this.useSplitTips){this.splitEl.dom.title=this.collapsible?this.collapsibleSplitTip:this.splitTip}if(this.collapsible){this.splitEl.on("dblclick",this.onCollapseClick,this)}},getSize:function(){if(this.isCollapsed){return this.collapsedEl.getSize()}var A=this.panel.getSize();if(this.position=="north"||this.position=="south"){A.height+=this.splitEl.dom.offsetHeight}else{A.width+=this.splitEl.dom.offsetWidth}return A},getHMaxSize:function(){var B=this.maxSize||10000;var A=this.layout.center;return Math.min(B,(this.el.getWidth()+A.el.getWidth())-A.getMinWidth())},getVMaxSize:function(){var B=this.maxSize||10000;var A=this.layout.center;return Math.min(B,(this.el.getHeight()+A.el.getHeight())-A.getMinHeight())},onSplitMove:function(B,A){var C=this.panel.getSize();this.lastSplitSize=A;if(this.position=="north"||this.position=="south"){this.panel.setSize(C.width,A);this.state.height=A}else{this.panel.setSize(A,C.height);this.state.width=A}this.layout.layout();this.panel.saveState();return false},getSplitBar:function(){return this.split}});Ext.Container.LAYOUTS["border"]=Ext.layout.BorderLayout;Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:":",getAnchorViewSize:function(A,B){return A.body.getStyleSize()},setContainer:function(B){Ext.layout.FormLayout.superclass.setContainer.call(this,B);if(B.labelAlign){B.addClass("x-form-label-"+B.labelAlign)}if(B.hideLabels){this.labelStyle="display:none";this.elementStyle="padding-left:0;";this.labelAdjust=0}else{this.labelSeparator=B.labelSeparator||this.labelSeparator;B.labelWidth=B.labelWidth||100;if(typeof B.labelWidth=="number"){var C=(typeof B.labelPad=="number"?B.labelPad:5);this.labelAdjust=B.labelWidth+C;this.labelStyle="width:"+B.labelWidth+"px;";this.elementStyle="padding-left:"+(B.labelWidth+C)+"px"}if(B.labelAlign=="top"){this.labelStyle="width:auto;";this.labelAdjust=0;this.elementStyle="padding-left:0;"}}if(!this.fieldTpl){var A=new Ext.Template("
","","
","
","
");A.disableFormats=true;A.compile();Ext.layout.FormLayout.prototype.fieldTpl=A}},renderItem:function(D,A,C){if(D&&!D.rendered&&D.isFormField&&D.inputType!="hidden"){var B=[D.id,D.fieldLabel,D.labelStyle||this.labelStyle||"",this.elementStyle||"",typeof D.labelSeparator=="undefined"?this.labelSeparator:D.labelSeparator,(D.itemCls||this.container.itemCls||"")+(D.hideLabel?" x-hide-label":""),D.clearCls||"x-form-clear-left"];if(typeof A=="number"){A=C.dom.childNodes[A]||null}if(A){this.fieldTpl.insertBefore(A,B)}else{this.fieldTpl.append(C,B)}D.render("x-form-el-"+D.id)}else{Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments)}},adjustWidthAnchor:function(B,A){return B-(A.isFormField?(A.hideLabel?0:this.labelAdjust):0)},isValidParent:function(B,A){return true}});Ext.Container.LAYOUTS["form"]=Ext.layout.FormLayout;Ext.layout.Accordion=Ext.extend(Ext.layout.FitLayout,{fill:true,autoWidth:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:false,sequence:false,activeOnTop:false,renderItem:function(A){if(this.animate===false){A.animCollapse=false}A.collapsible=true;if(this.autoWidth){A.autoWidth=true}if(this.titleCollapse){A.titleCollapse=true}if(this.hideCollapseTool){A.hideCollapseTool=true}if(this.collapseFirst!==undefined){A.collapseFirst=this.collapseFirst}if(!this.activeItem&&!A.collapsed){this.activeItem=A}else{if(this.activeItem){A.collapsed=true}}Ext.layout.Accordion.superclass.renderItem.apply(this,arguments);A.header.addClass("x-accordion-hd");A.on("beforeexpand",this.beforeExpand,this)},beforeExpand:function(C,B){var A=this.activeItem;if(A){if(this.sequence){delete this.activeItem;A.collapse({callback:function(){C.expand(B||true)},scope:this});return false}else{A.collapse(this.animate)}}this.activeItem=C;if(this.activeOnTop){C.el.dom.parentNode.insertBefore(C.el.dom,C.el.dom.parentNode.firstChild)}this.layout()},setItemSize:function(F,E){if(this.fill&&F){var B=this.container.items.items;var D=0;for(var C=0,A=B.length;C=B)||(this.cells[C]&&this.cells[C][A])){if(B&&A>=B){C++;A=0}else{A++}}return[A,C]},renderItem:function(C,A,B){if(C&&!C.rendered){C.render(this.getNextCell(C))}},isValidParent:function(B,A){return true}});Ext.Container.LAYOUTS["table"]=Ext.layout.TableLayout;Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{extraCls:"x-abs-layout-item",isForm:false,setContainer:function(A){Ext.layout.AbsoluteLayout.superclass.setContainer.call(this,A);if(A.isXType("form")){this.isForm=true}},onLayout:function(A,B){if(this.isForm){A.body.position()}else{B.position()}Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,A,B)},getAnchorViewSize:function(A,B){return this.isForm?A.body.getStyleSize():Ext.layout.AbsoluteLayout.superclass.getAnchorViewSize.call(this,A,B)},isValidParent:function(B,A){return this.isForm?true:Ext.layout.AbsoluteLayout.superclass.isValidParent.call(this,B,A)},adjustWidthAnchor:function(B,A){return B?B-A.getPosition(true)[0]:B},adjustHeightAnchor:function(B,A){return B?B-A.getPosition(true)[1]:B}});Ext.Container.LAYOUTS["absolute"]=Ext.layout.AbsoluteLayout;Ext.Viewport=Ext.extend(Ext.Container,{initComponent:function(){Ext.Viewport.superclass.initComponent.call(this);document.getElementsByTagName("html")[0].className+=" x-viewport";this.el=Ext.getBody();this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.dom.scroll="no";this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);this.renderTo=this.el},fireResize:function(A,B){this.fireEvent("resize",this,A,B,A,B)}});Ext.reg("viewport",Ext.Viewport);Ext.Panel=Ext.extend(Ext.Container,{baseCls:"x-panel",collapsedCls:"x-panel-collapsed",maskDisabled:true,animCollapse:Ext.enableFx,headerAsText:true,buttonAlign:"right",collapsed:false,collapseFirst:true,minButtonWidth:75,elements:"body",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function(){Ext.Panel.superclass.initComponent.call(this);this.addEvents("bodyresize","titlechange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");if(this.tbar){this.elements+=",tbar";if(typeof this.tbar=="object"){this.topToolbar=this.tbar}delete this.tbar}if(this.bbar){this.elements+=",bbar";if(typeof this.bbar=="object"){this.bottomToolbar=this.bbar}delete this.bbar}if(this.header===true){this.elements+=",header";delete this.header}else{if(this.title&&this.header!==false){this.elements+=",header"}}if(this.footer===true){this.elements+=",footer";delete this.footer}if(this.buttons){var C=this.buttons;this.buttons=[];for(var B=0,A=C.length;B"+this.header.dom.innerHTML+"";if(this.iconCls){this.setIconClass(this.iconCls)}}}if(this.floating){this.makeFloating(this.floating)}if(this.collapsible){this.tools=this.tools?this.tools.slice(0):[];if(!this.hideCollapseTool){this.tools[this.collapseFirst?"unshift":"push"]({id:"toggle",handler:this.toggleCollapse,scope:this})}if(this.titleCollapse&&this.header){this.header.on("click",this.toggleCollapse,this);this.header.setStyle("cursor","pointer")}}if(this.tools){var J=this.tools;this.tools={};this.addTool.apply(this,J)}else{this.tools={}}if(this.buttons&&this.buttons.length>0){var D=this.footer.createChild({cls:"x-panel-btns-ct",cn:{cls:"x-panel-btns x-panel-btns-"+this.buttonAlign,html:"
"}},null,true);var L=D.getElementsByTagName("tr")[0];for(var F=0,I=this.buttons.length;F ");F.disableFormats=true;F.compile();Ext.Panel.prototype.toolTemplate=F}for(var E=0,C=arguments,B=C.length;E0){J.sort(C);var I=J[0].manager.zseed;for(var K=0;K=0;--H){if(!D[H].hidden){B(D[H]);return}}B(null)};return{zseed:9000,register:function(H){F[H.id]=H;D.push(H);H.on("hide",A)},unregister:function(H){delete F[H.id];H.un("hide",A);D.remove(H)},get:function(H){return typeof H=="object"?H:F[H]},bringToFront:function(H){H=this.get(H);if(H!=E){H._lastAccess=new Date().getTime();G();return true}return false},sendToBack:function(H){H=this.get(H);H._lastAccess=-(new Date().getTime());G();return H},hideAll:function(){for(var H in F){if(F[H]&&typeof F[H]!="function"&&F[H].isVisible()){F[H].hide()}}},getActive:function(){return E},getBy:function(J,I){var K=[];for(var H=D.length-1;H>=0;--H){var L=D[H];if(J.call(I||L,L)!==false){K.push(L)}}return K},each:function(I,H){for(var J in F){if(F[J]&&typeof F[J]!="function"){if(I.call(H||F[J],F[J])===false){return}}}}}};Ext.WindowMgr=new Ext.WindowGroup();Ext.dd.PanelProxy=function(A,B){this.panel=A;this.id=this.panel.id+"-ddproxy";Ext.apply(this,B)};Ext.dd.PanelProxy.prototype={insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){if(this.ghost){if(this.proxy){this.proxy.remove();delete this.proxy}this.panel.el.dom.style.display="";this.ghost.remove();delete this.ghost}},show:function(){if(!this.ghost){this.ghost=this.panel.createGhost(undefined,undefined,Ext.getBody());this.ghost.setXY(this.panel.el.getXY());if(this.insertProxy){this.proxy=this.panel.el.insertSibling({cls:"x-panel-dd-spacer"});this.proxy.setSize(this.panel.getSize())}this.panel.el.dom.style.display="none"}},repair:function(B,C,A){this.hide();if(typeof C=="function"){C.call(A||this)}},moveProxy:function(A,B){if(this.proxy){A.insertBefore(this.proxy.dom,B)}}};Ext.Panel.DD=function(B,A){this.panel=B;this.dragData={panel:B};this.proxy=new Ext.dd.PanelProxy(B,A);Ext.Panel.DD.superclass.constructor.call(this,B.el,A);this.setHandleElId(B.header.id);B.header.setStyle("cursor","move");this.scroll=false};Ext.extend(Ext.Panel.DD,Ext.dd.DragSource,{showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(A,B){this.proxy.show()},b4MouseDown:function(B){var A=B.getPageX();var C=B.getPageY();this.autoOffset(A,C)},onInitDrag:function(A,B){this.onStartDrag(A,B);return true},createFrame:Ext.emptyFn,getDragEl:function(A){return this.proxy.ghost.dom},endDrag:function(A){this.proxy.hide();this.panel.saveState()},autoOffset:function(A,B){A-=this.startPageX;B-=this.startPageY;this.setDelta(A,B)}});Ext.state.Provider=function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.call(this)};Ext.extend(Ext.state.Provider,Ext.util.Observable,{get:function(B,A){return typeof this.state[B]=="undefined"?A:this.state[B]},clear:function(A){delete this.state[A];this.fireEvent("statechange",this,A,null)},set:function(A,B){this.state[A]=B;this.fireEvent("statechange",this,A,B)},decodeValue:function(A){var J=/^(a|n|d|b|s|o)\:(.*)$/;var C=J.exec(unescape(A));if(!C||!C[1]){return}var F=C[1];var H=C[2];switch(F){case"n":return parseFloat(H);case"d":return new Date(Date.parse(H));case"b":return(H=="1");case"a":var G=[];var I=H.split("^");for(var B=0,D=I.length;B=A;C--){B.push(D[C])}}return B},indexOf:function(A){A=this.getNode(A);if(typeof A.viewIndex=="number"){return A.viewIndex}return this.all.indexOf(A)},onBeforeLoad:function(){if(this.loadingText){this.clearSelections(false,true);this.el.update("
"+this.loadingText+"
");this.all.clear()}}});Ext.reg("dataview",Ext.DataView);Ext.ColorPalette=function(A){Ext.ColorPalette.superclass.constructor.call(this,A);this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope,true)}};Ext.extend(Ext.ColorPalette,Ext.Component,{itemCls:"x-color-palette",value:null,clickEvent:"click",ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],onRender:function(B,A){var C=this.tpl||new Ext.XTemplate(" ");var D=document.createElement("div");D.className=this.itemCls;C.overwrite(D,this.colors);B.dom.insertBefore(D,A);this.el=Ext.get(D);this.el.on(this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!="click"){this.el.on("click",Ext.emptyFn,this,{delegate:"a",preventDefault:true})}},afterRender:function(){Ext.ColorPalette.superclass.afterRender.call(this);if(this.value){var A=this.value;this.value=null;this.select(A)}},handleClick:function(B,A){B.preventDefault();if(!this.disabled){var C=A.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(C.toUpperCase())}},select:function(A){A=A.replace("#","");if(A!=this.value||this.allowReselect){var B=this.el;if(this.value){B.child("a.color-"+this.value).removeClass("x-color-palette-sel")}B.child("a.color-"+A).addClass("x-color-palette-sel");this.value=A;this.fireEvent("select",this,A)}}});Ext.reg("colorpalette",Ext.ColorPalette);Ext.DatePicker=Ext.extend(Ext.Component,{todayText:"Today",okText:" OK ",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minDate:null,maxDate:null,minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDays:null,disabledDaysText:"",disabledDatesRE:null,disabledDatesText:"",constrainToViewport:true,monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",startDay:0,initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime():new Date().clearTime();this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope||this)}this.initDisabledDays()},initDisabledDays:function(){if(!this.disabledDatesRE&&this.disabledDates){var A=this.disabledDates;var C="(?:";for(var B=0;B","  ",""];var E=this.dayNames;for(var D=0;D<7;D++){var G=this.startDay+D;if(G>6){G=G-7}C.push("")}C[C.length]="";for(var D=0;D<42;D++){if(D%7==0&&D!=0){C[C.length]=""}C[C.length]=""}C[C.length]="
",E[G].substr(0,1),"
";var B=document.createElement("div");B.className="x-date-picker";B.innerHTML=C.join("");A.dom.insertBefore(B,F);this.el=Ext.get(B);this.eventEl=Ext.get(B.firstChild);new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.eventEl.on("mousewheel",this.handleMouseWheel,this);this.monthPicker=this.el.down("div.x-date-mp");this.monthPicker.enableDisplayMode("block");var I=new Ext.KeyNav(this.eventEl,{"left":function(J){J.ctrlKey?this.showPrevMonth():this.update(this.activeDate.add("d",-1))},"right":function(J){J.ctrlKey?this.showNextMonth():this.update(this.activeDate.add("d",1))},"up":function(J){J.ctrlKey?this.showNextYear():this.update(this.activeDate.add("d",-7))},"down":function(J){J.ctrlKey?this.showPrevYear():this.update(this.activeDate.add("d",7))},"pageUp":function(J){this.showNextMonth()},"pageDown":function(J){this.showPrevMonth()},"enter":function(J){J.stopPropagation();return true},scope:this});this.eventEl.on("click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);this.el.unselectable();this.cells=this.el.select("table.x-date-inner tbody td");this.textNodes=this.el.query("table.x-date-inner tbody span");this.mbtn=new Ext.Button({text:" ",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle",true)});this.mbtn.on("click",this.showMonthPicker,this);this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu");var H=(new Date()).dateFormat(this.format);this.todayBtn=new Ext.Button({renderTo:this.el.child("td.x-date-bottom",true),text:String.format(this.todayText,H),tooltip:String.format(this.todayTip,H),handler:this.selectToday,scope:this});if(Ext.isIE){this.el.repaint()}this.update(this.value)},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var A=[""];for(var B=0;B<6;B++){A.push("","",B==0?"":"")}A.push("","
",this.monthNames[B].substr(0,3),"",this.monthNames[B+6].substr(0,3),"
");this.monthPicker.update(A.join(""));this.monthPicker.on("click",this.onMonthClick,this);this.monthPicker.on("dblclick",this.onMonthDblClick,this);this.mpMonths=this.monthPicker.select("td.x-date-mp-month");this.mpYears=this.monthPicker.select("td.x-date-mp-year");this.mpMonths.each(function(C,D,E){E+=1;if((E%2)==0){C.dom.xmonth=5+Math.round(E*0.5)}else{C.dom.xmonth=Math.round((E-1)*0.5)}})}},showMonthPicker:function(){this.createMonthPicker();var A=this.el.getSize();this.monthPicker.setSize(A);this.monthPicker.child("table").setSize(A);this.mpSelMonth=(this.activeDate||this.value).getMonth();this.updateMPMonth(this.mpSelMonth);this.mpSelYear=(this.activeDate||this.value).getFullYear();this.updateMPYear(this.mpSelYear);this.monthPicker.slideIn("t",{duration:0.2})},updateMPYear:function(E){this.mpyear=E;var C=this.mpYears.elements;for(var B=1;B<=10;B++){var D=C[B-1],A;if((B%2)==0){A=E+Math.round(B*0.5);D.firstChild.innerHTML=A;D.xyear=A}else{A=E-(5-Math.round(B*0.5));D.firstChild.innerHTML=A;D.xyear=A}this.mpYears.item(B-1)[A==this.mpSelYear?"addClass":"removeClass"]("x-date-mp-sel")}},updateMPMonth:function(A){this.mpMonths.each(function(B,C,D){B[B.dom.xmonth==A?"addClass":"removeClass"]("x-date-mp-sel")})},selectMPMonth:function(A){},onMonthClick:function(D,B){D.stopEvent();var C=new Ext.Element(B),A;if(C.is("button.x-date-mp-cancel")){this.hideMonthPicker()}else{if(C.is("button.x-date-mp-ok")){this.update(new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}else{if(A=C.up("td.x-date-mp-month",2)){this.mpMonths.removeClass("x-date-mp-sel");A.addClass("x-date-mp-sel");this.mpSelMonth=A.dom.xmonth}else{if(A=C.up("td.x-date-mp-year",2)){this.mpYears.removeClass("x-date-mp-sel");A.addClass("x-date-mp-sel");this.mpSelYear=A.dom.xyear}else{if(C.is("a.x-date-mp-prev")){this.updateMPYear(this.mpyear-10)}else{if(C.is("a.x-date-mp-next")){this.updateMPYear(this.mpyear+10)}}}}}}},onMonthDblClick:function(D,B){D.stopEvent();var C=new Ext.Element(B),A;if(A=C.up("td.x-date-mp-month",2)){this.update(new Date(this.mpSelYear,A.dom.xmonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}else{if(A=C.up("td.x-date-mp-year",2)){this.update(new Date(A.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}}},hideMonthPicker:function(A){if(this.monthPicker){if(A===true){this.monthPicker.hide()}else{this.monthPicker.slideOut("t",{duration:0.2})}}},showPrevMonth:function(A){this.update(this.activeDate.add("mo",-1))},showNextMonth:function(A){this.update(this.activeDate.add("mo",1))},showPrevYear:function(){this.update(this.activeDate.add("y",-1))},showNextYear:function(){this.update(this.activeDate.add("y",1))},handleMouseWheel:function(A){var B=A.getWheelDelta();if(B>0){this.showPrevMonth();A.stopEvent()}else{if(B<0){this.showNextMonth();A.stopEvent()}}},handleDateClick:function(B,A){B.stopEvent();if(A.dateValue&&!Ext.fly(A.parentNode).hasClass("x-date-disabled")){this.setValue(new Date(A.dateValue));this.fireEvent("select",this,this.value)}},selectToday:function(){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value)},update:function(W){var A=this.activeDate;this.activeDate=W;if(A&&this.el){var I=W.getTime();if(A.getMonth()==W.getMonth()&&A.getFullYear()==W.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(a){if(a.dom.firstChild.dateValue==I){a.addClass("x-date-selected");setTimeout(function(){try{a.dom.firstChild.focus()}catch(b){}},50);return false}});return}}var F=W.getDaysInMonth();var J=W.getFirstDateOfMonth();var C=J.getDay()-this.startDay;if(C<=this.startDay){C+=7}var S=W.add("mo",-1);var D=S.getDaysInMonth()-C;var B=this.cells.elements;var K=this.textNodes;F+=C;var P=86400000;var U=(new Date(S.getFullYear(),S.getMonth(),D)).clearTime();var T=new Date().clearTime().getTime();var N=W.clearTime().getTime();var M=this.minDate?this.minDate.clearTime():Number.NEGATIVE_INFINITY;var Q=this.maxDate?this.maxDate.clearTime():Number.POSITIVE_INFINITY;var X=this.disabledDatesRE;var L=this.disabledDatesText;var Z=this.disabledDays?this.disabledDays.join(""):false;var V=this.disabledDaysText;var R=this.format;var G=function(d,a){a.title="";var b=U.getTime();a.firstChild.dateValue=b;if(b==T){a.className+=" x-date-today";a.title=d.todayText}if(b==N){a.className+=" x-date-selected";setTimeout(function(){try{a.firstChild.focus()}catch(f){}},50)}if(bQ){a.className=" x-date-disabled";a.title=d.maxText;return}if(Z){if(Z.indexOf(U.getDay())!=-1){a.title=V;a.className=" x-date-disabled"}}if(X&&R){var c=U.dateFormat(R);if(X.test(c)){a.title=L.replace("%0",c);a.className=" x-date-disabled"}}};var O=0;for(;O","","{text}","");D.disableFormats=true;D.compile();Ext.TabPanel.prototype.itemTpl=D}this.items.each(this.initTab,this)},afterRender:function(){Ext.TabPanel.superclass.afterRender.call(this);if(this.autoTabs){this.readTabs(false)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.on("add",this.onAdd,this);this.on("remove",this.onRemove,this);this.strip.on("mousedown",this.onStripMouseDown,this);this.strip.on("click",this.onStripClick,this);this.strip.on("contextmenu",this.onStripContextMenu,this);if(this.enableTabScroll){this.strip.on("mousewheel",this.onWheel,this)}},findTargets:function(C){var B=null;var A=C.getTarget("li",this.strip);if(A){B=this.getComponent(A.id.split(this.idDelimiter)[1]);if(B.disabled){return{close:null,item:null,el:null}}}return{close:C.getTarget(".x-tab-strip-close",this.strip),item:B,el:A}},onStripMouseDown:function(B){B.preventDefault();if(B.button!=0){return}var A=this.findTargets(B);if(A.close){this.remove(A.item);return}if(A.item&&A.item!=this.activeTab){this.setActiveTab(A.item)}},onStripClick:function(B){var A=this.findTargets(B);if(!A.close&&A.item&&A.item!=this.activeTab){this.setActiveTab(A.item)}},onStripContextMenu:function(B){B.preventDefault();var A=this.findTargets(B);if(A.item){this.fireEvent("contextmenu",this,A.item,B)}},readTabs:function(D){if(D===true){this.items.each(function(G){this.remove(G)},this)}var C=this.el.query(this.autoTabSelector);for(var B=0,A=C.length;B20?C:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(H>(A-C)){E.scrollLeft=A-C}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){var C=this.stripWrap.dom.offsetHeight;var A=this.header.insertFirst({cls:"x-tab-scroller-left"});A.setHeight(C);A.addClassOnOver("x-tab-scroller-left-over");this.leftRepeater=new Ext.util.ClickRepeater(A,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=A;var B=this.header.insertFirst({cls:"x-tab-scroller-right"});B.setHeight(C);B.addClassOnOver("x-tab-scroller-right-over");this.rightRepeater=new Ext.util.ClickRepeater(B,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=B},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},getScrollIncrement:function(){return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100)},scrollToTab:function(E,A){if(!E){return}var C=this.getTabEl(E);var G=this.getScrollPos(),D=this.getScrollArea();var F=Ext.fly(C).getOffsetsTo(this.stripWrap)[0]+G;var B=F+C.offsetWidth;if(F(G+D)){this.scrollTo(B-D,A)}}},scrollTo:function(B,A){this.stripWrap.scrollTo("left",B,A?this.getScrollAnim():false);if(!A){this.updateScrollButtons()}},onWheel:function(D){var E=D.getWheelDelta()*this.wheelIncrement*-1;D.stopEvent();var F=this.getScrollPos();var C=F+E;var A=this.getScrollWidth()-this.getScrollArea();var B=Math.max(0,Math.min(A,C));if(B!=F){this.scrollTo(B,false)}},onScrollRight:function(){var A=this.getScrollWidth()-this.getScrollArea();var C=this.getScrollPos();var B=Math.min(A,C+this.getScrollIncrement());if(B!=C){this.scrollTo(B,this.animScroll)}},onScrollLeft:function(){var B=this.getScrollPos();var A=Math.max(0,B-this.getScrollIncrement());if(A!=B){this.scrollTo(A,this.animScroll)}},updateScrollButtons:function(){var A=this.getScrollPos();this.scrollLeft[A==0?"addClass":"removeClass"]("x-tab-scroller-left-disabled");this.scrollRight[A>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("x-tab-scroller-right-disabled")}});Ext.reg("tabpanel",Ext.TabPanel);Ext.TabPanel.prototype.activate=Ext.TabPanel.prototype.setActiveTab;Ext.TabPanel.AccessStack=function(){var A=[];return{add:function(B){A.push(B);if(A.length>10){A.shift()}},remove:function(E){var D=[];for(var C=0,B=A.length;C","  ","")}this.template=Ext.Button.buttonTemplate}var B,E=[this.text||" ",this.type];if(A){B=this.template.insertBefore(A,E,true)}else{B=this.template.append(C,E,true)}var D=B.child(this.buttonSelector);D.on("focus",this.onFocus,this);D.on("blur",this.onBlur,this);this.initButtonEl(B,D);if(this.menu){this.el.child(this.menuClassTarget).addClass("x-btn-with-menu")}Ext.ButtonToggleMgr.register(this)},initButtonEl:function(B,C){this.el=B;B.addClass("x-btn");if(this.icon){C.setStyle("background-image","url("+this.icon+")")}if(this.iconCls){C.addClass(this.iconCls);if(!this.cls){B.addClass(this.text?"x-btn-text-icon":"x-btn-icon")}}if(this.tabIndex!==undefined){C.dom.tabIndex=this.tabIndex}if(this.tooltip){if(typeof this.tooltip=="object"){Ext.QuickTips.register(Ext.apply({target:C.id},this.tooltip))}else{C.dom[this.tooltipType]=this.tooltip}}if(this.pressed){this.el.addClass("x-btn-pressed")}if(this.handleMouseEvents){B.on("mouseover",this.onMouseOver,this);B.on("mousedown",this.onMouseDown,this)}if(this.menu){this.menu.on("show",this.onMenuShow,this);this.menu.on("hide",this.onMenuHide,this)}if(this.id){this.el.dom.id=this.el.id=this.id}if(this.repeat){var A=new Ext.util.ClickRepeater(B,typeof this.repeat=="object"?this.repeat:{});A.on("click",this.onClick,this)}B.on(this.clickEvent,this.onClick,this)},afterRender:function(){Ext.Button.superclass.afterRender.call(this);if(Ext.isIE6){this.autoWidth.defer(1,this)}else{this.autoWidth()}},setIconClass:function(A){if(this.el){this.el.child(this.buttonSelector).replaceClass(this.iconCls,A)}this.iconCls=A},beforeDestroy:function(){if(this.rendered){var A=this.el.child(this.buttonSelector);if(A){A.removeAllListeners()}}if(this.menu){Ext.destroy(this.menu)}},onDestroy:function(){if(this.rendered){Ext.ButtonToggleMgr.unregister(this)}},autoWidth:function(){if(this.el){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var A=this.el.child(this.buttonSelector);if(A&&A.getWidth()>20){A.clip();A.setWidth(Ext.util.TextMetrics.measure(A,this.text).width+A.getFrameWidth("lr"))}}if(this.minWidth){if(this.el.getWidth()","","","
 
","","","
 
");var C,F=[this.text||" ",this.type];if(A){C=B.insertBefore(A,F,true)}else{C=B.append(D,F,true)}var E=C.child(this.buttonSelector);this.initButtonEl(C,E);this.arrowBtnTable=C.child("table:last");if(this.arrowTooltip){C.child(this.arrowSelector).dom[this.tooltipType]=this.arrowTooltip}},autoWidth:function(){if(this.el){var C=this.el.child("table:first");var B=this.el.child("table:last");this.el.setWidth("auto");C.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var A=this.el.child(this.buttonSelector);if(A&&A.getWidth()>20){A.clip();A.setWidth(Ext.util.TextMetrics.measure(A,this.text).width+A.getFrameWidth("lr"))}}if(this.minWidth){if((C.getWidth()+B.getWidth())"},onRender:function(C,B){this.el=C.createChild(Ext.apply({id:this.id},this.autoCreate),B);this.tr=this.el.child("tr",true)},afterRender:function(){A.superclass.afterRender.call(this);if(this.buttons){this.add.apply(this,this.buttons);delete this.buttons}},add:function(){var C=arguments,B=C.length;for(var D=0;D"){this.addFill()}else{this.addText(E)}}}}else{if(E.tagName){this.addElement(E)}else{if(typeof E=="object"){if(E.xtype){this.addField(Ext.ComponentMgr.create(E,"button"))}else{this.addButton(E)}}}}}}}},addSeparator:function(){return this.addItem(new A.Separator())},addSpacer:function(){return this.addItem(new A.Spacer())},addFill:function(){return this.addItem(new A.Fill())},addElement:function(B){return this.addItem(new A.Item(B))},addItem:function(B){var C=this.nextBlock();this.initMenuTracking(B);B.render(C);this.items.add(B);return B},addButton:function(D){if(Ext.isArray(D)){var F=[];for(var E=0,C=D.length;E=1&C<=E.pages){this.field.dom.value=C}}}}}},beforeLoad:function(){if(this.rendered&&this.loading){this.loading.disable()}},doLoad:function(C){var B={},A=this.paramNames;B[A.start]=C;B[A.limit]=this.pageSize;this.store.load({params:B})},onClick:function(E){var B=this.store;switch(E){case"first":this.doLoad(0);break;case"prev":this.doLoad(Math.max(0,this.cursor-this.pageSize));break;case"next":this.doLoad(this.cursor+this.pageSize);break;case"last":var D=B.getTotalCount();var A=D%this.pageSize;var C=A?(D-A):D-this.pageSize;this.doLoad(C);break;case"refresh":this.doLoad(this.cursor);break}},unbind:function(A){A=Ext.StoreMgr.lookup(A);A.un("beforeload",this.beforeLoad,this);A.un("load",this.onLoad,this);A.un("loadexception",this.onLoadError,this);this.store=undefined},bind:function(A){A=Ext.StoreMgr.lookup(A);A.on("beforeload",this.beforeLoad,this);A.on("load",this.onLoad,this);A.on("loadexception",this.onLoadError,this);this.store=A}});Ext.reg("paging",Ext.PagingToolbar);Ext.Resizable=function(D,E){this.el=Ext.get(D);if(E&&E.wrap){E.resizeChild=this.el;this.el=this.el.wrap(typeof E.wrap=="object"?E.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=E.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(E.resizeChild.getPositioning());E.resizeChild.clearPositioning();if(!E.width||!E.height){var F=E.resizeChild.getSize();this.el.setSize(F.width,F.height)}if(E.pinned&&!E.adjustments){E.adjustments="auto"}}this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"});this.proxy.unselectable();this.proxy.enableDisplayMode("block");Ext.apply(this,E);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned")}var I=this.el.getStyle("position");if(I!="absolute"&&I!="fixed"){this.el.setStyle("position","relative")}if(!this.handles){this.handles="s,e,se";if(this.multiDirectional){this.handles+=",n,w"}}if(this.handles=="all"){this.handles="n s e w ne nw se sw"}var M=this.handles.split(/\s*?[,;]\s*?| /);var C=Ext.Resizable.positions;for(var H=0,J=M.length;H0){if(A>(E/2)){D=C+(E-A)}else{D=C-A}}return Math.max(B,D)},resizeElement:function(){var A=this.proxy.getBox();if(this.updateBox){this.el.setBox(A,false,this.animate,this.duration,null,this.easing)}else{this.el.setSize(A.width,A.height,this.animate,this.duration,null,this.easing)}this.updateChildSize();if(!this.dynamic){this.proxy.hide()}return A},constrain:function(B,C,A,D){if(B-CD){C=D-B}}return C},onMouseMove:function(S){if(this.enabled){try{if(this.resizeRegion&&!this.resizeRegion.contains(S.getPoint())){return}var Q=this.curSize||this.startBox;var I=this.startBox.x,H=this.startBox.y;var C=I,B=H;var J=Q.width,R=Q.height;var D=J,L=R;var K=this.minWidth,T=this.minHeight;var P=this.maxWidth,W=this.maxHeight;var F=this.widthIncrement;var A=this.heightIncrement;var U=S.getXY();var O=-(this.startPoint[0]-Math.max(this.minX,U[0]));var M=-(this.startPoint[1]-Math.max(this.minY,U[1]));var G=this.activeHandle.position;switch(G){case"east":J+=O;J=Math.min(Math.max(K,J),P);break;case"south":R+=M;R=Math.min(Math.max(T,R),W);break;case"southeast":J+=O;R+=M;J=Math.min(Math.max(K,J),P);R=Math.min(Math.max(T,R),W);break;case"north":M=this.constrain(R,M,T,W);H+=M;R-=M;break;case"west":O=this.constrain(J,O,K,P);I+=O;J-=O;break;case"northeast":J+=O;J=Math.min(Math.max(K,J),P);M=this.constrain(R,M,T,W);H+=M;R-=M;break;case"northwest":O=this.constrain(J,O,K,P);M=this.constrain(R,M,T,W);H+=M;R-=M;I+=O;J-=O;break;case"southwest":O=this.constrain(J,O,K,P);R+=M;R=Math.min(Math.max(T,R),W);I+=O;J-=O;break}var N=this.snap(J,F,K);var V=this.snap(R,A,T);if(N!=J||V!=R){switch(G){case"northeast":H-=V-R;break;case"north":H-=V-R;break;case"southwest":I-=N-J;break;case"west":I-=N-J;break;case"northwest":I-=N-J;H-=V-R;break}J=N;R=V}if(this.preserveRatio){switch(G){case"southeast":case"east":R=L*(J/D);R=Math.min(Math.max(T,R),W);J=D*(R/L);break;case"south":J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);break;case"northeast":J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);break;case"north":var X=J;J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);I+=(X-J)/2;break;case"southwest":R=L*(J/D);R=Math.min(Math.max(T,R),W);var X=J;J=D*(R/L);I+=X-J;break;case"west":var E=R;R=L*(J/D);R=Math.min(Math.max(T,R),W);H+=(E-R)/2;var X=J;J=D*(R/L);I+=X-J;break;case"northwest":var X=J;var E=R;R=L*(J/D);R=Math.min(Math.max(T,R),W);J=D*(R/L);H+=E-R;I+=X-J;break}}this.proxy.setBounds(I,H,J,R);if(this.dynamic){this.resizeElement()}}catch(S){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over")}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over")}},getEl:function(){return this.el},getResizeChild:function(){return this.resizeChild},destroy:function(C){this.proxy.remove();if(this.overlay){this.overlay.removeAllListeners();this.overlay.remove()}var D=Ext.Resizable.positions;for(var A in D){if(typeof D[A]!="function"&&this[D[A]]){var B=this[D[A]];B.el.removeAllListeners();B.el.remove()}}if(C){this.el.update("");this.el.remove()}},syncHandleHeight:function(){var A=this.el.getHeight(true);if(this.west){this.west.el.setHeight(A)}if(this.east){this.east.el.setHeight(A)}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=function(C,E,B,D){if(!this.tpl){var A=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});A.compile();Ext.Resizable.Handle.prototype.tpl=A}this.position=E;this.rz=C;this.el=this.tpl.append(C.el.dom,[this.position],true);this.el.unselectable();if(D){this.el.setOpacity(0)}this.el.on("mousedown",this.onMouseDown,this);if(!B){this.el.on("mouseover",this.onMouseOver,this);this.el.on("mouseout",this.onMouseOut,this)}};Ext.Resizable.Handle.prototype={afterResize:function(A){},onMouseDown:function(A){this.rz.onMouseDown(this,A)},onMouseOver:function(A){this.rz.handleOver(this,A)},onMouseOut:function(A){this.rz.handleOut(this,A)}};Ext.Editor=function(B,A){this.field=B;Ext.Editor.superclass.constructor.call(this,A)};Ext.extend(Ext.Editor,Ext.Component,{value:"",alignment:"c-c?",shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:false,cancelOnEsc:false,updateEl:false,initComponent:function(){Ext.Editor.superclass.initComponent.call(this);this.addEvents("beforestartedit","startedit","beforecomplete","complete","specialkey")},onRender:function(B,A){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:B,shim:this.shim,shadowOffset:4,id:this.id,constrain:this.constrain});this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!="title"){this.field.msgTarget="qtip"}this.field.inEditor=true;this.field.render(this.el);if(Ext.isGecko){this.field.el.dom.setAttribute("autocomplete","off")}this.field.on("specialkey",this.onSpecialKey,this);if(this.swallowKeys){this.field.el.swallowEvent(["keydown","keypress"])}this.field.show();this.field.on("blur",this.onBlur,this);if(this.field.grow){this.field.on("autosize",this.el.sync,this.el,{delay:1})}},onSpecialKey:function(B,A){if(this.completeOnEnter&&A.getKey()==A.ENTER){A.stopEvent();this.completeEdit()}else{if(this.cancelOnEsc&&A.getKey()==A.ESC){this.cancelEdit()}else{this.fireEvent("specialkey",B,A)}}},startEdit:function(B,C){if(this.editing){this.completeEdit()}this.boundEl=Ext.get(B);var A=C!==undefined?C:this.boundEl.dom.innerHTML;if(!this.rendered){this.render(this.parentEl||document.body)}if(this.fireEvent("beforestartedit",this,this.boundEl,A)===false){return}this.startValue=A;this.field.setValue(A);this.doAutoSize();this.el.alignTo(this.boundEl,this.alignment);this.editing=true;this.show()},doAutoSize:function(){if(this.autoSize){var A=this.boundEl.getSize();switch(this.autoSize){case"width":this.setSize(A.width,"");break;case"height":this.setSize("",A.height);break;default:this.setSize(A.width,A.height)}}},setSize:function(A,B){delete this.field.lastSize;this.field.setSize(A,B);if(this.el){this.el.sync()}},realign:function(){this.el.alignTo(this.boundEl,this.alignment)},completeEdit:function(A){if(!this.editing){return}var B=this.getValue();if(this.revertInvalid!==false&&!this.field.isValid()){B=this.startValue;this.cancelEdit(true)}if(String(B)===String(this.startValue)&&this.ignoreNoChange){this.editing=false;this.hide();return}if(this.fireEvent("beforecomplete",this,B,this.startValue)!==false){this.editing=false;if(this.updateEl&&this.boundEl){this.boundEl.update(B)}if(A!==true){this.hide()}this.fireEvent("complete",this,B,this.startValue)}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide()}this.field.show();if(Ext.isIE&&!this.fixIEFocus){this.fixIEFocus=true;this.deferredFocus.defer(50,this)}else{this.field.focus()}this.fireEvent("startedit",this.boundEl,this.startValue)},deferredFocus:function(){if(this.editing){this.field.focus()}},cancelEdit:function(A){if(this.editing){this.setValue(this.startValue);if(A!==true){this.hide()}}},onBlur:function(){if(this.allowBlur!==true&&this.editing){this.completeEdit()}},onHide:function(){if(this.editing){this.completeEdit();return}this.field.blur();if(this.field.collapse){this.field.collapse()}this.el.hide();if(this.hideEl!==false){this.boundEl.show()}},setValue:function(A){this.field.setValue(A)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){this.field.destroy();this.field=null}});Ext.reg("editor",Ext.Editor);Ext.MessageBox=function(){var R,B,N,Q;var G,J,P,A,K,M,H,F;var O,S,L,C="";var D=function(U){R.hide();Ext.callback(B.fn,B.scope||window,[U,S.dom.value],1)};var T=function(){if(B&&B.cls){R.el.removeClass(B.cls)}K.reset()};var E=function(W,U,V){if(B&&B.closable!==false){R.hide()}if(V){V.stopEvent()}};var I=function(U){var W=0;if(!U){O["ok"].hide();O["cancel"].hide();O["yes"].hide();O["no"].hide();return W}R.footer.dom.style.display="";for(var V in O){if(typeof O[V]!="function"){if(U[V]){O[V].show();O[V].setText(typeof U[V]=="string"?U[V]:Ext.MessageBox.buttonText[V]);W+=O[V].el.getWidth()+15}else{O[V].hide()}}}return W};return{getDialog:function(U){if(!R){R=new Ext.Window({autoCreate:true,title:U,resizable:false,constrain:true,constrainHeader:true,minimizable:false,maximizable:false,stateful:false,modal:true,shim:true,buttonAlign:"center",width:400,height:100,minHeight:80,plain:true,footer:true,closable:true,close:function(){if(B&&B.buttons&&B.buttons.no&&!B.buttons.cancel){D("no")}else{D("cancel")}}});O={};var V=this.buttonText;O["ok"]=R.addButton(V["ok"],D.createCallback("ok"));O["yes"]=R.addButton(V["yes"],D.createCallback("yes"));O["no"]=R.addButton(V["no"],D.createCallback("no"));O["cancel"]=R.addButton(V["cancel"],D.createCallback("cancel"));O["ok"].hideMode=O["yes"].hideMode=O["no"].hideMode=O["cancel"].hideMode="offsets";R.render(document.body);R.getEl().addClass("x-window-dlg");N=R.mask;G=R.body.createChild({html:"

"});H=Ext.get(G.dom.firstChild);var W=G.dom.childNodes[1];J=Ext.get(W.firstChild);P=Ext.get(W.childNodes[2]);P.enableDisplayMode();P.addKeyListener([10,13],function(){if(R.isVisible()&&B&&B.buttons){if(B.buttons.ok){D("ok")}else{if(B.buttons.yes){D("yes")}}}});A=Ext.get(W.childNodes[3]);A.enableDisplayMode();K=new Ext.ProgressBar({renderTo:G});G.createChild({cls:"x-clear"})}return R},updateText:function(X){if(!R.isVisible()&&!B.width){R.setSize(this.maxWidth,100)}J.update(X||" ");var V=C!=""?(H.getWidth()+H.getMargins("lr")):0;var Z=J.getWidth()+J.getMargins("lr");var W=R.getFrameWidth("lr");var Y=R.body.getFrameWidth("lr");if(Ext.isIE&&V>0){V+=3}var U=Math.max(Math.min(B.width||V+Z+W+Y,this.maxWidth),Math.max(B.minWidth||this.minWidth,L||0));if(B.prompt===true){S.setWidth(U-V-W-Y)}if(B.progress===true||B.wait===true){K.setSize(U-V-W-Y)}R.setSize(U,"auto").center();return this},updateProgress:function(V,U,W){K.updateProgress(V,U);if(W){this.updateText(W)}return this},isVisible:function(){return R&&R.isVisible()},hide:function(){if(this.isVisible()){R.hide();T()}return this},show:function(X){if(this.isVisible()){this.hide()}B=X;var Y=this.getDialog(B.title||" ");Y.setTitle(B.title||" ");var U=(B.closable!==false&&B.progress!==true&&B.wait!==true);Y.tools.close.setDisplayed(U);S=P;B.prompt=B.prompt||(B.multiline?true:false);if(B.prompt){if(B.multiline){P.hide();A.show();A.setHeight(typeof B.multiline=="number"?B.multiline:this.defaultTextHeight);S=A}else{P.show();A.hide()}}else{P.hide();A.hide()}S.dom.value=B.value||"";if(B.prompt){Y.focusEl=S}else{var W=B.buttons;var V=null;if(W&&W.ok){V=O["ok"]}else{if(W&&W.yes){V=O["yes"]}}if(V){Y.focusEl=V}}this.setIcon(B.icon);L=I(B.buttons);K.setVisible(B.progress===true||B.wait===true);this.updateProgress(0,B.progressText);this.updateText(B.msg);if(B.cls){Y.el.addClass(B.cls)}Y.proxyDrag=B.proxyDrag===true;Y.modal=B.modal!==false;Y.mask=B.modal!==false?N:false;if(!Y.isVisible()){document.body.appendChild(R.el.dom);Y.setAnimateTarget(B.animEl);Y.show(B.animEl)}Y.on("show",function(){if(U===true){Y.keyMap.enable()}else{Y.keyMap.disable()}},this,{single:true});if(B.wait===true){K.wait(B.waitConfig)}return this},setIcon:function(U){if(U&&U!=""){H.removeClass("x-hidden");H.replaceClass(C,U);C=U}else{H.replaceClass(C,"x-hidden");C=""}return this},progress:function(W,V,U){this.show({title:W,msg:V,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:U});return this},wait:function(W,V,U){this.show({title:V,msg:W,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:U});return this},alert:function(X,W,V,U){this.show({title:X,msg:W,buttons:this.OK,fn:V,scope:U});return this},confirm:function(X,W,V,U){this.show({title:X,msg:W,buttons:this.YESNO,fn:V,scope:U,icon:this.QUESTION});return this},prompt:function(Y,X,W,V,U){this.show({title:Y,msg:X,buttons:this.OKCANCEL,fn:W,minWidth:250,scope:V,prompt:true,multiline:U});return this},OK:{ok:true},CANCEL:{cancel:true},OKCANCEL:{ok:true,cancel:true},YESNO:{yes:true,no:true},YESNOCANCEL:{yes:true,no:true,cancel:true},INFO:"ext-mb-info",WARNING:"ext-mb-warning",QUESTION:"ext-mb-question",ERROR:"ext-mb-error",defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}}();Ext.Msg=Ext.MessageBox;Ext.Tip=Ext.extend(Ext.Panel,{minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,initComponent:function(){Ext.Tip.superclass.initComponent.call(this);if(this.closable&&!this.title){this.elements+=",header"}},afterRender:function(){Ext.Tip.superclass.afterRender.call(this);if(this.closable){this.addTool({id:"close",handler:this.hide,scope:this})}},showAt:function(A){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){var B=this.body.getTextWidth();if(this.title){B=Math.max(B,this.header.child("span").getTextWidth(this.title))}B+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr");this.setWidth(B.constrain(this.minWidth,this.maxWidth))}if(this.constrainPosition){A=this.el.adjustForConstraints(A)}this.setPagePosition(A[0],A[1])},showBy:function(A,B){if(!this.rendered){this.render(Ext.getBody())}this.showAt(this.el.getAlignToXY(A,B||this.defaultAlign))},initDraggable:function(){this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);this.header.addClass("x-tip-draggable")}});Ext.Tip.DD=function(B,A){Ext.apply(this,A);this.tip=B;Ext.Tip.DD.superclass.constructor.call(this,B.el.id,"WindowDD-"+B.id);this.setHandleElId(B.header.id);this.scroll=false};Ext.extend(Ext.Tip.DD,Ext.dd.DD,{moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function(){this.tip.el.disableShadow()},endDrag:function(A){this.tip.el.enableShadow(true)}});Ext.ToolTip=Ext.extend(Ext.Tip,{showDelay:500,hideDelay:200,dismissDelay:5000,mouseOffset:[15,18],trackMouse:false,constrainPosition:true,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget()},initTarget:function(){if(this.target){this.target=Ext.get(this.target);this.target.on("mouseover",this.onTargetOver,this);this.target.on("mouseout",this.onTargetOut,this);this.target.on("mousemove",this.onMouseMove,this)}},onMouseMove:function(A){this.targetXY=A.getXY();if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}},getTargetXY:function(){return[this.targetXY[0]+this.mouseOffset[0],this.targetXY[1]+this.mouseOffset[1]]},onTargetOver:function(A){if(this.disabled||A.within(this.target.dom,true)){return}this.clearTimer("hide");this.targetXY=A.getXY();this.delayShow()},delayShow:function(){if(this.hidden&&!this.showTimer){if(this.lastActive.getElapsed()=C){D=C-B-5}return{x:A,y:D}},onDestroy:function(){Ext.ToolTip.superclass.onDestroy.call(this);if(this.target){this.target.un("mouseover",this.onTargetOver,this);this.target.un("mouseout",this.onTargetOut,this);this.target.un("mousemove",this.onMouseMove,this)}}});Ext.QuickTip=Ext.extend(Ext.ToolTip,{interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(D){var F=Ext.isArray(D)?D:arguments;for(var E=0,A=F.length;E0){var D=function(H,G){if(H&&G){var I=G.findChild(A,B);if(I){I.select();if(F){F(true,I)}}else{if(F){F(false,I)}}}else{if(F){F(false,I)}}};this.expandPath(C.join(this.pathSeparator),A,D)}else{this.root.select();if(F){F(true,this.root)}}},getTreeEl:function(){return this.body},onRender:function(B,A){Ext.tree.TreePanel.superclass.onRender.call(this,B,A);this.el.addClass("x-tree");this.innerCt=this.body.createChild({tag:"ul",cls:"x-tree-root-ct "+(this.useArrows?"x-tree-arrows":this.lines?"x-tree-lines":"x-tree-no-lines")})},initEvents:function(){Ext.tree.TreePanel.superclass.initEvents.call(this);if(this.containerScroll){Ext.dd.ScrollManager.register(this.body)}if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true})}if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll})}this.getSelectionModel().init(this)},afterRender:function(){Ext.tree.TreePanel.superclass.afterRender.call(this);this.root.render();if(!this.rootVisible){this.root.renderChildren()}},onDestroy:function(){if(this.rendered){this.body.removeAllListeners();Ext.dd.ScrollManager.unregister(this.body);if(this.dropZone){this.dropZone.unreg()}if(this.dragZone){this.dragZone.unreg()}}this.root.destroy();this.nodeHash=null;Ext.tree.TreePanel.superclass.onDestroy.call(this)}});Ext.reg("treepanel",Ext.tree.TreePanel);Ext.tree.TreeEventModel=function(A){this.tree=A;this.tree.on("render",this.initEvents,this)};Ext.tree.TreeEventModel.prototype={initEvents:function(){var A=this.tree.getTreeEl();A.on("click",this.delegateClick,this);if(this.tree.trackMouseOver!==false){A.on("mouseover",this.delegateOver,this);A.on("mouseout",this.delegateOut,this)}A.on("dblclick",this.delegateDblClick,this);A.on("contextmenu",this.delegateContextMenu,this)},getNode:function(B){var A;if(A=B.getTarget(".x-tree-node-el",10)){var C=Ext.fly(A,"_treeEvents").getAttributeNS("ext","tree-node-id");if(C){return this.tree.getNodeById(C)}}return null},getNodeTarget:function(B){var A=B.getTarget(".x-tree-node-icon",1);if(!A){A=B.getTarget(".x-tree-node-el",6)}return A},delegateOut:function(B,A){if(!this.beforeEvent(B)){return}if(B.getTarget(".x-tree-ec-icon",1)){var C=this.getNode(B);this.onIconOut(B,C);if(C==this.lastEcOver){delete this.lastEcOver}}if((A=this.getNodeTarget(B))&&!B.within(A,true)){this.onNodeOut(B,this.getNode(B))}},delegateOver:function(B,A){if(!this.beforeEvent(B)){return}if(this.lastEcOver){this.onIconOut(B,this.lastEcOver);delete this.lastEcOver}if(B.getTarget(".x-tree-ec-icon",1)){this.lastEcOver=this.getNode(B);this.onIconOver(B,this.lastEcOver)}if(A=this.getNodeTarget(B)){this.onNodeOver(B,this.getNode(B))}},delegateClick:function(B,A){if(!this.beforeEvent(B)){return}if(B.getTarget("input[type=checkbox]",1)){this.onCheckboxClick(B,this.getNode(B))}else{if(B.getTarget(".x-tree-ec-icon",1)){this.onIconClick(B,this.getNode(B))}else{if(this.getNodeTarget(B)){this.onNodeClick(B,this.getNode(B))}}}},delegateDblClick:function(B,A){if(this.beforeEvent(B)&&this.getNodeTarget(B)){this.onNodeDblClick(B,this.getNode(B))}},delegateContextMenu:function(B,A){if(this.beforeEvent(B)&&this.getNodeTarget(B)){this.onNodeContextMenu(B,this.getNode(B))}},onNodeClick:function(B,A){A.ui.onClick(B)},onNodeOver:function(B,A){A.ui.onOver(B)},onNodeOut:function(B,A){A.ui.onOut(B)},onIconOver:function(B,A){A.ui.addClass("x-tree-ec-over")},onIconOut:function(B,A){A.ui.removeClass("x-tree-ec-over")},onIconClick:function(B,A){A.ui.ecClick(B)},onCheckboxClick:function(B,A){A.ui.onCheckChange(B)},onNodeDblClick:function(B,A){A.ui.onDblClick(B)},onNodeContextMenu:function(B,A){A.ui.onContextMenu(B)},beforeEvent:function(A){if(this.disabled){A.stopEvent();return false}return true},disable:function(){this.disabled=true},enable:function(){this.disabled=false}};Ext.tree.DefaultSelectionModel=function(A){this.selNode=null;this.addEvents("selectionchange","beforeselect");Ext.apply(this,A);Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.tree.DefaultSelectionModel,Ext.util.Observable,{init:function(A){this.tree=A;A.getTreeEl().on("keydown",this.onKeyDown,this);A.on("click",this.onNodeClick,this)},onNodeClick:function(A,B){this.select(A)},select:function(B){var A=this.selNode;if(this.fireEvent("beforeselect",this,B,A)!==false){if(!B.parentNode.attributes.objName){if(multiSelectMap&&multiSelectMap[B.ownerTree.ownerCt.title]){if(B.attributes.checked){B.ui.onSelectedChange(false);B.attributes.checked=false}else{B.ui.onSelectedChange(true);B.attributes.checked=true}this.selNode=B;this.fireEvent("selectionchange",this,B,A)}else{if(A){A.ui.onSelectedChange(false)}}}}return B},unselect:function(A){if(this.selNode==A){this.clearSelections()}},clearSelections:function(){var A=this.selNode;if(A){A.ui.onSelectedChange(false);this.selNode=null;this.fireEvent("selectionchange",this,null)}return A},getSelectedNode:function(){return this.selNode},isSelected:function(A){return this.selNode==A},selectPrevious:function(){var A=this.selNode||this.lastSelNode;if(!A){return null}var C=A.previousSibling;if(C){if(!C.isExpanded()||C.childNodes.length<1){return this.select(C)}else{var B=C.lastChild;while(B&&B.isExpanded()&&B.childNodes.length>0){B=B.lastChild}return this.select(B)}}else{if(A.parentNode&&(this.tree.rootVisible||!A.parentNode.isRoot)){return this.select(A.parentNode)}}return null},selectNext:function(){var B=this.selNode||this.lastSelNode;if(!B){return null}if(B.firstChild&&B.isExpanded()){return this.select(B.firstChild)}else{if(B.nextSibling){return this.select(B.nextSibling)}else{if(B.parentNode){var A=null;B.parentNode.bubble(function(){if(this.nextSibling){A=this.getOwnerTree().selModel.select(this.nextSibling);return false}});return A}}}return null},onKeyDown:function(C){var B=this.selNode||this.lastSelNode;var D=this;if(!B){return}var A=C.getKey();switch(A){case C.DOWN:C.stopEvent();this.selectNext();break;case C.UP:C.stopEvent();this.selectPrevious();break;case C.RIGHT:C.preventDefault();if(B.hasChildNodes()){if(!B.isExpanded()){B.expand()}else{if(B.firstChild){this.select(B.firstChild,C)}}}break;case C.LEFT:C.preventDefault();if(B.hasChildNodes()&&B.isExpanded()){B.collapse()}else{if(B.parentNode&&(this.tree.rootVisible||B.parentNode!=this.tree.getRootNode())){this.select(B.parentNode,C)}}break}}});Ext.tree.MultiSelectionModel=function(A){this.selNodes=[];this.selMap={};this.addEvents("selectionchange");Ext.apply(this,A);Ext.tree.MultiSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.tree.MultiSelectionModel,Ext.util.Observable,{init:function(A){this.tree=A;A.getTreeEl().on("keydown",this.onKeyDown,this);A.on("click",this.onNodeClick,this)},onNodeClick:function(A,B){this.select(A,B,B.ctrlKey)},select:function(A,C,B){if(B!==true){this.clearSelections(true)}if(this.isSelected(A)){this.lastSelNode=A;return A}this.selNodes.push(A);this.selMap[A.id]=A;this.lastSelNode=A;A.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,this.selNodes);return A},unselect:function(B){if(this.selMap[B.id]){B.ui.onSelectedChange(false);var C=this.selNodes;var A=C.indexOf(B);if(A!=-1){this.selNodes.splice(A,1)}delete this.selMap[B.id];this.fireEvent("selectionchange",this,this.selNodes)}},clearSelections:function(B){var D=this.selNodes;if(D.length>0){for(var C=0,A=D.length;C
","",this.indentMarkup,"","","",E?("":"/>")):"","",D.text,"
","
    ",""].join("");var A;if(J!==true&&D.nextSibling&&(A=D.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",A,C)}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",H,C)}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var G=this.elNode.childNodes;this.indentNode=G[0];this.ecNode=G[1];this.iconNode=G[2];var F=3;if(E){this.checkbox=G[3];F++}this.anchor=G[F];this.textNode=G[F].firstChild},getAnchor:function(){return this.anchor},getTextEl:function(){return this.textNode},getIconEl:function(){return this.iconNode},isChecked:function(){return this.checkbox?this.checkbox.checked:false},updateExpandIcon:function(){if(this.rendered){var F=this.node,D,C;var A=F.isLast()?"x-tree-elbow-end":"x-tree-elbow";var E=F.hasChildNodes();if(E||F.attributes.expandable){if(F.expanded){A+="-minus";D="x-tree-node-collapsed";C="x-tree-node-expanded"}else{A+="-plus";D="x-tree-node-expanded";C="x-tree-node-collapsed"}if(this.wasLeaf){this.removeClass("x-tree-node-leaf");this.wasLeaf=false}if(this.c1!=D||this.c2!=C){Ext.fly(this.elNode).replaceClass(D,C);this.c1=D;this.c2=C}}else{if(!this.wasLeaf){Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-leaf");delete this.c1;delete this.c2;this.wasLeaf=true}}var B="x-tree-ec-icon "+A;if(this.ecc!=B){this.ecNode.className=B;this.ecc=B}}},getChildIndent:function(){if(!this.childIndent){var A=[];var B=this.node;while(B){if(!B.isRoot||(B.isRoot&&B.ownerTree.rootVisible)){if(!B.isLast()){A.unshift("")}else{A.unshift("")}}B=B.parentNode}this.childIndent=A.join("")}return this.childIndent},renderIndent:function(){if(this.rendered){var A="";var B=this.node.parentNode;if(B){A=B.ui.getChildIndent()}if(this.indentMarkup!=A){this.indentNode.innerHTML=A;this.indentMarkup=A}this.updateExpandIcon()}},destroy:function(){if(this.elNode){Ext.dd.Registry.unregister(this.elNode.id)}delete this.elNode;delete this.ctNode;delete this.indentNode;delete this.ecNode;delete this.iconNode;delete this.checkbox;delete this.anchor;delete this.textNode;Ext.removeNode(this.ctNode)}};Ext.tree.RootTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{render:function(){if(!this.rendered){var A=this.node.ownerTree.innerCt.dom;this.node.expanded=true;A.innerHTML="
    ";this.wrap=this.ctNode=A.firstChild}},collapse:Ext.emptyFn,expand:Ext.emptyFn});Ext.tree.TreeLoader=function(A){this.baseParams={};this.requestMethod="POST";Ext.apply(this,A);this.addEvents("beforeload","load","loadexception");Ext.tree.TreeLoader.superclass.constructor.call(this)};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,load:function(A,B){if(this.clearOnLoad){while(A.firstChild){A.removeChild(A.firstChild)}}if(this.doPreload(A)){if(typeof B=="function"){B()}}else{if(this.dataUrl||this.url){this.requestData(A,B)}}},doPreload:function(D){if(D.attributes.children){if(D.childNodes.length<1){var C=D.attributes.children;D.beginUpdate();for(var B=0,A=C.length;BK){return E?-1:+1}else{return 0}}}};Ext.tree.TreeSorter.prototype={doSort:function(A){A.sort(this.sortFn)},compareNodes:function(B,A){return(B.text.toUpperCase()>A.text.toUpperCase()?1:-1)},updateSort:function(A,B){if(B.childrenRendered){this.doSort.defer(1,this,[B])}},updateSortParent:function(A){var B=A.parentNode;if(B&&B.childrenRendered){this.doSort.defer(1,this,[B])}}};if(Ext.dd.DropZone){Ext.tree.TreeDropZone=function(A,B){this.allowParentInsert=false;this.allowContainerDrop=false;this.appendOnly=false;Ext.tree.TreeDropZone.superclass.constructor.call(this,A.innerCt,B);this.tree=A;this.dragOverData={};this.lastInsertClass="x-tree-no-status"};Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{ddGroup:"TreeDD",expandDelay:1000,expandNode:function(A){if(A.hasChildNodes()&&!A.isExpanded()){A.expand(false,null,this.triggerCacheRefresh.createDelegate(this))}},queueExpand:function(A){this.expandProcId=this.expandNode.defer(this.expandDelay,this,[A])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},isValidDropPoint:function(A,I,G,D,C){if(!A||!C){return false}var E=A.node;var F=C.node;if(!(E&&E.isTarget&&I)){return false}if(I=="append"&&E.allowChildren===false){return false}if((I=="above"||I=="below")&&(E.parentNode&&E.parentNode.allowChildren===false)){return false}if(F&&(E==F||F.contains(E))){return false}var B=this.dragOverData;B.tree=this.tree;B.target=E;B.data=C;B.point=I;B.source=G;B.rawEvent=D;B.dropNode=F;B.cancel=false;var H=this.tree.fireEvent("nodedragover",B);return B.cancel===false&&H!==false},getDropPoint:function(E,D,I){var J=D.node;if(J.isRoot){return J.allowChildren!==false?"append":false}var B=D.ddel;var K=Ext.lib.Dom.getY(B),G=K+B.offsetHeight;var F=Ext.lib.Event.getPageY(E);var H=J.allowChildren===false||J.isLeaf();if(this.appendOnly||J.parentNode.allowChildren===false){return H?false:"append"}var C=false;if(!this.allowParentInsert){C=J.hasChildNodes()&&J.isExpanded()}var A=(G-K)/(H?2:3);if(F>=K&&F<(K+A)){return"above"}else{if(!C&&(H||F>=G-A&&F<=G)){return"below"}else{return"append"}}},onNodeEnter:function(D,A,C,B){this.cancelExpand()},onNodeOver:function(B,G,F,E){var I=this.getDropPoint(F,B,G);var C=B.node;if(!this.expandProcId&&I=="append"&&C.hasChildNodes()&&!B.node.isExpanded()){this.queueExpand(C)}else{if(I!="append"){this.cancelExpand()}}var D=this.dropNotAllowed;if(this.isValidDropPoint(B,I,G,F,E)){if(I){var A=B.ddel;var H;if(I=="above"){D=B.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";H="x-tree-drag-insert-above"}else{if(I=="below"){D=B.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";H="x-tree-drag-insert-below"}else{D="x-tree-drop-ok-append";H="x-tree-drag-append"}}if(this.lastInsertClass!=H){Ext.fly(A).replaceClass(this.lastInsertClass,H);this.lastInsertClass=H}}}return D},onNodeOut:function(D,A,C,B){this.cancelExpand();this.removeDropIndicators(D)},onNodeDrop:function(C,I,E,D){var H=this.getDropPoint(E,C,I);var F=C.node;F.ui.startDrop();if(!this.isValidDropPoint(C,H,I,E,D)){F.ui.endDrop();return false}var G=D.node||(I.getTreeNode?I.getTreeNode(D,F,H,E):null);var B={tree:this.tree,target:F,data:D,point:H,source:I,rawEvent:E,dropNode:G,cancel:!G,dropStatus:false};var A=this.tree.fireEvent("beforenodedrop",B);if(A===false||B.cancel===true||!B.dropNode){F.ui.endDrop();return B.dropStatus}F=B.target;if(H=="append"&&!F.isExpanded()){F.expand(false,null,function(){this.completeDrop(B)}.createDelegate(this))}else{this.completeDrop(B)}return true},completeDrop:function(G){var D=G.dropNode,E=G.point,C=G.target;if(!Ext.isArray(D)){D=[D]}var F;for(var B=0,A=D.length;BD.offsetLeft){E.scrollLeft=D.offsetLeft}var A=Math.min(this.maxWidth,(E.clientWidth>20?E.clientWidth:E.offsetWidth)-Math.max(0,D.offsetLeft-E.scrollLeft)-5);this.setSize(A,"")},triggerEdit:function(A,B){this.completeEdit();if(A.attributes.editable!==false){this.editNode=A;this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[A.ui.textNode,A.text]);return false}},bindScroll:function(){this.tree.getTreeEl().on("scroll",this.cancelEdit,this)},beforeNodeClick:function(A,B){clearTimeout(this.autoEditTimer);if(this.tree.getSelectionModel().isSelected(A)){B.stopEvent();return this.triggerEdit(A)}},onNodeDblClick:function(A,B){clearTimeout(this.autoEditTimer)},updateNode:function(A,B){this.tree.getTreeEl().un("scroll",this.cancelEdit,this);this.editNode.setText(B)},onHide:function(){Ext.tree.TreeEditor.superclass.onHide.call(this);if(this.editNode){this.editNode.ui.focus.defer(50,this.editNode.ui)}},onSpecialKey:function(C,B){var A=B.getKey();if(A==B.ESC){B.stopEvent();this.cancelEdit()}else{if(A==B.ENTER&&!B.hasModifier()){B.stopEvent();this.completeEdit()}}}});Ext.menu.Menu=function(A){if(Ext.isArray(A)){A={items:A}}Ext.apply(this,A);this.id=this.id||Ext.id();this.addEvents("beforeshow","beforehide","show","hide","click","mouseover","mouseout","itemclick");Ext.menu.MenuMgr.register(this);Ext.menu.Menu.superclass.constructor.call(this);var B=this.items;this.items=new Ext.util.MixedCollection();if(B){this.add.apply(this,B)}};Ext.extend(Ext.menu.Menu,Ext.util.Observable,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,hidden:true,createEl:function(){return new Ext.Layer({cls:"x-menu",shadow:this.shadow,constrain:false,parentEl:this.parentEl||document.body,zindex:15000})},render:function(){if(this.el){return}var B=this.el=this.createEl();if(!this.keyNav){this.keyNav=new Ext.menu.MenuNav(this)}if(this.plain){B.addClass("x-menu-plain")}if(this.cls){B.addClass(this.cls)}this.focusEl=B.createChild({tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"});var A=B.createChild({tag:"ul",cls:"x-menu-list"});A.on("click",this.onClick,this);A.on("mouseover",this.onMouseOver,this);A.on("mouseout",this.onMouseOut,this);this.items.each(function(D){var C=document.createElement("li");C.className="x-menu-list-item";A.dom.appendChild(C);D.render(C,this)},this);this.ul=A;this.autoWidth()},autoWidth:function(){var D=this.el,C=this.ul;if(!D){return}var A=this.width;if(A){D.setWidth(A)}else{if(Ext.isIE){D.setWidth(this.minWidth);var B=D.dom.offsetWidth;D.setWidth(C.getWidth()+D.getFrameWidth("lr"))}}},delayAutoWidth:function(){if(this.el){if(!this.awTask){this.awTask=new Ext.util.DelayedTask(this.autoWidth,this)}this.awTask.delay(20)}},findTargetItem:function(B){var A=B.getTarget(".x-menu-list-item",this.ul,true);if(A&&A.menuItemId){return this.items.get(A.menuItemId)}},onClick:function(B){var A;if(A=this.findTargetItem(B)){A.onClick(B);this.fireEvent("click",this,A,B)}},setActiveItem:function(A,B){if(A!=this.activeItem){if(this.activeItem){this.activeItem.deactivate()}this.activeItem=A;A.activate(B)}else{if(B){A.expandMenu()}}},tryActivate:function(F,E){var B=this.items;for(var C=F,A=B.length;C>=0&&C0){H()}})}function H(){if(D&&D.length>0){var N=D.clone();N.each(function(O){O.hide()})}}function E(N){D.remove(N);if(D.length<1){Ext.getDoc().un("mousedown",L);A=false}}function J(N){var O=D.last();K=new Date();D.add(N);if(!A){Ext.getDoc().on("mousedown",L);A=true}if(N.parentMenu){N.getEl().setZIndex(parseInt(N.parentMenu.getEl().getStyle("z-index"),10)+3);N.parentMenu.activeChild=N}else{if(O&&O.isVisible()){N.getEl().setZIndex(parseInt(O.getEl().getStyle("z-index"),10)+3)}}}function B(N){if(N.activeChild){N.activeChild.hide()}if(N.autoHideTimer){clearTimeout(N.autoHideTimer);delete N.autoHideTimer}}function G(N){var O=N.parentMenu;if(!O&&!N.allowOtherMenus){H()}else{if(O&&O.activeChild){O.activeChild.hide()}}}function L(N){if(K.getElapsed()>50&&D.length>0&&!N.getTarget(".x-menu")){H()}}function I(O,R){if(R){var Q=C[O.group];for(var P=0,N=Q.length;P{1}",this.icon||Ext.BLANK_IMAGE_URL,this.itemText||this.text,this.iconCls||"");this.el=C;Ext.menu.Item.superclass.onRender.call(this,B,A)},setText:function(A){this.text=A;if(this.rendered){this.el.update(String.format("{1}",this.icon||Ext.BLANK_IMAGE_URL,this.text,this.iconCls||""));this.parentMenu.autoWidth()}},setIconClass:function(A){var B=this.iconCls;this.iconCls=A;if(this.rendered){this.el.child("img.x-menu-item-icon").replaceClass(B,this.iconCls)}},handleClick:function(A){if(!this.href){A.stopEvent()}Ext.menu.Item.superclass.handleClick.apply(this,arguments)},activate:function(A){if(Ext.menu.Item.superclass.activate.apply(this,arguments)){this.focus();if(A){this.expandMenu()}}return true},shouldDeactivate:function(A){if(Ext.menu.Item.superclass.shouldDeactivate.call(this,A)){if(this.menu&&this.menu.isVisible()){return!this.menu.getEl().getRegion().contains(A.getPoint())}return true}return false},deactivate:function(){Ext.menu.Item.superclass.deactivate.apply(this,arguments);this.hideMenu()},expandMenu:function(A){if(!this.disabled&&this.menu){clearTimeout(this.hideTimer);delete this.hideTimer;if(!this.menu.isVisible()&&!this.showTimer){this.showTimer=this.deferExpand.defer(this.showDelay,this,[A])}else{if(this.menu.isVisible()&&A){this.menu.tryActivate(0,1)}}}},deferExpand:function(A){delete this.showTimer;this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);if(A){this.menu.tryActivate(0,1)}},hideMenu:function(){clearTimeout(this.showTimer);delete this.showTimer;if(!this.hideTimer&&this.menu&&this.menu.isVisible()){this.hideTimer=this.deferHide.defer(this.hideDelay,this)}},deferHide:function(){delete this.hideTimer;this.menu.hide()}});Ext.menu.CheckItem=function(A){Ext.menu.CheckItem.superclass.constructor.call(this,A);this.addEvents("beforecheckchange","checkchange");if(this.checkHandler){this.on("checkchange",this.checkHandler,this.scope)}Ext.menu.MenuMgr.registerCheckable(this)};Ext.extend(Ext.menu.CheckItem,Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",onRender:function(A){Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);if(this.group){this.el.addClass(this.groupClass)}if(this.checked){this.checked=false;this.setChecked(true,true)}},destroy:function(){Ext.menu.MenuMgr.unregisterCheckable(this);Ext.menu.CheckItem.superclass.destroy.apply(this,arguments)},setChecked:function(B,A){if(this.checked!=B&&this.fireEvent("beforecheckchange",this,B)!==false){if(this.container){this.container[B?"addClass":"removeClass"]("x-menu-item-checked")}this.checked=B;if(A!==true){this.fireEvent("checkchange",this,B)}}},handleClick:function(A){if(!this.disabled&&!(this.checked&&this.group)){this.setChecked(!this.checked)}Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments)}});Ext.menu.Adapter=function(B,A){Ext.menu.Adapter.superclass.constructor.call(this,A);this.component=B};Ext.extend(Ext.menu.Adapter,Ext.menu.BaseItem,{canActivate:true,onRender:function(B,A){this.component.render(B);this.el=this.component.getEl()},activate:function(){if(this.disabled){return false}this.component.focus();this.fireEvent("activate",this);return true},deactivate:function(){this.fireEvent("deactivate",this)},disable:function(){this.component.disable();Ext.menu.Adapter.superclass.disable.call(this)},enable:function(){this.component.enable();Ext.menu.Adapter.superclass.enable.call(this)}});Ext.menu.DateItem=function(A){Ext.menu.DateItem.superclass.constructor.call(this,new Ext.DatePicker(A),A);this.picker=this.component;this.addEvents("select");this.picker.on("render",function(B){B.getEl().swallowEvent("click");B.container.addClass("x-menu-date-item")});this.picker.on("select",this.onSelect,this)};Ext.extend(Ext.menu.DateItem,Ext.menu.Adapter,{onSelect:function(B,A){this.fireEvent("select",this,A,B);Ext.menu.DateItem.superclass.handleClick.call(this)}});Ext.menu.ColorItem=function(A){Ext.menu.ColorItem.superclass.constructor.call(this,new Ext.ColorPalette(A),A);this.palette=this.component;this.relayEvents(this.palette,["select"]);if(this.selectHandler){this.on("select",this.selectHandler,this.scope)}};Ext.extend(Ext.menu.ColorItem,Ext.menu.Adapter);Ext.menu.DateMenu=function(A){Ext.menu.DateMenu.superclass.constructor.call(this,A);this.plain=true;var B=new Ext.menu.DateItem(A);this.add(B);this.picker=B.picker;this.relayEvents(B,["select"]);this.on("beforeshow",function(){if(this.picker){this.picker.hideMonthPicker(true)}},this)};Ext.extend(Ext.menu.DateMenu,Ext.menu.Menu,{cls:"x-date-menu",beforeDestroy:function(){this.picker.destroy()}});Ext.menu.ColorMenu=function(A){Ext.menu.ColorMenu.superclass.constructor.call(this,A);this.plain=true;var B=new Ext.menu.ColorItem(A);this.add(B);this.palette=B.palette;this.relayEvents(B,["select"])};Ext.extend(Ext.menu.ColorMenu,Ext.menu.Menu);Ext.form.Field=Ext.extend(Ext.BoxComponent,{invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:"qtip",msgFx:"normal",readOnly:false,disabled:false,isFormField:true,hasFocus:false,initComponent:function(){Ext.form.Field.superclass.initComponent.call(this);this.addEvents("focus","blur","specialkey","change","invalid","valid")},getName:function(){return this.rendered&&this.el.dom.name?this.el.dom.name:(this.hiddenName||"")},onRender:function(C,A){Ext.form.Field.superclass.onRender.call(this,C,A);if(!this.el){var B=this.getAutoCreate();if(!B.name){B.name=this.name||this.id}if(this.inputType){B.type=this.inputType}this.el=C.createChild(B,A)}var D=this.el.dom.type;if(D){if(D=="password"){D="text"}this.el.addClass("x-form-"+D)}if(this.readOnly){this.el.dom.readOnly=true}if(this.tabIndex!==undefined){this.el.dom.setAttribute("tabIndex",this.tabIndex)}this.el.addClass([this.fieldClass,this.cls]);this.initValue()},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{if(this.el.dom.value.length>0){this.setValue(this.el.dom.value)}}},isDirty:function(){if(this.disabled){return false}return String(this.getValue())!==String(this.originalValue)},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents()},fireKey:function(A){if(A.isSpecialKey()){this.fireEvent("specialkey",this,A)}},reset:function(){this.setValue(this.originalValue);this.clearInvalid()},initEvents:function(){this.el.on(Ext.isIE?"keydown":"keypress",this.fireKey,this);this.el.on("focus",this.onFocus,this);this.el.on("blur",this.onBlur,this);this.originalValue=this.getValue()},onFocus:function(){if(!Ext.isOpera&&this.focusClass){this.el.addClass(this.focusClass)}if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},beforeBlur:Ext.emptyFn,onBlur:function(){this.beforeBlur();if(!Ext.isOpera&&this.focusClass){this.el.removeClass(this.focusClass)}this.hasFocus=false;if(this.validationEvent!==false&&this.validateOnBlur&&this.validationEvent!="blur"){this.validate()}var A=this.getValue();if(String(A)!==String(this.startValue)){this.fireEvent("change",this,A,this.startValue)}this.fireEvent("blur",this)},isValid:function(A){if(this.disabled){return true}var C=this.preventMark;this.preventMark=A===true;var B=this.validateValue(this.processValue(this.getRawValue()));this.preventMark=C;return B},validate:function(){if(this.disabled||this.validateValue(this.processValue(this.getRawValue()))){this.clearInvalid();return true}return false},processValue:function(A){return A},validateValue:function(A){return true},markInvalid:function(C){if(!this.rendered||this.preventMark){return}this.el.addClass(this.invalidClass);C=C||this.invalidText;switch(this.msgTarget){case"qtip":this.el.dom.qtip=C;this.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}break;case"title":this.el.dom.title=C;break;case"under":if(!this.errorEl){var B=this.el.findParent(".x-form-element",5,true);this.errorEl=B.createChild({cls:"x-form-invalid-msg"});this.errorEl.setWidth(B.getWidth(true)-20)}this.errorEl.update(C);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl,this);break;case"side":if(!this.errorIcon){var B=this.el.findParent(".x-form-element",5,true);this.errorIcon=B.createChild({cls:"x-form-invalid-icon"})}this.alignErrorIcon();this.errorIcon.dom.qtip=C;this.errorIcon.dom.qclass="x-form-invalid-tip";this.errorIcon.show();this.on("resize",this.alignErrorIcon,this);break;default:var A=Ext.getDom(this.msgTarget);A.innerHTML=C;A.style.display=this.msgDisplay;break}this.fireEvent("invalid",this,C)},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,"tl-tr",[2,0])},clearInvalid:function(){if(!this.rendered||this.preventMark){return}this.el.removeClass(this.invalidClass);switch(this.msgTarget){case"qtip":this.el.dom.qtip="";break;case"title":this.el.dom.title="";break;case"under":if(this.errorEl){Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl,this)}break;case"side":if(this.errorIcon){this.errorIcon.dom.qtip="";this.errorIcon.hide();this.un("resize",this.alignErrorIcon,this)}break;default:var A=Ext.getDom(this.msgTarget);A.innerHTML="";A.style.display="none";break}this.fireEvent("valid",this)},getRawValue:function(){var A=this.rendered?this.el.getValue():Ext.value(this.value,"");if(A===this.emptyText){A=""}return A},getValue:function(){if(!this.rendered){return this.value}var A=this.el.getValue();if(A===this.emptyText||A===undefined){A=""}return A},setRawValue:function(A){return this.el.dom.value=(A===null||A===undefined?"":A)},setValue:function(A){this.value=A;if(this.rendered){this.el.dom.value=(A===null||A===undefined?"":A);this.validate()}},adjustSize:function(A,C){var B=Ext.form.Field.superclass.adjustSize.call(this,A,C);B.width=this.adjustWidth(this.el.dom.tagName,B.width);return B},adjustWidth:function(A,B){A=A.toLowerCase();if(typeof B=="number"&&!Ext.isSafari){if(Ext.isIE&&(A=="input"||A=="textarea")){if(A=="input"&&!Ext.isStrict){return this.inEditor?B:B-3}if(A=="input"&&Ext.isStrict){return B-(Ext.isIE6?4:1)}if(A="textarea"&&Ext.isStrict){return B-2}}else{if(Ext.isOpera&&Ext.isStrict){if(A=="input"){return B+2}if(A="textarea"){return B-2}}}}return B}});Ext.form.Field.msgFx={normal:{show:function(A,B){A.setDisplayed("block")},hide:function(A,B){A.setDisplayed(false).update("")}},slide:{show:function(A,B){A.slideIn("t",{stopFx:true})},hide:function(A,B){A.slideOut("t",{stopFx:true,useDisplay:true})}},slideRight:{show:function(A,B){A.fixDisplay();A.alignTo(B.el,"tl-tr");A.slideIn("l",{stopFx:true})},hide:function(A,B){A.slideOut("l",{stopFx:true,useDisplay:true})}}};Ext.reg("field",Ext.form.Field);Ext.form.TextField=Ext.extend(Ext.form.Field,{grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:"x-form-empty-field",initComponent:function(){Ext.form.TextField.superclass.initComponent.call(this);this.addEvents("autosize")},initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=="keyup"){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.el.on("keyup",this.filterValidation,this)}else{if(this.validationEvent!==false){this.el.on(this.validationEvent,this.validate,this,{buffer:this.validationDelay})}}if(this.selectOnFocus||this.emptyText){this.on("focus",this.preFocus,this);if(this.emptyText){this.on("blur",this.postBlur,this);this.applyEmptyText()}}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){this.el.on("keypress",this.filterKeys,this)}if(this.grow){this.el.on("keyup",this.onKeyUp,this,{buffer:50});this.el.on("click",this.autoSize,this)}},processValue:function(A){if(this.stripCharsRe){var B=A.replace(this.stripCharsRe,"");if(B!==A){this.setRawValue(B);return B}}return A},filterValidation:function(A){if(!A.isNavKeyPress()){this.validationTask.delay(this.validationDelay)}},onKeyUp:function(A){if(!A.isNavKeyPress()){this.autoSize()}},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText()},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass)}},preFocus:function(){if(this.emptyText){if(this.el.dom.value==this.emptyText){this.setRawValue("")}this.el.removeClass(this.emptyClass)}if(this.selectOnFocus){this.el.dom.select()}},postBlur:function(){this.applyEmptyText()},filterKeys:function(B){var A=B.getKey();if(!Ext.isIE&&(B.isNavKeyPress()||A==B.BACKSPACE||(A==B.DELETE&&B.button==-1))){return}var D=B.getCharCode(),C=String.fromCharCode(D);if(Ext.isIE&&(B.isSpecialKey()||!C)){return}if(!this.maskRe.test(C)){B.stopEvent()}},setValue:function(A){if(this.emptyText&&this.el&&A!==undefined&&A!==null&&A!==""){this.el.removeClass(this.emptyClass)}Ext.form.TextField.superclass.setValue.apply(this,arguments);this.applyEmptyText();this.autoSize()},validateValue:function(A){if(A.length<1||A===this.emptyText){if(this.allowBlank){this.clearInvalid();return true}else{this.markInvalid(this.blankText);return false}}if(A.lengththis.maxLength){this.markInvalid(String.format(this.maxLengthText,this.maxLength));return false}if(this.vtype){var C=Ext.form.VTypes;if(!C[this.vtype](A,this)){this.markInvalid(this.vtypeText||C[this.vtype+"Text"]);return false}}if(typeof this.validator=="function"){var B=this.validator(A);if(B!==true){this.markInvalid(B);return false}}if(this.regex&&!this.regex.test(A)){this.markInvalid(this.regexText);return false}return true},selectText:function(E,A){var C=this.getRawValue();if(C.length>0){E=E===undefined?0:E;A=A===undefined?C.length:A;var D=this.el.dom;if(D.setSelectionRange){D.setSelectionRange(E,A)}else{if(D.createTextRange){var B=D.createTextRange();B.moveStart("character",E);B.moveEnd("character",A-C.length);B.select()}}}},autoSize:function(){if(!this.grow||!this.rendered){return}if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el)}var C=this.el;var B=C.dom.value;var D=document.createElement("div");D.appendChild(document.createTextNode(B));B=D.innerHTML;D=null;B+=" ";var A=Math.min(this.growMax,Math.max(this.metrics.getWidth(B)+10,this.growMin));this.el.setWidth(A);this.fireEvent("autosize",this,A)}});Ext.reg("textfield",Ext.form.TextField);Ext.form.TriggerField=Ext.extend(Ext.form.TextField,{defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,onResize:function(A,B){Ext.form.TriggerField.superclass.onResize.call(this,A,B);if(typeof A=="number"){this.el.setWidth(this.adjustWidth("input",A-this.trigger.getWidth()))}this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])},onRender:function(B,A){Ext.form.TriggerField.superclass.onRender.call(this,B,A);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(this.hideTrigger){this.trigger.setDisplayed(false)}this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())}},initTrigger:function(){this.trigger.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},onDestroy:function(){if(this.trigger){this.trigger.removeAllListeners();this.trigger.remove()}if(this.wrap){this.wrap.remove()}Ext.form.TriggerField.superclass.onDestroy.call(this)},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass("x-trigger-wrap-focus");this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this,{delay:10});if(this.monitorTab){this.el.on("keydown",this.checkTab,this)}}},checkTab:function(A){if(A.getKey()==A.TAB){this.triggerBlur()}},onBlur:function(){},mimicBlur:function(A){if(!this.wrap.contains(A.target)&&this.validateBlur(A)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur);if(this.monitorTab){this.el.un("keydown",this.checkTab,this)}this.beforeBlur();this.wrap.removeClass("x-trigger-wrap-focus");Ext.form.TriggerField.superclass.onBlur.call(this)},beforeBlur:Ext.emptyFn,validateBlur:function(A){return true},onDisable:function(){Ext.form.TriggerField.superclass.onDisable.call(this);if(this.wrap){this.wrap.addClass("x-item-disabled")}},onEnable:function(){Ext.form.TriggerField.superclass.onEnable.call(this);if(this.wrap){this.wrap.removeClass("x-item-disabled")}},onShow:function(){if(this.wrap){this.wrap.dom.style.display="";this.wrap.dom.style.visibility="visible"}},onHide:function(){this.wrap.dom.style.display="none"},onTriggerClick:Ext.emptyFn});Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.form.TwinTriggerField.superclass.initComponent.call(this);this.triggerConfig={tag:"span",cls:"x-form-twin-triggers",cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger2Class}]}},getTrigger:function(A){return this.triggers[A]},initTrigger:function(){var A=this.trigger.select(".x-form-trigger",true);this.wrap.setStyle("overflow","hidden");var B=this;A.each(function(D,F,C){D.hide=function(){var G=B.wrap.getWidth();this.dom.style.display="none";B.el.setWidth(G-B.trigger.getWidth())};D.show=function(){var G=B.wrap.getWidth();this.dom.style.display="";B.el.setWidth(G-B.trigger.getWidth())};var E="Trigger"+(C+1);if(this["hide"+E]){D.dom.style.display="none"}D.on("click",this["on"+E+"Click"],this,{preventDefault:true});D.addClassOnOver("x-form-trigger-over");D.addClassOnClick("x-form-trigger-click")},this);this.triggers=A.elements},onTrigger1Click:Ext.emptyFn,onTrigger2Click:Ext.emptyFn});Ext.reg("trigger",Ext.form.TriggerField);Ext.form.TextArea=Ext.extend(Ext.form.TextField,{growMin:60,growMax:1000,growAppend:" \n ",growPad:0,enterIsSpecial:false,preventScrollbars:false,onRender:function(B,A){if(!this.el){this.defaultAutoCreate={tag:"textarea",style:"width:100px;height:60px;",autocomplete:"off"}}Ext.form.TextArea.superclass.onRender.call(this,B,A);if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:"pre",cls:"x-form-grow-sizer"});if(this.preventScrollbars){this.el.setStyle("overflow","hidden")}this.el.setHeight(this.growMin)}},onDestroy:function(){if(this.textSizeEl){Ext.removeNode(this.textSizeEl)}Ext.form.TextArea.superclass.onDestroy.call(this)},fireKey:function(A){if(A.isSpecialKey()&&(this.enterIsSpecial||(A.getKey()!=A.ENTER||A.hasModifier()))){this.fireEvent("specialkey",this,A)}},onKeyUp:function(A){if(!A.isNavKeyPress()||A.getKey()==A.ENTER){this.autoSize()}},autoSize:function(){if(!this.grow||!this.textSizeEl){return}var C=this.el;var A=C.dom.value;var D=this.textSizeEl;D.innerHTML="";D.appendChild(document.createTextNode(A));A=D.innerHTML;Ext.fly(D).setWidth(this.el.getWidth());if(A.length<1){A="  "}else{if(Ext.isIE){A=A.replace(/\n/g,"

     

    ")}A+=this.growAppend}D.innerHTML=A;var B=Math.min(this.growMax,Math.max(D.offsetHeight,this.growMin)+this.growPad);if(B!=this.lastHeight){this.lastHeight=B;this.el.setHeight(B);this.fireEvent("autosize",this,B)}}});Ext.reg("textarea",Ext.form.TextArea);Ext.form.NumberField=Ext.extend(Ext.form.TextField,{fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",baseChars:"0123456789",initEvents:function(){Ext.form.NumberField.superclass.initEvents.call(this);var B=this.baseChars+"";if(this.allowDecimals){B+=this.decimalSeparator}if(this.allowNegative){B+="-"}this.stripCharsRe=new RegExp("[^"+B+"]","gi");var A=function(D){var C=D.getKey();if(!Ext.isIE&&(D.isSpecialKey()||C==D.BACKSPACE||C==D.DELETE)){return}var E=D.getCharCode();if(B.indexOf(String.fromCharCode(E))===-1){D.stopEvent()}};this.el.on("keypress",A,this)},validateValue:function(B){if(!Ext.form.NumberField.superclass.validateValue.call(this,B)){return false}if(B.length<1){return true}B=String(B).replace(this.decimalSeparator,".");if(isNaN(B)){this.markInvalid(String.format(this.nanText,B));return false}var A=this.parseValue(B);if(Athis.maxValue){this.markInvalid(String.format(this.maxText,this.maxValue));return false}return true},getValue:function(){return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))},setValue:function(A){A=parseFloat(A);A=isNaN(A)?"":String(A).replace(".",this.decimalSeparator);Ext.form.NumberField.superclass.setValue.call(this,A)},parseValue:function(A){A=parseFloat(String(A).replace(this.decimalSeparator,"."));return isNaN(A)?"":A},fixPrecision:function(B){var A=isNaN(B);if(!this.allowDecimals||this.decimalPrecision==-1||A||!B){return A?"":B}return parseFloat(parseFloat(B).toFixed(this.decimalPrecision))},beforeBlur:function(){var A=this.parseValue(this.getRawValue());if(A){this.setValue(this.fixPrecision(A))}}});Ext.reg("numberfield",Ext.form.NumberField);Ext.form.DateField=Ext.extend(Ext.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",minValue:null,maxValue:null,minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:"x-form-date-trigger",defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue)}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue)}this.ddMatch=null;if(this.disabledDates){var A=this.disabledDates;var C="(?:";for(var B=0;Bthis.maxValue.getTime()){this.markInvalid(String.format(this.maxText,this.formatDate(this.maxValue)));return false}if(this.disabledDays){var A=E.getDay();for(var B=0;B
    {"+this.displayField+"}
    "}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+A+"-item"});this.view.on("click",this.onViewClick,this);this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.resizer.on("resize",function(E,C,D){this.maxHeight=D-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=C;this.innerList.setWidth(C-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},bindStore:function(A,B){if(this.store&&!B){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("loadexception",this.collapse,this);if(!A){this.store=null;if(this.view){this.view.setStore(null)}}}if(A){this.store=Ext.StoreMgr.lookup(A);this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.onLoad,this);this.store.on("loadexception",this.collapse,this);if(this.view){this.view.setStore(A)}}},initEvents:function(){Ext.form.ComboBox.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{"up":function(A){this.inKeyMode=true;this.selectPrev()},"down":function(A){if(!this.isExpanded()){this.onTriggerClick()}else{this.inKeyMode=true;this.selectNext()}},"enter":function(A){this.onViewClick();this.delayedCheck=true;this.unsetDelayCheck.defer(10,this)},"esc":function(A){this.collapse()},"tab":function(A){this.onViewClick(false);return true},scope:this,doRelay:function(C,B,A){if(A=="down"||this.scope.isExpanded()){return Ext.KeyNav.prototype.doRelay.apply(this,arguments)}return true},forceKeyDown:true});this.queryDelay=Math.max(this.queryDelay||10,this.mode=="local"?10:250);this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);if(this.typeAhead){this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.editable!==false){this.el.on("keyup",this.onKeyUp,this)}if(this.forceSelection){this.on("blur",this.doForce,this)}},onDestroy:function(){if(this.view){this.view.el.removeAllListeners();this.view.el.remove();this.view.purgeListeners()}if(this.list){this.list.destroy()}this.bindStore(null);Ext.form.ComboBox.superclass.onDestroy.call(this)},unsetDelayCheck:function(){delete this.delayedCheck},fireKey:function(A){if(A.isNavKeyPress()&&!this.isExpanded()&&!this.delayedCheck){this.fireEvent("specialkey",this,A)}},onResize:function(A,B){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(this.list&&this.listWidth===undefined){var C=Math.max(A,this.minListWidth);this.list.setWidth(C);this.innerList.setWidth(C-this.list.getFrameWidth("lr"))}},onEnable:function(){Ext.form.ComboBox.superclass.onEnable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=false}},onDisable:function(){Ext.form.ComboBox.superclass.onDisable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=true}},setEditable:function(A){if(A==this.editable){return}this.editable=A;if(!A){this.el.dom.setAttribute("readOnly",true);this.el.on("mousedown",this.onTriggerClick,this);this.el.addClass("x-combo-noedit")}else{this.el.dom.setAttribute("readOnly",false);this.el.un("mousedown",this.onTriggerClick,this);this.el.removeClass("x-combo-noedit")}},onBeforeLoad:function(){if(!this.hasFocus){return}this.innerList.update(this.loadingText?"
    "+this.loadingText+"
    ":"");this.restrictHeight();this.selectedIndex=-1},onLoad:function(){if(!this.hasFocus){return}if(this.store.getCount()>0){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}if(!this.selectByValue(this.value,true)){this.select(0,true)}}else{this.selectNext();if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.onEmptyResults()}},onTypeAhead:function(){if(this.store.getCount()>0){var B=this.store.getAt(0);var C=B.data[this.displayField];var A=C.length;var D=this.getRawValue().length;if(D!=A){this.setRawValue(C);this.selectText(D,C.length)}}},onSelect:function(A,B){if(this.fireEvent("beforeselect",this,A,B)!==false){this.setValue(A.data[this.valueField||this.displayField]);this.collapse();this.fireEvent("select",this,A,B)}},getValue:function(){if(this.valueField){return typeof this.value!="undefined"?this.value:""}else{return Ext.form.ComboBox.superclass.getValue.call(this)}},clearValue:function(){if(this.hiddenField){this.hiddenField.value=""}this.setRawValue("");this.lastSelectionText="";this.applyEmptyText();this.value=""},setValue:function(A){var C=A;if(this.valueField){var B=this.findRecord(this.valueField,A);if(B){C=B.data[this.displayField]}else{if(this.valueNotFoundText!==undefined){C=this.valueNotFoundText}}}this.lastSelectionText=C;if(this.hiddenField){this.hiddenField.value=A}Ext.form.ComboBox.superclass.setValue.call(this,C);this.value=A},findRecord:function(C,B){var A;if(this.store.getCount()>0){this.store.each(function(D){if(D.data[C]==B){A=D;return false}})}return A},onViewMove:function(B,A){this.inKeyMode=false},onViewOver:function(D,B){if(this.inKeyMode){return}var C=this.view.findItemFromChild(B);if(C){var A=this.view.indexOf(C);this.select(A,false)}},onViewClick:function(B){var A=this.view.getSelectedIndexes()[0];var C=this.store.getAt(A);if(C){this.onSelect(C,A)}if(B!==false){this.el.focus()}},restrictHeight:function(){this.innerList.dom.style.height="";var B=this.innerList.dom;var E=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight;var C=Math.max(B.clientHeight,B.offsetHeight,B.scrollHeight);var A=this.getPosition()[1]-Ext.getBody().getScroll().top;var F=Ext.lib.Dom.getViewHeight()-A-this.getSize().height;var D=Math.max(A,F,this.minHeight||0)-this.list.shadow.offset-E-2;C=Math.min(C,D,this.maxHeight);this.innerList.setHeight(C);this.list.beginUpdate();this.list.setHeight(C+E);this.list.alignTo(this.el,this.listAlign);this.list.endUpdate()},onEmptyResults:function(){this.collapse()},isExpanded:function(){return this.list&&this.list.isVisible()},selectByValue:function(A,C){if(A!==undefined&&A!==null){var B=this.findRecord(this.valueField||this.displayField,A);if(B){this.select(this.store.indexOf(B),C);return true}}return false},select:function(A,C){this.selectedIndex=A;this.view.select(A);if(C!==false){var B=this.view.getNode(A);if(B){this.innerList.scrollChildIntoView(B,false)}}},selectNext:function(){var A=this.store.getCount();if(A>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex!=0){this.select(this.selectedIndex-1)}}}},onKeyUp:function(A){if(this.editable!==false&&!A.isSpecialKey()){this.lastKey=A.getKey();this.dqTask.delay(this.queryDelay)}},validateBlur:function(){return!this.list||!this.list.isVisible()},initQuery:function(){this.doQuery(this.getRawValue())},doForce:function(){if(this.el.dom.value.length>0){this.el.dom.value=this.lastSelectionText===undefined?"":this.lastSelectionText;this.applyEmptyText()}},doQuery:function(C,B){if(C===undefined||C===null){C=""}var A={query:C,forceAll:B,combo:this,cancel:false};if(this.fireEvent("beforequery",A)===false||A.cancel){return false}C=A.query;B=A.forceAll;if(B===true||(C.length>=this.minChars)){if(this.lastQuery!==C){this.lastQuery=C;if(this.mode=="local"){this.selectedIndex=-1;if(B){this.store.clearFilter()}else{this.store.filter(this.displayField,C)}this.onLoad()}else{this.store.baseParams[this.queryParam]=C;this.store.load({params:this.getParams(C)});this.expand()}}else{this.selectedIndex=-1;this.onLoad()}}},getParams:function(A){var B={};if(this.pageSize){B.start=0;B.limit=this.pageSize}return B},collapse:function(){if(!this.isExpanded()){return}this.list.hide();Ext.getDoc().un("mousewheel",this.collapseIf,this);Ext.getDoc().un("mousedown",this.collapseIf,this);this.fireEvent("collapse",this)},collapseIf:function(A){if(!A.within(this.wrap)&&!A.within(this.list)){this.collapse()}},expand:function(){if(this.isExpanded()||!this.hasFocus){return}this.list.alignTo(this.wrap,this.listAlign);this.list.show();this.innerList.setOverflow("auto");Ext.getDoc().on("mousewheel",this.collapseIf,this);Ext.getDoc().on("mousedown",this.collapseIf,this);this.fireEvent("expand",this)},onTriggerClick:function(){if(this.disabled){return}if(this.isExpanded()){this.collapse();this.el.focus()}else{this.onFocus({});if(this.triggerAction=="all"){this.doQuery(this.allQuery,true)}else{this.doQuery(this.getRawValue())}this.el.focus()}}});Ext.reg("combo",Ext.form.ComboBox);Ext.form.Checkbox=Ext.extend(Ext.form.Field,{focusClass:undefined,fieldClass:"x-form-field",checked:false,defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},initComponent:function(){Ext.form.Checkbox.superclass.initComponent.call(this);this.addEvents("check")},onResize:function(){Ext.form.Checkbox.superclass.onResize.apply(this,arguments);if(!this.boxLabel){this.el.alignTo(this.wrap,"c-c")}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.el.on("click",this.onClick,this);this.el.on("change",this.onClick,this)},getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,onRender:function(B,A){Ext.form.Checkbox.superclass.onRender.call(this,B,A);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue}this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:"label",htmlFor:this.el.id,cls:"x-form-cb-label",html:this.boxLabel})}if(this.checked){this.setValue(true)}else{this.checked=this.el.dom.checked}},onDestroy:function(){if(this.wrap){this.wrap.remove()}Ext.form.Checkbox.superclass.onDestroy.call(this)},initValue:Ext.emptyFn,getValue:function(){if(this.rendered){return this.el.dom.checked}return false},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked)}},setValue:function(A){this.checked=(A===true||A==="true"||A=="1"||String(A).toLowerCase()=="on");if(this.el&&this.el.dom){this.el.dom.checked=this.checked;this.el.dom.defaultChecked=this.checked}this.fireEvent("check",this,this.checked)}});Ext.reg("checkbox",Ext.form.Checkbox);Ext.form.Radio=Ext.extend(Ext.form.Checkbox,{inputType:"radio",markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,getGroupValue:function(){var A=this.el.up("form")||Ext.getBody();var B=A.child("input[name="+this.el.dom.name+"]:checked",true);return B?B.value:null},onClick:function(){if(this.el.dom.checked!=this.checked){var B=this.el.up("form")||Ext.getBody();var A=B.select("input[name="+this.el.dom.name+"]");A.each(function(C){if(C.dom.id==this.id){this.setValue(true)}else{Ext.getCmp(C.dom.id).setValue(false)}},this)}},setValue:function(A){if(typeof A=="boolean"){Ext.form.Radio.superclass.setValue.call(this,A)}else{var B=this.el.up("form").child("input[name="+this.el.dom.name+"][value="+A+"]",true);if(B){B.checked=true}}}});Ext.reg("radio",Ext.form.Radio);Ext.form.Hidden=Ext.extend(Ext.form.Field,{inputType:"hidden",onRender:function(){Ext.form.Hidden.superclass.onRender.apply(this,arguments)},initEvents:function(){this.originalValue=this.getValue()},setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg("hidden",Ext.form.Hidden);Ext.form.BasicForm=function(B,A){Ext.apply(this,A);this.items=new Ext.util.MixedCollection(false,function(C){return C.id||(C.id=Ext.id())});this.addEvents("beforeaction","actionfailed","actioncomplete");if(B){this.initEl(B)}Ext.form.BasicForm.superclass.constructor.call(this)};Ext.extend(Ext.form.BasicForm,Ext.util.Observable,{timeout:30,activeAction:null,trackResetOnLoad:false,initEl:function(A){this.el=Ext.get(A);this.id=this.el.id||Ext.id();if(!this.standardSubmit){this.el.on("submit",this.onSubmit,this)}this.el.addClass("x-form")},getEl:function(){return this.el},onSubmit:function(A){A.stopEvent()},destroy:function(){this.items.each(function(A){Ext.destroy(A)});if(this.el){this.el.removeAllListeners();this.el.remove()}this.purgeListeners()},isValid:function(){var A=true;this.items.each(function(B){if(!B.validate()){A=false}});return A},isDirty:function(){var A=false;this.items.each(function(B){if(B.isDirty()){A=true;return false}});return A},doAction:function(B,A){if(typeof B=="string"){B=new Ext.form.Action.ACTION_TYPES[B](this,A)}if(this.fireEvent("beforeaction",this,B)!==false){this.beforeAction(B);B.run.defer(100,B)}return this},submit:function(B){if(this.standardSubmit){var A=this.isValid();if(A){this.el.dom.submit()}return A}this.doAction("submit",B);return this},load:function(A){this.doAction("load",A);return this},updateRecord:function(B){B.beginEdit();var A=B.fields;A.each(function(C){var D=this.findField(C.name);if(D){B.set(C.name,D.getValue())}},this);B.endEdit();return this},loadRecord:function(A){this.setValues(A.data);return this},beforeAction:function(A){var B=A.options;if(B.waitMsg){if(this.waitMsgTarget===true){this.el.mask(B.waitMsg,"x-mask-loading")}else{if(this.waitMsgTarget){this.waitMsgTarget=Ext.get(this.waitMsgTarget);this.waitMsgTarget.mask(B.waitMsg,"x-mask-loading")}else{Ext.MessageBox.wait(B.waitMsg,B.waitTitle||this.waitTitle||"Please Wait...")}}}},afterAction:function(A,C){this.activeAction=null;var B=A.options;if(B.waitMsg){if(this.waitMsgTarget===true){this.el.unmask()}else{if(this.waitMsgTarget){this.waitMsgTarget.unmask()}else{Ext.MessageBox.updateProgress(1);Ext.MessageBox.hide()}}}if(C){if(B.reset){this.reset()}Ext.callback(B.success,B.scope,[this,A]);this.fireEvent("actioncomplete",this,A)}else{Ext.callback(B.failure,B.scope,[this,A]);this.fireEvent("actionfailed",this,A)}},findField:function(B){var A=this.items.get(B);if(!A){this.items.each(function(C){if(C.isFormField&&(C.dataIndex==B||C.id==B||C.getName()==B)){A=C;return false}})}return A||null},markInvalid:function(G){if(Ext.isArray(G)){for(var C=0,A=G.length;C":">"),C,"")}return D.join("")},createToolbar:function(C){function B(F,D,E){return{itemId:F,cls:"x-btn-icon x-edit-"+F,enableToggle:D!==false,scope:C,handler:E||C.relayBtnCmd,clickEvent:"mousedown",tooltip:C.buttonTips[F]||undefined,tabIndex:-1}}var A=new Ext.Toolbar({renderTo:this.wrap.dom.firstChild});A.el.on("click",function(D){D.preventDefault()});if(this.enableFont&&!Ext.isSafari){this.fontSelect=A.el.createChild({tag:"select",cls:"x-font-select",html:this.createFontOptions()});this.fontSelect.on("change",function(){var D=this.fontSelect.dom.value;this.relayCmd("fontname",D);this.deferFocus()},this);A.add(this.fontSelect.dom,"-")}if(this.enableFormat){A.add(B("bold"),B("italic"),B("underline"))}if(this.enableFontSize){A.add("-",B("increasefontsize",false,this.adjustFont),B("decreasefontsize",false,this.adjustFont))}if(this.enableColors){A.add("-",{itemId:"forecolor",cls:"x-btn-icon x-edit-forecolor",clickEvent:"mousedown",tooltip:C.buttonTips["forecolor"]||undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,selectHandler:function(E,D){this.execCmd("forecolor",Ext.isSafari||Ext.isIE?"#"+D:D);this.deferFocus()},scope:this,clickEvent:"mousedown"})},{itemId:"backcolor",cls:"x-btn-icon x-edit-backcolor",clickEvent:"mousedown",tooltip:C.buttonTips["backcolor"]||undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,selectHandler:function(E,D){if(Ext.isGecko){this.execCmd("useCSS",false);this.execCmd("hilitecolor",D);this.execCmd("useCSS",true);this.deferFocus()}else{this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isSafari||Ext.isIE?"#"+D:D);this.deferFocus()}},scope:this,clickEvent:"mousedown"})})}if(this.enableAlignments){A.add("-",B("justifyleft"),B("justifycenter"),B("justifyright"))}if(!Ext.isSafari){if(this.enableLinks){A.add("-",B("createlink",false,this.createLink))}if(this.enableLists){A.add("-",B("insertorderedlist"),B("insertunorderedlist"))}if(this.enableSourceEdit){A.add("-",B("sourceedit",true,function(D){this.toggleSourceEdit(D.pressed)}))}}this.tb=A},getDocMarkup:function(){return""},getEditorBody:function(){return this.doc.body||this.doc.documentElement},onRender:function(C,A){Ext.form.HtmlEditor.superclass.onRender.call(this,C,A);this.el.dom.style.border="0 none";this.el.dom.setAttribute("tabIndex",-1);this.el.addClass("x-hidden");if(Ext.isIE){this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")}this.wrap=this.el.wrap({cls:"x-html-editor-wrap",cn:{cls:"x-html-editor-tb"}});this.createToolbar(this);this.tb.items.each(function(E){if(E.itemId!="sourceedit"){E.disable()}});var D=document.createElement("iframe");D.name=Ext.id();D.frameBorder="no";D.src=(Ext.SSL_SECURE_URL||"javascript:false");this.wrap.dom.appendChild(D);this.iframe=D;if(Ext.isIE){D.contentWindow.document.designMode="on";this.doc=D.contentWindow.document;this.win=D.contentWindow}else{this.doc=(D.contentDocument||window.frames[D.name].document);this.win=window.frames[D.name];this.doc.designMode="on"}this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var B={run:function(){if(this.doc.body||this.doc.readyState=="complete"){Ext.TaskMgr.stop(B);this.doc.designMode="on";this.initEditor.defer(10,this)}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(B);if(!this.width){this.setSize(this.el.getSize())}},onResize:function(B,C){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(typeof B=="number"){var D=B-this.wrap.getFrameWidth("lr");this.el.setWidth(this.adjustWidth("textarea",D));this.iframe.style.width=D+"px"}if(typeof C=="number"){var A=C-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();this.el.setHeight(this.adjustWidth("textarea",A));this.iframe.style.height=A+"px";if(this.doc){this.getEditorBody().style.height=(A-(this.iframePad*2))+"px"}}}},toggleSourceEdit:function(A){if(A===undefined){A=!this.sourceEditMode}this.sourceEditMode=A===true;var C=this.tb.items.get("sourceedit");if(C.pressed!==this.sourceEditMode){C.toggle(this.sourceEditMode);return}if(this.sourceEditMode){this.tb.items.each(function(D){if(D.itemId!="sourceedit"){D.disable()}});this.syncValue();this.iframe.className="x-hidden";this.el.removeClass("x-hidden");this.el.dom.removeAttribute("tabIndex");this.el.focus()}else{if(this.initialized){this.tb.items.each(function(D){D.enable()})}this.pushValue();this.iframe.className="";this.el.addClass("x-hidden");this.el.dom.setAttribute("tabIndex",-1);this.deferFocus()}var B=this.lastSize;if(B){delete this.lastSize;this.setSize(B)}this.fireEvent("editmodechange",this,this.sourceEditMode)},createLink:function(){var A=prompt(this.createLinkText,this.defaultLinkValue);if(A&&A!="http://"){this.relayCmd("createlink",A)}},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},initEvents:function(){this.originalValue=this.getValue()},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(A){Ext.form.HtmlEditor.superclass.setValue.call(this,A);this.pushValue()},cleanHtml:function(A){A=String(A);if(A.length>5){if(Ext.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}}if(A==" "){A=""}return A},syncValue:function(){if(this.initialized){var D=this.getEditorBody();var C=D.innerHTML;if(Ext.isSafari){var B=D.getAttribute("style");var A=B.match(/text-align:(.*?);/i);if(A&&A[1]){C="
    "+C+"
    "}}C=this.cleanHtml(C);if(this.fireEvent("beforesync",this,C)!==false){this.el.dom.value=C;this.fireEvent("sync",this,C)}}},pushValue:function(){if(this.initialized){var A=this.el.dom.value;if(!this.activated&&A.length<1){A=" "}if(this.fireEvent("beforepush",this,A)!==false){this.getEditorBody().innerHTML=A;this.fireEvent("push",this,A)}}},deferFocus:function(){this.focus.defer(10,this)},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus()}else{this.el.focus()}},initEditor:function(){var B=this.getEditorBody();var A=this.el.getStyles("font-size","font-family","background-image","background-repeat");A["background-attachment"]="fixed";B.bgProperties="fixed";Ext.DomHelper.applyStyles(B,A);Ext.EventManager.on(this.doc,{"mousedown":this.onEditorEvent,"dblclick":this.onEditorEvent,"click":this.onEditorEvent,"keyup":this.onEditorEvent,buffer:100,scope:this});if(Ext.isGecko){Ext.EventManager.on(this.doc,"keypress",this.applyCommand,this)}if(Ext.isIE||Ext.isSafari||Ext.isOpera){Ext.EventManager.on(this.doc,"keydown",this.fixKeys,this)}this.initialized=true;this.fireEvent("initialize",this);this.pushValue()},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();if(A.menu.el){A.menu.el.destroy()}}A.destroy()});this.wrap.dom.innerHTML="";this.wrap.remove()}},onFirstFocus:function(){this.activated=true;this.tb.items.each(function(D){D.enable()});if(Ext.isGecko){this.win.focus();var A=this.win.getSelection();if(!A.focusNode||A.focusNode.nodeType!=3){var B=A.getRangeAt(0);B.selectNodeContents(this.getEditorBody());B.collapse(true);this.deferFocus()}try{this.execCmd("useCSS",true);this.execCmd("styleWithCSS",false)}catch(C){}}this.fireEvent("activate",this)},adjustFont:function(B){var C=B.itemId=="increasefontsize"?1:-1;var A=parseInt(this.doc.queryCommandValue("FontSize")||2,10);if(Ext.isSafari3||Ext.isAir){if(A<=10){A=1+C}else{if(A<=13){A=2+C}else{if(A<=16){A=3+C}else{if(A<=18){A=4+C}else{if(A<=24){A=5+C}else{A=6+C}}}}}A=A.constrain(1,6)}else{if(Ext.isSafari){C*=2}A=Math.max(1,A+C)+(Ext.isSafari?"px":0)}this.execCmd("FontSize",A)},onEditorEvent:function(A){this.updateToolbar()},updateToolbar:function(){if(!this.activated){this.onFirstFocus();return}var B=this.tb.items.map,C=this.doc;if(this.enableFont&&!Ext.isSafari){var A=(this.doc.queryCommandValue("FontName")||this.defaultFont).toLowerCase();if(A!=this.fontSelect.dom.value){this.fontSelect.dom.value=A}}if(this.enableFormat){B.bold.toggle(C.queryCommandState("bold"));B.italic.toggle(C.queryCommandState("italic"));B.underline.toggle(C.queryCommandState("underline"))}if(this.enableAlignments){B.justifyleft.toggle(C.queryCommandState("justifyleft"));B.justifycenter.toggle(C.queryCommandState("justifycenter"));B.justifyright.toggle(C.queryCommandState("justifyright"))}if(!Ext.isSafari&&this.enableLists){B.insertorderedlist.toggle(C.queryCommandState("insertorderedlist"));B.insertunorderedlist.toggle(C.queryCommandState("insertunorderedlist"))}Ext.menu.MenuMgr.hideAll();this.syncValue()},relayBtnCmd:function(A){this.relayCmd(A.itemId)},relayCmd:function(B,A){this.win.focus();this.execCmd(B,A);this.updateToolbar();this.deferFocus()},execCmd:function(B,A){this.doc.execCommand(B,false,A===undefined?null:A);this.syncValue()},applyCommand:function(B){if(B.ctrlKey){var C=B.getCharCode(),A;if(C>0){C=String.fromCharCode(C);switch(C){case"b":A="bold";break;case"i":A="italic";break;case"u":A="underline";break}if(A){this.win.focus();this.execCmd(A);this.deferFocus();B.preventDefault()}}}},insertAtCursor:function(B){if(!this.activated){return}if(Ext.isIE){this.win.focus();var A=this.doc.selection.createRange();if(A){A.collapse(true);A.pasteHTML(B);this.syncValue();this.deferFocus()}}else{if(Ext.isGecko||Ext.isOpera){this.win.focus();this.execCmd("InsertHTML",B);this.deferFocus()}else{if(Ext.isSafari){this.execCmd("InsertText",B);this.deferFocus()}}}},fixKeys:function(){if(Ext.isIE){return function(D){var A=D.getKey(),B;if(A==D.TAB){D.stopEvent();B=this.doc.selection.createRange();if(B){B.collapse(true);B.pasteHTML("    ");this.deferFocus()}}else{if(A==D.ENTER){B=this.doc.selection.createRange();if(B){var C=B.parentElement();if(!C||C.tagName.toLowerCase()!="li"){D.stopEvent();B.pasteHTML("
    ");B.collapse(false);B.select()}}}}}}else{if(Ext.isOpera){return function(B){var A=B.getKey();if(A==B.TAB){B.stopEvent();this.win.focus();this.execCmd("InsertHTML","    ");this.deferFocus()}}}else{if(Ext.isSafari){return function(B){var A=B.getKey();if(A==B.TAB){B.stopEvent();this.execCmd("InsertText","\t");this.deferFocus()}}}}}}(),getToolbar:function(){return this.tb},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:"x-html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:"x-html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:"x-html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:"x-html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:"x-html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:"x-html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:"x-html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:"x-html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:"x-html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:"x-html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:"x-html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:"x-html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:"x-html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:"x-html-editor-tip"}}});Ext.reg("htmleditor",Ext.form.HtmlEditor);Ext.form.TimeField=Ext.extend(Ext.form.ComboBox,{minValue:null,maxValue:null,minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initComponent:function(){Ext.form.TimeField.superclass.initComponent.call(this);if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue)}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue)}if(!this.store){var B=this.parseDate(this.minValue);if(!B){B=new Date().clearTime()}var A=this.parseDate(this.maxValue);if(!A){A=new Date().clearTime().add("mi",(24*60)-1)}var C=[];while(B<=A){C.push([B.dateFormat(this.format)]);B=B.add("mi",this.increment)}this.store=new Ext.data.SimpleStore({fields:["text"],data:C});this.displayField="text"}},getValue:function(){var A=Ext.form.TimeField.superclass.getValue.call(this);return this.formatDate(this.parseDate(A))||""},setValue:function(A){Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)))},validateValue:Ext.form.DateField.prototype.validateValue,parseDate:Ext.form.DateField.prototype.parseDate,formatDate:Ext.form.DateField.prototype.formatDate,beforeBlur:function(){var A=this.parseDate(this.getRawValue());if(A){this.setValue(A.dateFormat(this.format))}}});Ext.reg("timefield",Ext.form.TimeField);Ext.form.Label=Ext.extend(Ext.BoxComponent,{onRender:function(B,A){if(!this.el){this.el=document.createElement("label");this.el.innerHTML=this.text?Ext.util.Format.htmlEncode(this.text):(this.html||"");if(this.forId){this.el.setAttribute("htmlFor",this.forId)}}Ext.form.Label.superclass.onRender.call(this,B,A)}});Ext.reg("label",Ext.form.Label);Ext.form.Action=function(B,A){this.form=B;this.options=A||{}};Ext.form.Action.CLIENT_INVALID="client";Ext.form.Action.SERVER_INVALID="server";Ext.form.Action.CONNECT_FAILURE="connect";Ext.form.Action.LOAD_FAILURE="load";Ext.form.Action.prototype={type:"default",run:function(A){},success:function(A){},handleResponse:function(A){},failure:function(A){this.response=A;this.failureType=Ext.form.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(A){this.response=A;if(!A.responseText){return true}this.result=this.handleResponse(A);return this.result},getUrl:function(C){var A=this.options.url||this.form.url||this.form.el.dom.action;if(C){var B=this.getParams();if(B){A+=(A.indexOf("?")!=-1?"&":"?")+B}}return A},getMethod:function(){return(this.options.method||this.form.method||this.form.el.dom.method||"POST").toUpperCase()},getParams:function(){var A=this.form.baseParams;var B=this.options.params;if(B){if(typeof B=="object"){B=Ext.urlEncode(Ext.applyIf(B,A))}else{if(typeof B=="string"&&A){B+="&"+Ext.urlEncode(A)}}}else{if(A){B=Ext.urlEncode(A)}}return B},createCallback:function(A){var A=A||{};return{success:this.success,failure:this.failure,scope:this,timeout:(A.timeout*1000)||(this.form.timeout*1000),upload:this.form.fileUpload?this.success:undefined}}};Ext.form.Action.Submit=function(B,A){Ext.form.Action.Submit.superclass.constructor.call(this,B,A)};Ext.extend(Ext.form.Action.Submit,Ext.form.Action,{type:"submit",run:function(){var B=this.options;var C=this.getMethod();var A=C=="POST";if(B.clientValidation===false||this.form.isValid()){Ext.Ajax.request(Ext.apply(this.createCallback(B),{form:this.form.el.dom,url:this.getUrl(!A),method:C,params:A?this.getParams():null,isUpload:this.form.fileUpload}))}else{if(B.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false)}}},success:function(B){var A=this.processResponse(B);if(A===true||A.success){this.form.afterAction(this,true);return}if(A.errors){this.form.markInvalid(A.errors);this.failureType=Ext.form.Action.SERVER_INVALID}this.form.afterAction(this,false)},handleResponse:function(C){if(this.form.errorReader){var B=this.form.errorReader.read(C);var F=[];if(B.records){for(var D=0,A=B.records.length;D=0){if(!D){C=F-1}D=false;while(C>=0){if(E.call(I||this,J,C,H)===true){return[J,C]}C--}J--}}else{if(C>=F){J++;D=false}while(J","
    ","
    {header}
    ","
    {body}
    ","
    ","
     
    ","
     
    ","")}if(!C.header){C.header=new Ext.Template("","{cells}","
    ")}if(!C.hcell){C.hcell=new Ext.Template("
    ",this.grid.enableHdMenu?"":"","{value}","
    ")}if(!C.body){C.body=new Ext.Template("{rows}")}if(!C.row){C.row=new Ext.Template("
    ","{cells}",(this.enableRowBody?"":""),"
    {body}
    ")}if(!C.cell){C.cell=new Ext.Template("","
    {value}
    ","")}for(var A in C){var B=C[A];if(B&&typeof B.compile=="function"&&!B.compiled){B.disableFormats=true;B.compile()}}this.templates=C;this.tdClass="x-grid3-cell";this.cellSelector="td.x-grid3-cell";this.hdCls="x-grid3-hd";this.rowSelector="div.x-grid3-row";this.colRe=new RegExp("x-grid3-td-([^\\s]+)","")},fly:function(A){if(!this._flyweight){this._flyweight=new Ext.Element.Flyweight(document.body)}this._flyweight.dom=A;return this._flyweight},getEditorParent:function(A){return this.scroller.dom},initElements:function(){var C=Ext.Element;var B=this.grid.getGridEl().dom.firstChild;var A=B.childNodes;this.el=new C(B);this.mainWrap=new C(A[0]);this.mainHd=new C(this.mainWrap.dom.firstChild);if(this.grid.hideHeaders){this.mainHd.setDisplayed(false)}this.innerHd=this.mainHd.dom.firstChild;this.scroller=new C(this.mainWrap.dom.childNodes[1]);if(this.forceFit){this.scroller.setStyle("overflow-x","hidden")}this.mainBody=new C(this.scroller.dom.firstChild);this.focusEl=new C(this.scroller.dom.childNodes[1]);this.focusEl.swallowEvent("click",true);this.resizeMarker=new C(A[1]);this.resizeProxy=new C(A[2])},getRows:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},findCell:function(A){if(!A){return false}return this.fly(A).findParent(this.cellSelector,3)},findCellIndex:function(C,B){var A=this.findCell(C);if(A&&(!B||this.fly(A).hasClass(B))){return this.getCellIndex(A)}return false},getCellIndex:function(B){if(B){var A=B.className.match(this.colRe);if(A&&A[1]){return this.cm.getIndexById(A[1])}}return false},findHeaderCell:function(B){var A=this.findCell(B);return A&&this.fly(A).hasClass(this.hdCls)?A:null},findHeaderIndex:function(A){return this.findCellIndex(A,this.hdCls)},findRow:function(A){if(!A){return false}return this.fly(A).findParent(this.rowSelector,10)},findRowIndex:function(A){var B=this.findRow(A);return B?B.rowIndex:false},getRow:function(A){return this.getRows()[A]},getCell:function(B,A){return this.getRow(B).getElementsByTagName("td")[A]},getHeaderCell:function(A){return this.mainHd.dom.getElementsByTagName("td")[A]},addRowClass:function(C,A){var B=this.getRow(C);if(B){this.fly(B).addClass(A)}},removeRowClass:function(C,A){var B=this.getRow(C);if(B){this.fly(B).removeClass(A)}},removeRow:function(A){Ext.removeNode(this.getRow(A))},removeRows:function(C,A){var B=this.mainBody.dom;for(var D=C;D<=A;D++){Ext.removeNode(B.childNodes[C])}},getScrollState:function(){var A=this.scroller.dom;return{left:A.scrollLeft,top:A.scrollTop}},restoreScroll:function(A){var B=this.scroller.dom;B.scrollLeft=A.left;B.scrollTop=A.top},scrollToTop:function(){this.scroller.dom.scrollTop=0;this.scroller.dom.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var A=this.scroller.dom;this.grid.fireEvent("bodyscroll",A.scrollLeft,A.scrollTop)},syncHeaderScroll:function(){var A=this.scroller.dom;this.innerHd.scrollLeft=A.scrollLeft;this.innerHd.scrollLeft=A.scrollLeft},updateSortIcon:function(B,A){var D=this.sortClasses;var C=this.mainHd.select("td").removeClass(D);C.item(B).addClass(D[A=="DESC"?1:0])},updateAllColumnWidths:function(){var D=this.getTotalWidth();var H=this.cm.getColumnCount();var F=[];for(var B=0;B=this.ds.getCount()){return}E=(E!==undefined?E:0);var I=this.getRow(P),F;if(!(D===false&&E===0)){while(this.cm.isHidden(E)){E++}F=this.getCell(P,E)}if(!I){return}var L=this.scroller.dom;var O=0;var C=I,M=this.el.dom;while(C&&C!=M){O+=C.offsetTop;C=C.offsetParent}O-=this.mainHd.dom.offsetHeight;var N=O+I.offsetHeight;var A=L.clientHeight;var M=parseInt(L.scrollTop,10);var K=M+A;if(OK){L.scrollTop=N-A}}if(D!==false){var J=parseInt(F.offsetLeft,10);var H=J+F.offsetWidth;var G=parseInt(L.scrollLeft,10);var B=G+L.clientWidth;if(JB){L.scrollLeft=H-L.clientWidth}}}return F?Ext.fly(F).getXY():[L.scrollLeft,Ext.fly(I).getY()]},insertRows:function(A,F,C,E){if(!E&&F===0&&C==A.getCount()-1){this.refresh()}else{if(!E){this.fireEvent("beforerowsinserted",this,F,C)}var B=this.renderRows(F,C);var D=this.getRow(F);if(D){Ext.DomHelper.insertHtml("beforeBegin",D,B)}else{Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,B)}if(!E){this.fireEvent("rowsinserted",this,F,C);this.processRows(F)}}},deleteRows:function(A,C,B){if(A.getRowCount()<1){this.refresh()}else{this.fireEvent("beforerowsdeleted",this,C,B);this.removeRows(C,B);this.processRows(C);this.fireEvent("rowsdeleted",this,C,B)}},getColumnStyle:function(A,C){var B=!C?(this.cm.config[A].css||""):"";B+="width:"+this.getColumnWidth(A)+";";if(this.cm.isHidden(A)){B+="display:none;"}var D=this.cm.config[A].align;if(D){B+="text-align:"+D+";"}return B},getColumnWidth:function(B){var A=this.cm.getColumnWidth(B);if(typeof A=="number"){return(Ext.isBorderBox?A:(A-this.borderWidth>0?A-this.borderWidth:0))+"px"}return A},getTotalWidth:function(){return this.cm.getTotalWidth()+"px"},fitColumns:function(D,G,E){var F=this.cm,S,L,O;var R=F.getTotalWidth(false);var J=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(J<20){return}var B=J-R;if(B===0){return false}var A=F.getColumnCount(true);var P=A-(typeof E=="number"?1:0);if(P===0){P=1;E=undefined}var K=F.getColumnCount();var I=[];var N=0;var M=0;var H;for(O=0;OJ){var Q=P!=A?E:N;F.setColumnWidth(Q,Math.max(1,F.getColumnWidth(Q)-(R-J)),true)}if(D!==true){this.updateAllColumnWidths()}return true},autoExpand:function(B){var G=this.grid,A=this.cm;if(!this.userResized&&G.autoExpandColumn){var D=A.getTotalWidth(false);var H=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(D!=H){var F=A.getIndexById(G.autoExpandColumn);var E=A.getColumnWidth(F);var C=Math.min(Math.max(((H-D)+E),G.autoExpandMin),G.autoExpandMax);if(C!=E){A.setColumnWidth(F,C,true);if(B!==true){this.updateColumnWidth(F,C)}}}}},getColumnData:function(){var D=[],A=this.cm,E=A.getColumnCount();for(var C=0;C"+this.emptyText+"")}},updateHeaderSortState:function(){var B=this.ds.getSortState();if(!B){return}if(!this.sortState||(this.sortState.field!=B.field||this.sortState.direction!=B.direction)){this.grid.fireEvent("sortchange",this.grid,B)}this.sortState=B;var C=this.cm.findColumnIndex(B.field);if(C!=-1){var A=B.direction;this.updateSortIcon(C,A)}},destroy:function(){if(this.colMenu){this.colMenu.removeAll();Ext.menu.MenuMgr.unregister(this.colMenu);this.colMenu.getEl().remove();delete this.colMenu}if(this.hmenu){this.hmenu.removeAll();Ext.menu.MenuMgr.unregister(this.hmenu);this.hmenu.getEl().remove();delete this.hmenu}if(this.grid.enableColumnMove){var C=Ext.dd.DDM.ids["gridHeader"+this.grid.getGridEl().id];if(C){for(var A in C){if(!C[A].config.isTarget&&C[A].dragElId){var B=C[A].dragElId;C[A].unreg();Ext.get(B).remove()}else{if(C[A].config.isTarget){C[A].proxyTop.remove();C[A].proxyBottom.remove();C[A].unreg()}}if(Ext.dd.DDM.locationCache[A]){delete Ext.dd.DDM.locationCache[A]}}delete Ext.dd.DDM.ids["gridHeader"+this.grid.getGridEl().id]}}Ext.destroy(this.resizeMarker,this.resizeProxy);this.initData(null,null);Ext.EventManager.removeResizeListener(this.onWindowResize,this)},onDenyColumnHide:function(){},render:function(){var A=this.cm;var B=A.getColumnCount();if(this.autoFill){this.fitColumns(true,true)}else{if(this.forceFit){this.fitColumns(true,false)}else{if(this.grid.autoExpandColumn){this.autoExpand(true)}}}this.renderUI()},initData:function(B,A){if(this.ds){this.ds.un("load",this.onLoad,this);this.ds.un("datachanged",this.onDataChange,this);this.ds.un("add",this.onAdd,this);this.ds.un("remove",this.onRemove,this);this.ds.un("update",this.onUpdate,this);this.ds.un("clear",this.onClear,this)}if(B){B.on("load",this.onLoad,this);B.on("datachanged",this.onDataChange,this);B.on("add",this.onAdd,this);B.on("remove",this.onRemove,this);B.on("update",this.onUpdate,this);B.on("clear",this.onClear,this)}this.ds=B;if(this.cm){this.cm.un("configchange",this.onColConfigChange,this);this.cm.un("widthchange",this.onColWidthChange,this);this.cm.un("headerchange",this.onHeaderChange,this);this.cm.un("hiddenchange",this.onHiddenChange,this);this.cm.un("columnmoved",this.onColumnMove,this);this.cm.un("columnlockchange",this.onColumnLock,this)}if(A){A.on("configchange",this.onColConfigChange,this);A.on("widthchange",this.onColWidthChange,this);A.on("headerchange",this.onHeaderChange,this);A.on("hiddenchange",this.onHiddenChange,this);A.on("columnmoved",this.onColumnMove,this);A.on("columnlockchange",this.onColumnLock,this)}this.cm=A},onDataChange:function(){this.refresh();this.updateHeaderSortState()},onClear:function(){this.refresh()},onUpdate:function(B,A){this.refreshRow(A)},onAdd:function(C,A,B){this.insertRows(C,B,B+(A.length-1))},onRemove:function(D,A,B,C){if(C!==true){this.fireEvent("beforerowremoved",this,B,A)}this.removeRow(B);if(C!==true){this.processRows(B);this.applyEmptyText();this.fireEvent("rowremoved",this,B,A)}},onLoad:function(){this.scrollToTop()},onColWidthChange:function(A,B,C){this.updateColumnWidth(B,C)},onHeaderChange:function(A,B,C){this.updateHeaders()},onHiddenChange:function(A,B,C){this.updateColumnHidden(B,C)},onColumnMove:function(A,D,B){this.indexMap=null;var C=this.getScrollState();this.refresh(true);this.restoreScroll(C);this.afterMove(B)},onColConfigChange:function(){delete this.lastViewWidth;this.indexMap=null;this.refresh(true)},initUI:function(A){A.on("headerclick",this.onHeaderClick,this);if(A.trackMouseOver){A.on("mouseover",this.onRowOver,this);A.on("mouseout",this.onRowOut,this)}},initEvents:function(){},onHeaderClick:function(B,A){if(this.headersDisabled||!this.cm.isSortable(A)){return}B.stopEditing(true);B.store.sort(this.cm.getDataIndex(A))},onRowOver:function(B,A){var C;if((C=this.findRowIndex(A))!==false){this.addRowClass(C,"x-grid3-row-over")}},onRowOut:function(B,A){var C;if((C=this.findRowIndex(A))!==false&&C!==this.findRowIndex(B.getRelatedTarget())){this.removeRowClass(C,"x-grid3-row-over")}},handleWheel:function(A){A.stopPropagation()},onRowSelect:function(A){this.addRowClass(A,"x-grid3-row-selected")},onRowDeselect:function(A){this.removeRowClass(A,"x-grid3-row-selected")},onCellSelect:function(C,B){var A=this.getCell(C,B);if(A){this.fly(A).addClass("x-grid3-cell-selected")}},onCellDeselect:function(C,B){var A=this.getCell(C,B);if(A){this.fly(A).removeClass("x-grid3-cell-selected")}},onColumnSplitterMoved:function(C,B){this.userResized=true;var A=this.grid.colModel;A.setColumnWidth(C,B,true);if(this.forceFit){this.fitColumns(true,false,C);this.updateAllColumnWidths()}else{this.updateColumnWidth(C,B)}this.grid.fireEvent("columnresize",C,B)},handleHdMenuClick:function(C){var B=this.hdCtxIndex;var A=this.cm,D=this.ds;switch(C.id){case"asc":D.sort(A.getDataIndex(B),"ASC");break;case"desc":D.sort(A.getDataIndex(B),"DESC");break;default:B=A.getIndexById(C.id.substr(4));if(B!=-1){if(C.checked&&A.getColumnsBy(this.isHideableColumn,this).length<=1){this.onDenyColumnHide();return false}A.setHidden(B,C.checked)}}return true},isHideableColumn:function(A){return!A.hidden&&!A.fixed},beforeColMenuShow:function(){var A=this.cm,C=A.getColumnCount();this.colMenu.removeAll();for(var B=0;B","
    ",this.groupTextTpl,"
    ","
    ")}this.startGroup.compile();this.endGroup="
    "},findGroup:function(A){return Ext.fly(A).up(".x-grid-group",this.mainBody.dom)},getGroups:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},onAdd:function(){if(this.enableGrouping&&!this.ignoreAdd){var A=this.getScrollState();this.refresh();this.restoreScroll(A)}else{if(!this.enableGrouping){Ext.grid.GroupingView.superclass.onAdd.apply(this,arguments)}}},onRemove:function(E,A,B,D){Ext.grid.GroupingView.superclass.onRemove.apply(this,arguments);var C=document.getElementById(A._groupId);if(C&&C.childNodes[1].childNodes.length<1){Ext.removeNode(C)}this.applyEmptyText()},refreshRow:function(A){if(this.ds.getCount()==1){this.refresh()}else{this.isUpdating=true;Ext.grid.GroupingView.superclass.refreshRow.apply(this,arguments);this.isUpdating=false}},beforeMenuShow:function(){var C=this.getGroupField();var B=this.hmenu.items.get("groupBy");if(B){B.setDisabled(this.cm.config[this.hdCtxIndex].groupable===false)}var A=this.hmenu.items.get("showGroups");if(A){if(!!C){A.setDisabled(this.cm.config[this.hdCtxIndex].groupable===false)}A.setChecked(!!C)}},renderUI:function(){Ext.grid.GroupingView.superclass.renderUI.call(this);this.mainBody.on("mousedown",this.interceptMouse,this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{id:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({id:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}},onGroupByClick:function(){this.grid.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));this.beforeMenuShow()},onShowGroupsClick:function(A,B){if(B){this.onGroupByClick()}else{this.grid.store.clearGrouping()}},toggleGroup:function(C,B){this.grid.stopEditing(true);C=Ext.getDom(C);var A=Ext.fly(C);B=B!==undefined?B:A.hasClass("x-grid-group-collapsed");this.state[A.dom.id]=B;A[B?"removeClass":"addClass"]("x-grid-group-collapsed")},toggleAllGroups:function(C){var B=this.getGroups();for(var D=0,A=B.length;D=0&&this.config[A].resizable!==false&&this.config[A].fixed!==true},setHidden:function(A,B){var C=this.config[A];if(C.hidden!==B){C.hidden=B;this.totalWidth=null;this.fireEvent("hiddenchange",this,A,B)}},setEditor:function(A,B){this.config[A].editor=B}});Ext.grid.ColumnModel.defaultRenderer=function(A){if(typeof A=="string"&&A.length<1){return" "}return A};Ext.grid.DefaultColumnModel=Ext.grid.ColumnModel;Ext.grid.AbstractSelectionModel=function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.AbstractSelectionModel,Ext.util.Observable,{init:function(A){this.grid=A;this.initEvents()},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked}});Ext.grid.RowSelectionModel=function(A){Ext.apply(this,A);this.selections=new Ext.util.MixedCollection(false,function(B){return B.id});this.last=false;this.lastActive=false;this.addEvents("selectionchange","beforerowselect","rowselect","rowdeselect");Ext.grid.RowSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.RowSelectionModel,Ext.grid.AbstractSelectionModel,{singleSelect:false,initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("rowmousedown",this.handleMouseDown,this)}else{this.grid.on("rowclick",function(B,D,C){if(C.button===0&&!C.shiftKey&&!C.ctrlKey){this.selectRow(D,false);B.view.focusRow(D)}},this)}this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{"up":function(C){if(!C.shiftKey){this.selectPrevious(C.shiftKey)}else{if(this.last!==false&&this.lastActive!==false){var B=this.last;this.selectRange(this.last,this.lastActive-1);this.grid.getView().focusRow(this.lastActive);if(B!==false){this.last=B}}else{this.selectFirstRow()}}},"down":function(C){if(!C.shiftKey){this.selectNext(C.shiftKey)}else{if(this.last!==false&&this.lastActive!==false){var B=this.last;this.selectRange(this.last,this.lastActive+1);this.grid.getView().focusRow(this.lastActive);if(B!==false){this.last=B}}else{this.selectFirstRow()}}},scope:this});var A=this.grid.view;A.on("refresh",this.onRefresh,this);A.on("rowupdated",this.onRowUpdated,this);A.on("rowremoved",this.onRemove,this)},onRefresh:function(){var F=this.grid.store,B;var D=this.getSelections();this.clearSelections(true);for(var C=0,A=D.length;C0},isSelected:function(A){var B=typeof A=="number"?this.grid.store.getAt(A):A;return(B&&this.selections.key(B.id)?true:false)},isIdSelected:function(A){return(this.selections.key(A)?true:false)},handleMouseDown:function(D,F,E){if(E.button!==0||this.isLocked()){return}var A=this.grid.getView();if(E.shiftKey&&this.last!==false){var C=this.last;this.selectRange(C,F,E.ctrlKey);this.last=C;A.focusRow(F)}else{var B=this.isSelected(F);if(E.ctrlKey&&B){this.deselectRow(F)}else{if(!B||this.getCount()>1){this.selectRow(F,E.ctrlKey||E.shiftKey);A.focusRow(F)}}}},selectRows:function(C,D){if(!D){this.clearSelections()}for(var B=0,A=C.length;B=A;C--){this.selectRow(C,true)}}},deselectRange:function(C,B,A){if(this.locked){return}for(var D=C;D<=B;D++){this.deselectRow(D,A)}},selectRow:function(B,D,A){if(this.locked||(B<0||B>=this.grid.store.getCount())){return}var C=this.grid.store.getAt(B);if(C&&this.fireEvent("beforerowselect",this,B,D,C)!==false){if(!D||this.singleSelect){this.clearSelections()}this.selections.add(C);this.last=this.lastActive=B;if(!A){this.grid.getView().onRowSelect(B)}this.fireEvent("rowselect",this,B,C);this.fireEvent("selectionchange",this)}},deselectRow:function(B,A){if(this.locked){return}if(this.last==B){this.last=false}if(this.lastActive==B){this.lastActive=false}var C=this.grid.store.getAt(B);if(C){this.selections.remove(C);if(!A){this.grid.getView().onRowDeselect(B)}this.fireEvent("rowdeselect",this,B,C);this.fireEvent("selectionchange",this)}},restoreLast:function(){if(this._last){this.last=this._last}},acceptsNav:function(C,B,A){return!A.isHidden(B)&&A.isCellEditable(B,C)},onEditorKey:function(F,E){var C=E.getKey(),G,D=this.grid,B=D.activeEditor;var A=E.shiftKey;if(C==E.TAB){E.stopEvent();B.completeEdit();if(A){G=D.walkCells(B.row,B.col-1,-1,this.acceptsNav,this)}else{G=D.walkCells(B.row,B.col+1,1,this.acceptsNav,this)}}else{if(C==E.ENTER){E.stopEvent();B.completeEdit();if(this.moveEditorOnEnter!==false){if(A){G=D.walkCells(B.row-1,B.col,-1,this.acceptsNav,this)}else{G=D.walkCells(B.row+1,B.col,1,this.acceptsNav,this)}}}else{if(C==E.ESC){B.cancelEdit()}}}if(G){D.startEditing(G[0],G[1])}}});Ext.grid.CellSelectionModel=function(A){Ext.apply(this,A);this.selection=null;this.addEvents("beforecellselect","cellselect","selectionchange");Ext.grid.CellSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.CellSelectionModel,Ext.grid.AbstractSelectionModel,{initEvents:function(){this.grid.on("cellmousedown",this.handleMouseDown,this);this.grid.getGridEl().on(Ext.isIE?"keydown":"keypress",this.handleKeyDown,this);var A=this.grid.view;A.on("refresh",this.onViewChange,this);A.on("rowupdated",this.onRowUpdated,this);A.on("beforerowremoved",this.clearSelections,this);A.on("beforerowsinserted",this.clearSelections,this);if(this.grid.isEditor){this.grid.on("beforeedit",this.beforeEdit,this)}},beforeEdit:function(A){this.select(A.row,A.column,false,true,A.record)},onRowUpdated:function(A,B,C){if(this.selection&&this.selection.record==C){A.onCellSelect(B,this.selection.cell[1])}},onViewChange:function(){this.clearSelections(true)},getSelectedCell:function(){return this.selection?this.selection.cell:null},clearSelections:function(B){var A=this.selection;if(A){if(B!==true){this.grid.view.onCellDeselect(A.cell[0],A.cell[1])}this.selection=null;this.fireEvent("selectionchange",this,null)}},hasSelection:function(){return this.selection?true:false},handleMouseDown:function(B,D,A,C){if(C.button!==0||this.isLocked()){return}this.select(D,A)},select:function(F,C,B,E,D){if(this.fireEvent("beforecellselect",this,F,C)!==false){this.clearSelections();D=D||this.grid.store.getAt(F);this.selection={record:D,cell:[F,C]};if(!B){var A=this.grid.getView();A.onCellSelect(F,C);if(E!==true){A.focusCell(F,C)}}this.fireEvent("cellselect",this,F,C);this.fireEvent("selectionchange",this,this.selection)}},isSelectable:function(C,B,A){return!A.isHidden(B)},handleKeyDown:function(F){if(!F.isNavKeyPress()){return}var E=this.grid,J=this.selection;if(!J){F.stopEvent();var I=E.walkCells(0,0,1,this.isSelectable,this);if(I){this.select(I[0],I[1])}return}var B=this;var H=function(M,K,L){return E.walkCells(M,K,L,B.isSelectable,B)};var C=F.getKey(),A=J.cell[0],G=J.cell[1];var D;switch(C){case F.TAB:if(F.shiftKey){D=H(A,G-1,-1)}else{D=H(A,G+1,1)}break;case F.DOWN:D=H(A+1,G,1);break;case F.UP:D=H(A-1,G,-1);break;case F.RIGHT:D=H(A,G+1,1);break;case F.LEFT:D=H(A,G-1,-1);break;case F.ENTER:if(E.isEditor&&!E.editing){E.startEditing(A,G);F.stopEvent();return}break}if(D){this.select(D[0],D[1]);F.stopEvent()}},acceptsNav:function(C,B,A){return!A.isHidden(B)&&A.isCellEditable(B,C)},onEditorKey:function(E,D){var B=D.getKey(),F,C=this.grid,A=C.activeEditor;if(B==D.TAB){if(D.shiftKey){F=C.walkCells(A.row,A.col-1,-1,this.acceptsNav,this)}else{F=C.walkCells(A.row,A.col+1,1,this.acceptsNav,this)}D.stopEvent()}else{if(B==D.ENTER){A.completeEdit();D.stopEvent()}else{if(B==D.ESC){D.stopEvent();A.cancelEdit()}}}if(F){C.startEditing(F[0],F[1])}}});Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{clicksToEdit:2,isEditor:true,detectEdit:false,autoEncode:false,trackMouseOver:false,initComponent:function(){Ext.grid.EditorGridPanel.superclass.initComponent.call(this);if(!this.selModel){this.selModel=new Ext.grid.CellSelectionModel()}this.activeEditor=null;this.addEvents("beforeedit","afteredit","validateedit")},initEvents:function(){Ext.grid.EditorGridPanel.superclass.initEvents.call(this);this.on("bodyscroll",this.stopEditing,this,[true]);if(this.clicksToEdit==1){this.on("cellclick",this.onCellDblClick,this)}else{if(this.clicksToEdit=="auto"&&this.view.mainBody){this.view.mainBody.on("mousedown",this.onAutoEditClick,this)}this.on("celldblclick",this.onCellDblClick,this)}this.getGridEl().addClass("xedit-grid")},onCellDblClick:function(B,C,A){this.startEditing(C,A)},onAutoEditClick:function(C,B){if(C.button!==0){return}var E=this.view.findRowIndex(B);var A=this.view.findCellIndex(B);if(E!==false&&A!==false){this.stopEditing();if(this.selModel.getSelectedCell){var D=this.selModel.getSelectedCell();if(D&&D.cell[0]===E&&D.cell[1]===A){this.startEditing(E,A)}}else{if(this.selModel.isSelected(E)){this.startEditing(E,A)}}}},onEditComplete:function(B,D,A){this.editing=false;this.activeEditor=null;B.un("specialkey",this.selModel.onEditorKey,this.selModel);var C=B.record;var F=this.colModel.getDataIndex(B.col);D=this.postEditValue(D,A,C,F);if(String(D)!==String(A)){var E={grid:this,record:C,field:F,originalValue:A,value:D,row:B.row,column:B.col,cancel:false};if(this.fireEvent("validateedit",E)!==false&&!E.cancel){C.set(F,E.value);delete E.cancel;this.fireEvent("afteredit",E)}}this.view.focusCell(B.row,B.col)},startEditing:function(F,B){this.stopEditing();if(this.colModel.isCellEditable(B,F)){this.view.ensureVisible(F,B,true);var C=this.store.getAt(F);var E=this.colModel.getDataIndex(B);var D={grid:this,record:C,field:E,value:C.data[E],row:F,column:B,cancel:false};if(this.fireEvent("beforeedit",D)!==false&&!D.cancel){this.editing=true;var A=this.colModel.getCellEditor(B,F);if(!A.rendered){A.render(this.view.getEditorParent(A))}(function(){A.row=F;A.col=B;A.record=C;A.on("complete",this.onEditComplete,this,{single:true});A.on("specialkey",this.selModel.onEditorKey,this.selModel);this.activeEditor=A;var G=this.preEditValue(C,E);A.startEdit(this.view.getCell(F,B),G)}).defer(50,this)}}},preEditValue:function(A,B){return this.autoEncode&&typeof value=="string"?Ext.util.Format.htmlDecode(A.data[B]):A.data[B]},postEditValue:function(C,A,B,D){return this.autoEncode&&typeof C=="string"?Ext.util.Format.htmlEncode(C):C},stopEditing:function(A){if(this.activeEditor){this.activeEditor[A===true?"cancelEdit":"completeEdit"]()}this.activeEditor=null}});Ext.reg("editorgrid",Ext.grid.EditorGridPanel);Ext.grid.GridEditor=function(B,A){Ext.grid.GridEditor.superclass.constructor.call(this,B,A);B.monitorTab=false};Ext.extend(Ext.grid.GridEditor,Ext.Editor,{alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:false});Ext.grid.PropertyRecord=Ext.data.Record.create([{name:"name",type:"string"},"value"]);Ext.grid.PropertyStore=function(A,B){this.grid=A;this.store=new Ext.data.Store({recordType:Ext.grid.PropertyRecord});this.store.on("update",this.onUpdate,this);if(B){this.setSource(B)}Ext.grid.PropertyStore.superclass.constructor.call(this)};Ext.extend(Ext.grid.PropertyStore,Ext.util.Observable,{setSource:function(C){this.source=C;this.store.removeAll();var B=[];for(var A in C){if(this.isEditableValue(C[A])){B.push(new Ext.grid.PropertyRecord({name:A,value:C[A]},A))}}this.store.loadRecords({records:B},{},true)},onUpdate:function(E,A,D){if(D==Ext.data.Record.EDIT){var B=A.data["value"];var C=A.modified["value"];if(this.grid.fireEvent("beforepropertychange",this.source,A.id,B,C)!==false){this.source[A.id]=B;A.commit();this.grid.fireEvent("propertychange",this.source,A.id,B,C)}else{A.reject()}}},getProperty:function(A){return this.store.getAt(A)},isEditableValue:function(A){if(Ext.isDate(A)){return true}else{if(typeof A=="object"||typeof A=="function"){return false}}return true},setValue:function(B,A){this.source[B]=A;this.store.getById(B).set("value",A)},getSource:function(){return this.source}});Ext.grid.PropertyColumnModel=function(C,B){this.grid=C;var D=Ext.grid;D.PropertyColumnModel.superclass.constructor.call(this,[{header:this.nameText,width:50,sortable:true,dataIndex:"name",id:"name",menuDisabled:true},{header:this.valueText,width:50,resizable:false,dataIndex:"value",id:"value",menuDisabled:true}]);this.store=B;this.bselect=Ext.DomHelper.append(document.body,{tag:"select",cls:"x-grid-editor x-hide-display",children:[{tag:"option",value:"true",html:"true"},{tag:"option",value:"false",html:"false"}]});var E=Ext.form;var A=new E.Field({el:this.bselect,bselect:this.bselect,autoShow:true,getValue:function(){return this.bselect.value=="true"}});this.editors={"date":new D.GridEditor(new E.DateField({selectOnFocus:true})),"string":new D.GridEditor(new E.TextField({selectOnFocus:true})),"number":new D.GridEditor(new E.NumberField({selectOnFocus:true,style:"text-align:left;"})),"boolean":new D.GridEditor(A)};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this)};Ext.extend(Ext.grid.PropertyColumnModel,Ext.grid.ColumnModel,{nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",renderDate:function(A){return A.dateFormat(this.dateFormat)},renderBool:function(A){return A?"true":"false"},isCellEditable:function(A,B){return A==1},getRenderer:function(A){return A==1?this.renderCellDelegate:this.renderPropDelegate},renderProp:function(A){return this.getPropertyName(A)},renderCell:function(A){var B=A;if(Ext.isDate(A)){B=this.renderDate(A)}else{if(typeof A=="boolean"){B=this.renderBool(A)}}return Ext.util.Format.htmlEncode(B)},getPropertyName:function(B){var A=this.grid.propertyNames;return A&&A[B]?A[B]:B},getCellEditor:function(A,E){var B=this.store.getProperty(E);var D=B.data["name"],C=B.data["value"];if(this.grid.customEditors[D]){return this.grid.customEditors[D]}if(Ext.isDate(C)){return this.editors["date"]}else{if(typeof C=="number"){return this.editors["number"]}else{if(typeof C=="boolean"){return this.editors["boolean"]}else{return this.editors["string"]}}}}});Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function(){this.customEditors=this.customEditors||{};this.lastEditRow=null;var B=new Ext.grid.PropertyStore(this);this.propStore=B;var A=new Ext.grid.PropertyColumnModel(this,B);B.store.sort("name","ASC");this.addEvents("beforepropertychange","propertychange");this.cm=A;this.ds=B.store;Ext.grid.PropertyGrid.superclass.initComponent.call(this);this.selModel.on("beforecellselect",function(E,D,C){if(C===0){this.startEditing.defer(200,this,[D,1]);return false}},this)},onRender:function(){Ext.grid.PropertyGrid.superclass.onRender.apply(this,arguments);this.getGridEl().addClass("x-props-grid")},afterRender:function(){Ext.grid.PropertyGrid.superclass.afterRender.apply(this,arguments);if(this.source){this.setSource(this.source)}},setSource:function(A){this.propStore.setSource(A)},getSource:function(){return this.propStore.getSource()}});Ext.grid.RowNumberer=function(A){Ext.apply(this,A);if(this.rowspan){this.renderer=this.renderer.createDelegate(this)}};Ext.grid.RowNumberer.prototype={header:"",width:23,sortable:false,fixed:true,menuDisabled:true,dataIndex:"",id:"numberer",rowspan:undefined,renderer:function(B,C,A,D){if(this.rowspan){C.cellAttr="rowspan=\""+this.rowspan+"\""}return D+1}};Ext.grid.CheckboxSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{header:"
     
    ",width:20,sortable:false,menuDisabled:true,fixed:true,dataIndex:"",id:"checker",initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on("render",function(){var A=this.grid.getView();A.mainBody.on("mousedown",this.onMouseDown,this);Ext.fly(A.innerHd).on("mousedown",this.onHdMouseDown,this)},this)},onMouseDown:function(C,B){if(C.button===0&&B.className=="x-grid3-row-checker"){C.stopEvent();var D=C.getTarget(".x-grid3-row");if(D){var A=D.rowIndex;if(this.isSelected(A)){this.deselectRow(A)}else{this.selectRow(A,true)}}}},onHdMouseDown:function(C,A){if(A.className=="x-grid3-hd-checker"){C.stopEvent();var B=Ext.fly(A.parentNode);var D=B.hasClass("x-grid3-hd-checker-on");if(D){B.removeClass("x-grid3-hd-checker-on");this.clearSelections()}else{B.addClass("x-grid3-hd-checker-on");this.selectAll()}}},renderer:function(B,C,A){return"
     
    "}});Ext.LoadMask=function(C,B){this.el=Ext.get(C);Ext.apply(this,B);if(this.store){this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.onLoad,this);this.store.on("loadexception",this.onLoad,this);this.removeMask=Ext.value(this.removeMask,false)}else{var A=this.el.getUpdater();A.showLoadIndicator=false;A.on("beforeupdate",this.onBeforeLoad,this);A.on("update",this.onLoad,this);A.on("failure",this.onLoad,this);this.removeMask=Ext.value(this.removeMask,true)}};Ext.LoadMask.prototype={msg:"Loading...",msgCls:"x-mask-loading",disabled:false,disable:function(){this.disabled=true},enable:function(){this.disabled=false},onLoad:function(){this.el.unmask(this.removeMask)},onBeforeLoad:function(){if(!this.disabled){this.el.mask(this.msg,this.msgCls)}},show:function(){this.onBeforeLoad()},hide:function(){this.onLoad()},destroy:function(){if(this.store){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("loadexception",this.onLoad,this)}else{var A=this.el.getUpdater();A.un("beforeupdate",this.onBeforeLoad,this);A.un("update",this.onLoad,this);A.un("failure",this.onLoad,this)}}};Ext.ProgressBar=Ext.extend(Ext.BoxComponent,{baseCls:"x-progress",waitTimer:null,initComponent:function(){Ext.ProgressBar.superclass.initComponent.call(this);this.addEvents("update")},onRender:function(D,A){Ext.ProgressBar.superclass.onRender.call(this,D,A);var C=new Ext.Template("
    ","
    ","
    ","
    ","
     
    ","
    ","
    ","
    ","
     
    ","
    ","
    ","
    ");if(A){this.el=C.insertBefore(A,{cls:this.baseCls},true)}else{this.el=C.append(D,{cls:this.baseCls},true)}if(this.id){this.el.dom.id=this.id}var B=this.el.dom.firstChild;this.progressBar=Ext.get(B.firstChild);if(this.textEl){this.textEl=Ext.get(this.textEl);delete this.textTopEl}else{this.textTopEl=Ext.get(this.progressBar.dom.firstChild);var E=Ext.get(B.childNodes[1]);this.textTopEl.setStyle("z-index",99).addClass("x-hidden");this.textEl=new Ext.CompositeElement([this.textTopEl.dom.firstChild,E.dom.firstChild]);this.textEl.setWidth(B.offsetWidth)}if(this.value){this.updateProgress(this.value,this.text)}else{this.updateText(this.text)}this.setSize(this.width||"auto","auto");this.progressBar.setHeight(B.offsetHeight)},updateProgress:function(B,C){this.value=B||0;if(C){this.updateText(C)}var A=Math.floor(B*this.el.dom.firstChild.offsetWidth);this.progressBar.setWidth(A);if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(A)}this.fireEvent("update",this,B,C);return this},wait:function(B){if(!this.waitTimer){var A=this;B=B||{};this.waitTimer=Ext.TaskMgr.start({run:function(C){var D=B.increment||10;this.updateProgress(((((C+D)%D)+1)*(100/D))*0.01)},interval:B.interval||1000,duration:B.duration,onStop:function(){if(B.fn){B.fn.apply(B.scope||this)}this.reset()},scope:A})}return this},isWaiting:function(){return this.waitTimer!=null},updateText:function(A){this.text=A||" ";this.textEl.update(this.text);return this},setSize:function(A,C){Ext.ProgressBar.superclass.setSize.call(this,A,C);if(this.textTopEl){var B=this.el.dom.firstChild;this.textEl.setSize(B.offsetWidth,B.offsetHeight)}return this},reset:function(A){this.updateProgress(0);if(this.textTopEl){this.textTopEl.addClass("x-hidden")}if(this.waitTimer){this.waitTimer.onStop=null;Ext.TaskMgr.stop(this.waitTimer);this.waitTimer=null}if(A===true){this.hide()}return this}});Ext.reg("progress",Ext.ProgressBar); \ No newline at end of file +Ext.DomHelper = function() { + var L = null; + var F = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i; + var B = /^table|tbody|tr|td$/i; + var A = function(T) { + if (typeof T == "string") { + return T + } + var O = ""; + if (Ext.isArray(T)) { + for (var R = 0, P = T.length; R < P; R++) { + O += A(T[R]) + } + return O + } + if (!T.tag) { + T.tag = "div" + } + O += "<" + T.tag; + for (var N in T) { + if (N == "tag" || N == "children" || N == "cn" || N == "html" || typeof T[N] == "function") { + continue + } + if (N == "style") { + var S = T["style"]; + if (typeof S == "function") { + S = S.call() + } + if (typeof S == "string") { + O += " style=\"" + S + "\"" + } else { + if (typeof S == "object") { + O += " style=\""; + for (var Q in S) { + if (typeof S[Q] != "function") { + O += Q + ":" + S[Q] + ";" + } + } + O += "\"" + } + } + } else { + if (N == "cls") { + O += " class=\"" + T["cls"] + "\"" + } else { + if (N == "htmlFor") { + O += " for=\"" + T["htmlFor"] + "\"" + } else { + O += " " + N + "=\"" + T[N] + "\"" + } + } + } + } + if (F.test(T.tag)) { + O += "/>" + } else { + O += ">"; + var U = T.children || T.cn; + if (U) { + O += A(U) + } else { + if (T.html) { + O += T.html + } + } + O += "" + } + return O + }; + var M = function(T, O) { + var S; + if (Ext.isArray(T)) { + S = document.createDocumentFragment(); + for (var R = 0, P = T.length; R < P; R++) { + M(T[R], S) + } + } else { + if (typeof T == "string)") { + S = document.createTextNode(T) + } else { + S = document.createElement(T.tag || "div"); + var Q = !!S.setAttribute; + for (var N in T) { + if (N == "tag" || N == "children" || N == "cn" || N == "html" || N == "style" || typeof T[N] == "function") { + continue + } + if (N == "cls") { + S.className = T["cls"] + } else { + if (Q) { + S.setAttribute(N, T[N]) + } else { + S[N] = T[N] + } + } + } + Ext.DomHelper.applyStyles(S, T.style); + var U = T.children || T.cn; + if (U) { + M(U, S) + } else { + if (T.html) { + S.innerHTML = T.html + } + } + } + } + if (O) { + O.appendChild(S) + } + return S + }; + var I = function(S, Q, P, R) { + L.innerHTML = [Q, P, R].join(""); + var N = -1, + O = L; + while (++N < S) { + O = O.firstChild + } + return O + }; + var J = "", + E = "
    ", + C = J + "", + K = "" + E, + H = C + "", + D = "" + K; + var G = function(N, O, Q, P) { + if (!L) { + L = document.createElement("div") + } + var R; + var S = null; + if (N == "td") { + if (O == "afterbegin" || O == "beforeend") { + return + } + if (O == "beforebegin") { + S = Q; + Q = Q.parentNode + } else { + S = Q.nextSibling; + Q = Q.parentNode + } + R = I(4, H, P, D) + } else { + if (N == "tr") { + if (O == "beforebegin") { + S = Q; + Q = Q.parentNode; + R = I(3, C, P, K) + } else { + if (O == "afterend") { + S = Q.nextSibling; + Q = Q.parentNode; + R = I(3, C, P, K) + } else { + if (O == "afterbegin") { + S = Q.firstChild + } + R = I(4, H, P, D) + } + } + } else { + if (N == "tbody") { + if (O == "beforebegin") { + S = Q; + Q = Q.parentNode; + R = I(2, J, P, E) + } else { + if (O == "afterend") { + S = Q.nextSibling; + Q = Q.parentNode; + R = I(2, J, P, E) + } else { + if (O == "afterbegin") { + S = Q.firstChild + } + R = I(3, C, P, K) + } + } + } else { + if (O == "beforebegin" || O == "afterend") { + return + } + if (O == "afterbegin") { + S = Q.firstChild + } + R = I(2, J, P, E) + } + } + } + Q.insertBefore(R, S); + return R + }; + return { + useDom: false, + markup: function(N) { + return A(N) + }, + applyStyles: function(P, Q) { + if (Q) { + P = Ext.fly(P); + if (typeof Q == "string") { + var O = /\s?([a-z\-]*)\:\s?([^;]*);?/gi; + var R; + while ((R = O.exec(Q)) != null) { + P.setStyle(R[1], R[2]) + } + } else { + if (typeof Q == "object") { + for (var N in Q) { + P.setStyle(N, Q[N]) + } + } else { + if (typeof Q == "function") { + Ext.DomHelper.applyStyles(P, Q.call()) + } + } + } + } + }, + insertHtml: function(P, R, Q) { + P = P.toLowerCase(); + if (R.insertAdjacentHTML) { + if (B.test(R.tagName)) { + var O; + if (O = G(R.tagName.toLowerCase(), P, R, Q)) { + return O + } + } + switch (P) { + case "beforebegin": + R.insertAdjacentHTML("BeforeBegin", Q); + return R.previousSibling; + case "afterbegin": + R.insertAdjacentHTML("AfterBegin", Q); + return R.firstChild; + case "beforeend": + R.insertAdjacentHTML("BeforeEnd", Q); + return R.lastChild; + case "afterend": + R.insertAdjacentHTML("AfterEnd", Q); + return R.nextSibling + } + throw "Illegal insertion point -> \"" + P + "\"" + } + if ((typeof Range !== "undefined") && !Range.prototype.createContextualFragment) { + Range.prototype.createContextualFragment = function(html) { + var frag = document.createDocumentFragment(); + var div = document.createElement("div"); + frag.appendChild(div); + div.outerHTML = html; + return frag + } + } + var N = R.ownerDocument.createRange(); + var S; + switch (P) { + case "beforebegin": + N.setStartBefore(R); + S = N.createContextualFragment(Q); + R.parentNode.insertBefore(S, R); + return R.previousSibling; + case "afterbegin": + if (R.firstChild) { + N.setStartBefore(R.firstChild); + S = N.createContextualFragment(Q); + R.insertBefore(S, R.firstChild); + return R.firstChild + } else { + R.innerHTML = Q; + return R.firstChild + } + case "beforeend": + if (R.lastChild) { + N.setStartAfter(R.lastChild); + S = N.createContextualFragment(Q); + R.appendChild(S); + return R.lastChild + } else { + R.innerHTML = Q; + return R.lastChild + } + case "afterend": + N.setStartAfter(R); + S = N.createContextualFragment(Q); + R.parentNode.insertBefore(S, R.nextSibling); + return R.nextSibling + } + throw "Illegal insertion point -> \"" + P + "\"" + }, + insertBefore: function(N, P, O) { + return this.doInsert(N, P, O, "beforeBegin") + }, + insertAfter: function(N, P, O) { + return this.doInsert(N, P, O, "afterEnd", "nextSibling") + }, + insertFirst: function(N, P, O) { + return this.doInsert(N, P, O, "afterBegin", "firstChild") + }, + doInsert: function(Q, S, R, T, P) { + Q = Ext.getDom(Q); + var O; + if (this.useDom) { + O = M(S, null); + (P === "firstChild" ? Q : Q.parentNode).insertBefore(O, P ? Q[P] : Q) + } else { + var N = A(S); + O = this.insertHtml(T, Q, N) + } + return R ? Ext.get(O, true) : O + }, + append: function(P, R, Q) { + P = Ext.getDom(P); + var O; + if (this.useDom) { + O = M(R, null); + P.appendChild(O) + } else { + var N = A(R); + O = this.insertHtml("beforeEnd", P, N) + } + return Q ? Ext.get(O, true) : O + }, + overwrite: function(N, P, O) { + N = Ext.getDom(N); + N.innerHTML = A(P); + return O ? Ext.get(N.firstChild, true) : N.firstChild + }, + createTemplate: function(O) { + var N = A(O); + return new Ext.Template(N) + } + } +}(); +Ext.Template = function(E) { + var B = arguments; + if (Ext.isArray(E)) { + E = E.join("") + } else { + if (B.length > 1) { + var C = []; + for (var D = 0, A = B.length; D < A; D++) { + if (typeof B[D] == "object") { + Ext.apply(this, B[D]) + } else { + C[C.length] = B[D] + } + } + E = C.join("") + } + } + this.html = E; + if (this.compiled) { + this.compile() + } +}; +Ext.Template.prototype = { + applyTemplate: function(B) { + if (this.compiled) { + return this.compiled(B) + } + var A = this.disableFormats !== true; + var E = Ext.util.Format, + C = this; + var D = function(G, I, L, H) { + if (L && A) { + if (L.substr(0, 5) == "this.") { + return C.call(L.substr(5), B[I], B) + } else { + if (H) { + var K = /^\s*['"](.*)["']\s*$/; + H = H.split(","); + for (var J = 0, F = H.length; J < F; J++) { + H[J] = H[J].replace(K, "$1") + } + H = [B[I]].concat(H) + } else { + H = [B[I]] + } + return E[L].apply(E, H) + } + } else { + return B[I] !== undefined ? B[I] : "" + } + }; + return this.html.replace(this.re, D) + }, + set: function(A, B) { + this.html = A; + this.compiled = null; + if (B) { + this.compile() + } + return this + }, + disableFormats: false, + re: /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, + compile: function() { + var fm = Ext.util.Format; + var useF = this.disableFormats !== true; + var sep = Ext.isGecko ? "+" : ","; + var fn = function(m, name, format, args) { + if (format && useF) { + args = args ? "," + args : ""; + if (format.substr(0, 5) != "this.") { + format = "fm." + format + "(" + } else { + format = "this.call(\"" + format.substr(5) + "\", "; + args = ", values" + } + } else { + args = ""; + format = "(values['" + name + "'] == undefined ? '' : " + } + return "'" + sep + format + "values['" + name + "']" + args + ")" + sep + "'" + }; + var body; + if (Ext.isGecko) { + body = "this.compiled = function(values){ return '" + this.html.replace(/\\/g, "\\\\").replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn) + "';};" + } else { + body = ["this.compiled = function(values){ return ['"]; + body.push(this.html.replace(/\\/g, "\\\\").replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn)); + body.push("'].join('');};"); + body = body.join("") + } + eval(body); + return this + }, + call: function(C, B, A) { + return this[C](B, A) + }, + insertFirst: function(B, A, C) { + return this.doInsert("afterBegin", B, A, C) + }, + insertBefore: function(B, A, C) { + return this.doInsert("beforeBegin", B, A, C) + }, + insertAfter: function(B, A, C) { + return this.doInsert("afterEnd", B, A, C) + }, + append: function(B, A, C) { + return this.doInsert("beforeEnd", B, A, C) + }, + doInsert: function(C, E, B, A) { + E = Ext.getDom(E); + var D = Ext.DomHelper.insertHtml(C, E, this.applyTemplate(B)); + return A ? Ext.get(D, true) : D + }, + overwrite: function(B, A, C) { + B = Ext.getDom(B); + B.innerHTML = this.applyTemplate(A); + return C ? Ext.get(B.firstChild, true) : B.firstChild + } +}; +Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate; +Ext.DomHelper.Template = Ext.Template; +Ext.Template.from = function(B, A) { + B = Ext.getDom(B); + return new Ext.Template(B.value || B.innerHTML, A || "") +}; +Ext.DomQuery = function() { + var cache = {}, + simpleCache = {}, + valueCache = {}; + var nonSpace = /\S/; + var trimRe = /^\s+|\s+$/g; + var tplRe = /\{(\d+)\}/g; + var modeRe = /^(\s?[\/>+~]\s?|\s|$)/; + var tagTokenRe = /^(#)?([\w-\*]+)/; + var nthRe = /(\d*)n\+?(\d*)/, + nthRe2 = /\D/; + + function child(p, index) { + var i = 0; + var n = p.firstChild; + while (n) { + if (n.nodeType == 1) { + if (++i == index) { + return n + } + } + n = n.nextSibling + } + return null + } + + function next(n) { + while ((n = n.nextSibling) && n.nodeType != 1) {} + return n + } + + function prev(n) { + while ((n = n.previousSibling) && n.nodeType != 1) {} + return n + } + + function children(d) { + var n = d.firstChild, + ni = -1; + while (n) { + var nx = n.nextSibling; + if (n.nodeType == 3 && !nonSpace.test(n.nodeValue)) { + d.removeChild(n) + } else { + n.nodeIndex = ++ni + } + n = nx + } + return this + } + + function byClassName(c, a, v) { + if (!v) { + return c + } + var r = [], + ri = -1, + cn; + for (var i = 0, ci; ci = c[i]; i++) { + if ((" " + ci.className + " ").indexOf(v) != -1) { + r[++ri] = ci + } + } + return r + } + + function attrValue(n, attr) { + if (!n.tagName && typeof n.length != "undefined") { + n = n[0] + } + if (!n) { + return null + } + if (attr == "for") { + return n.htmlFor + } + if (attr == "class" || attr == "className") { + return n.className + } + return n.getAttribute(attr) || n[attr] + } + + function getNodes(ns, mode, tagName) { + var result = [], + ri = -1, + cs; + if (!ns) { + return result + } + tagName = tagName || "*"; + if (typeof ns.getElementsByTagName != "undefined") { + ns = [ns] + } + if (!mode) { + for (var i = 0, ni; ni = ns[i]; i++) { + cs = ni.getElementsByTagName(tagName); + for (var j = 0, ci; ci = cs[j]; j++) { + result[++ri] = ci + } + } + } else { + if (mode == "/" || mode == ">") { + var utag = tagName.toUpperCase(); + for (var i = 0, ni, cn; ni = ns[i]; i++) { + cn = ni.children || ni.childNodes; + for (var j = 0, cj; cj = cn[j]; j++) { + if (cj.nodeName == utag || cj.nodeName == tagName || tagName == "*") { + result[++ri] = cj + } + } + } + } else { + if (mode == "+") { + var utag = tagName.toUpperCase(); + for (var i = 0, n; n = ns[i]; i++) { + while ((n = n.nextSibling) && n.nodeType != 1) {} + if (n && (n.nodeName == utag || n.nodeName == tagName || tagName == "*")) { + result[++ri] = n + } + } + } else { + if (mode == "~") { + for (var i = 0, n; n = ns[i]; i++) { + while ((n = n.nextSibling) && (n.nodeType != 1 || (tagName == "*" || n.tagName.toLowerCase() != tagName))) {} + if (n) { + result[++ri] = n + } + } + } + } + } + } + return result + } + + function concat(a, b) { + if (b.slice) { + return a.concat(b) + } + for (var i = 0, l = b.length; i < l; i++) { + a[a.length] = b[i] + } + return a + } + + function byTag(cs, tagName) { + if (cs.tagName || cs == document) { + cs = [cs] + } + if (!tagName) { + return cs + } + var r = [], + ri = -1; + tagName = tagName.toLowerCase(); + for (var i = 0, ci; ci = cs[i]; i++) { + if (ci.nodeType == 1 && ci.tagName.toLowerCase() == tagName) { + r[++ri] = ci + } + } + return r + } + + function byId(cs, attr, id) { + if (cs.tagName || cs == document) { + cs = [cs] + } + if (!id) { + return cs + } + var r = [], + ri = -1; + for (var i = 0, ci; ci = cs[i]; i++) { + if (ci && ci.id == id) { + r[++ri] = ci; + return r + } + } + return r + } + + function byAttribute(cs, attr, value, op, custom) { + var r = [], + ri = -1, + st = custom == "{"; + var f = Ext.DomQuery.operators[op]; + for (var i = 0, ci; ci = cs[i]; i++) { + var a; + if (st) { + a = Ext.DomQuery.getStyle(ci, attr) + } else { + if (attr == "class" || attr == "className") { + a = ci.className + } else { + if (attr == "for") { + a = ci.htmlFor + } else { + if (attr == "href") { + a = ci.getAttribute("href", 2) + } else { + a = ci.getAttribute(attr) + } + } + } + } + if ((f && f(a, value)) || (!f && a)) { + r[++ri] = ci + } + } + return r + } + + function byPseudo(cs, name, value) { + return Ext.DomQuery.pseudos[name](cs, value) + } + var isIE = window.ActiveXObject ? true : false; + eval("var batch = 30803;"); + var key = 30803; + + function nodupIEXml(cs) { + var d = ++key; + cs[0].setAttribute("_nodup", d); + var r = [cs[0]]; + for (var i = 1, len = cs.length; i < len; i++) { + var c = cs[i]; + if (!c.getAttribute("_nodup") != d) { + c.setAttribute("_nodup", d); + r[r.length] = c + } + } + for (var i = 0, len = cs.length; i < len; i++) { + cs[i].removeAttribute("_nodup") + } + return r + } + + function nodup(cs) { + if (!cs) { + return [] + } + var len = cs.length, + c, i, r = cs, + cj, ri = -1; + if (!len || typeof cs.nodeType != "undefined" || len == 1) { + return cs + } + if (isIE && typeof cs[0].selectSingleNode != "undefined") { + return nodupIEXml(cs) + } + var d = ++key; + cs[0]._nodup = d; + for (i = 1; c = cs[i]; i++) { + if (c._nodup != d) { + c._nodup = d + } else { + r = []; + for (var j = 0; j < i; j++) { + r[++ri] = cs[j] + } + for (j = i + 1; cj = cs[j]; j++) { + if (cj._nodup != d) { + cj._nodup = d; + r[++ri] = cj + } + } + return r + } + } + return r + } + + function quickDiffIEXml(c1, c2) { + var d = ++key; + for (var i = 0, len = c1.length; i < len; i++) { + c1[i].setAttribute("_qdiff", d) + } + var r = []; + for (var i = 0, len = c2.length; i < len; i++) { + if (c2[i].getAttribute("_qdiff") != d) { + r[r.length] = c2[i] + } + } + for (var i = 0, len = c1.length; i < len; i++) { + c1[i].removeAttribute("_qdiff") + } + return r + } + + function quickDiff(c1, c2) { + var len1 = c1.length; + if (!len1) { + return c2 + } + if (isIE && c1[0].selectSingleNode) { + return quickDiffIEXml(c1, c2) + } + var d = ++key; + for (var i = 0; i < len1; i++) { + c1[i]._qdiff = d + } + var r = []; + for (var i = 0, len = c2.length; i < len; i++) { + if (c2[i]._qdiff != d) { + r[r.length] = c2[i] + } + } + return r + } + + function quickId(ns, mode, root, id) { + if (ns == root) { + var d = root.ownerDocument || root; + return d.getElementById(id) + } + ns = getNodes(ns, mode, "*"); + return byId(ns, null, id) + } + return { + getStyle: function(el, name) { + return Ext.fly(el).getStyle(name) + }, + compile: function(path, type) { + type = type || "select"; + var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"]; + var q = path, + mode, lq; + var tk = Ext.DomQuery.matchers; + var tklen = tk.length; + var mm; + var lmode = q.match(modeRe); + if (lmode && lmode[1]) { + fn[fn.length] = "mode=\"" + lmode[1].replace(trimRe, "") + "\";"; + q = q.replace(lmode[1], "") + } + while (path.substr(0, 1) == "/") { + path = path.substr(1) + } + while (q && lq != q) { + lq = q; + var tm = q.match(tagTokenRe); + if (type == "select") { + if (tm) { + if (tm[1] == "#") { + fn[fn.length] = "n = quickId(n, mode, root, \"" + tm[2] + "\");" + } else { + fn[fn.length] = "n = getNodes(n, mode, \"" + tm[2] + "\");" + } + q = q.replace(tm[0], "") + } else { + if (q.substr(0, 1) != "@") { + fn[fn.length] = "n = getNodes(n, mode, \"*\");" + } + } + } else { + if (tm) { + if (tm[1] == "#") { + fn[fn.length] = "n = byId(n, null, \"" + tm[2] + "\");" + } else { + fn[fn.length] = "n = byTag(n, \"" + tm[2] + "\");" + } + q = q.replace(tm[0], "") + } + } + while (!(mm = q.match(modeRe))) { + var matched = false; + for (var j = 0; j < tklen; j++) { + var t = tk[j]; + var m = q.match(t.re); + if (m) { + fn[fn.length] = t.select.replace(tplRe, function(x, i) { + return m[i] + }); + q = q.replace(m[0], ""); + matched = true; + break + } + } + if (!matched) { + throw "Error parsing selector, parsing failed at \"" + q + "\"" + } + } + if (mm[1]) { + fn[fn.length] = "mode=\"" + mm[1].replace(trimRe, "") + "\";"; + q = q.replace(mm[1], "") + } + } + fn[fn.length] = "return nodup(n);\n}"; + eval(fn.join("")); + return f + }, + select: function(path, root, type) { + if (!root || root == document) { + root = document + } + if (typeof root == "string") { + root = document.getElementById(root) + } + var paths = path.split(","); + var results = []; + for (var i = 0, len = paths.length; i < len; i++) { + var p = paths[i].replace(trimRe, ""); + if (!cache[p]) { + cache[p] = Ext.DomQuery.compile(p); + if (!cache[p]) { + throw p + " is not a valid selector" + } + } + var result = cache[p](root); + if (result && result != document) { + results = results.concat(result) + } + } + if (paths.length > 1) { + return nodup(results) + } + return results + }, + selectNode: function(path, root) { + return Ext.DomQuery.select(path, root)[0] + }, + selectValue: function(path, root, defaultValue) { + path = path.replace(trimRe, ""); + if (!valueCache[path]) { + valueCache[path] = Ext.DomQuery.compile(path, "select") + } + var n = valueCache[path](root); + n = n[0] ? n[0] : n; + var v = (n && n.firstChild ? n.firstChild.nodeValue : null); + return ((v === null || v === undefined || v === "") ? defaultValue : v) + }, + selectNumber: function(path, root, defaultValue) { + var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0); + return parseFloat(v) + }, + is: function(el, ss) { + if (typeof el == "string") { + el = document.getElementById(el) + } + var isArray = Ext.isArray(el); + var result = Ext.DomQuery.filter(isArray ? el : [el], ss); + return isArray ? (result.length == el.length) : (result.length > 0) + }, + filter: function(els, ss, nonMatches) { + ss = ss.replace(trimRe, ""); + if (!simpleCache[ss]) { + simpleCache[ss] = Ext.DomQuery.compile(ss, "simple") + } + var result = simpleCache[ss](els); + return nonMatches ? quickDiff(result, els) : result + }, + matchers: [{ + re: /^\.([\w-]+)/, + select: "n = byClassName(n, null, \" {1} \");" + }, { + re: /^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/, + select: "n = byPseudo(n, \"{1}\", \"{2}\");" + }, { + re: /^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/, + select: "n = byAttribute(n, \"{2}\", \"{4}\", \"{3}\", \"{1}\");" + }, { + re: /^#([\w-]+)/, + select: "n = byId(n, null, \"{1}\");" + }, { + re: /^@([\w-]+)/, + select: "return {firstChild:{nodeValue:attrValue(n, \"{1}\")}};" + }], + operators: { + "=": function(a, v) { + return a == v + }, + "!=": function(a, v) { + return a != v + }, + "^=": function(a, v) { + return a && a.substr(0, v.length) == v + }, + "$=": function(a, v) { + return a && a.substr(a.length - v.length) == v + }, + "*=": function(a, v) { + return a && a.indexOf(v) !== -1 + }, + "%=": function(a, v) { + return (a % v) == 0 + }, + "|=": function(a, v) { + return a && (a == v || a.substr(0, v.length + 1) == v + "-") + }, + "~=": function(a, v) { + return a && (" " + a + " ").indexOf(" " + v + " ") != -1 + } + }, + pseudos: { + "first-child": function(c) { + var r = [], + ri = -1, + n; + for (var i = 0, ci; ci = n = c[i]; i++) { + while ((n = n.previousSibling) && n.nodeType != 1) {} + if (!n) { + r[++ri] = ci + } + } + return r + }, + "last-child": function(c) { + var r = [], + ri = -1, + n; + for (var i = 0, ci; ci = n = c[i]; i++) { + while ((n = n.nextSibling) && n.nodeType != 1) {} + if (!n) { + r[++ri] = ci + } + } + return r + }, + "nth-child": function(c, a) { + var r = [], + ri = -1; + var m = nthRe.exec(a == "even" && "2n" || a == "odd" && "2n+1" || !nthRe2.test(a) && "n+" + a || a); + var f = (m[1] || 1) - 0, + l = m[2] - 0; + for (var i = 0, n; n = c[i]; i++) { + var pn = n.parentNode; + if (batch != pn._batch) { + var j = 0; + for (var cn = pn.firstChild; cn; cn = cn.nextSibling) { + if (cn.nodeType == 1) { + cn.nodeIndex = ++j + } + } + pn._batch = batch + } + if (f == 1) { + if (l == 0 || n.nodeIndex == l) { + r[++ri] = n + } + } else { + if ((n.nodeIndex + l) % f == 0) { + r[++ri] = n + } + } + } + return r + }, + "only-child": function(c) { + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + if (!prev(ci) && !next(ci)) { + r[++ri] = ci + } + } + return r + }, + "empty": function(c) { + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + var cns = ci.childNodes, + j = 0, + cn, empty = true; + while (cn = cns[j]) { + ++j; + if (cn.nodeType == 1 || cn.nodeType == 3) { + empty = false; + break + } + } + if (empty) { + r[++ri] = ci + } + } + return r + }, + "contains": function(c, v) { + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + if ((ci.textContent || ci.innerText || "").indexOf(v) != -1) { + r[++ri] = ci + } + } + return r + }, + "nodeValue": function(c, v) { + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + if (ci.firstChild && ci.firstChild.nodeValue == v) { + r[++ri] = ci + } + } + return r + }, + "checked": function(c) { + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + if (ci.checked == true) { + r[++ri] = ci + } + } + return r + }, + "not": function(c, ss) { + return Ext.DomQuery.filter(c, ss, true) + }, + "any": function(c, selectors) { + var ss = selectors.split("|"); + var r = [], + ri = -1, + s; + for (var i = 0, ci; ci = c[i]; i++) { + for (var j = 0; s = ss[j]; j++) { + if (Ext.DomQuery.is(ci, s)) { + r[++ri] = ci; + break + } + } + } + return r + }, + "odd": function(c) { + return this["nth-child"](c, "odd") + }, + "even": function(c) { + return this["nth-child"](c, "even") + }, + "nth": function(c, a) { + return c[a - 1] || [] + }, + "first": function(c) { + return c[0] || [] + }, + "last": function(c) { + return c[c.length - 1] || [] + }, + "has": function(c, ss) { + var s = Ext.DomQuery.select; + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + if (s(ss, ci).length > 0) { + r[++ri] = ci + } + } + return r + }, + "next": function(c, ss) { + var is = Ext.DomQuery.is; + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + var n = next(ci); + if (n && is(n, ss)) { + r[++ri] = ci + } + } + return r + }, + "prev": function(c, ss) { + var is = Ext.DomQuery.is; + var r = [], + ri = -1; + for (var i = 0, ci; ci = c[i]; i++) { + var n = prev(ci); + if (n && is(n, ss)) { + r[++ri] = ci + } + } + return r + } + } + } +}(); +Ext.query = Ext.DomQuery.select; +Ext.util.Observable = function() { + if (this.listeners) { + this.on(this.listeners); + delete this.listeners + } +}; +Ext.util.Observable.prototype = { + fireEvent: function() { + if (this.eventsSuspended !== true) { + var A = this.events[arguments[0].toLowerCase()]; + if (typeof A == "object") { + return A.fire.apply(A, Array.prototype.slice.call(arguments, 1)) + } + } + return true + }, + filterOptRe: /^(?:scope|delay|buffer|single)$/, + addListener: function(A, C, B, F) { + if (typeof A == "object") { + F = A; + for (var E in F) { + if (this.filterOptRe.test(E)) { + continue + } + if (typeof F[E] == "function") { + this.addListener(E, F[E], F.scope, F) + } else { + this.addListener(E, F[E].fn, F[E].scope, F[E]) + } + } + return + } + F = (!F || typeof F == "boolean") ? {} : F; + A = A.toLowerCase(); + var D = this.events[A] || true; + if (typeof D == "boolean") { + D = new Ext.util.Event(this, A); + this.events[A] = D + } + D.addListener(C, B, F) + }, + removeListener: function(A, C, B) { + var D = this.events[A.toLowerCase()]; + if (typeof D == "object") { + D.removeListener(C, B) + } + }, + purgeListeners: function() { + for (var A in this.events) { + if (typeof this.events[A] == "object") { + this.events[A].clearListeners() + } + } + }, + relayEvents: function(F, D) { + var E = function(G) { + return function() { + return this.fireEvent.apply(this, Ext.combine(G, Array.prototype.slice.call(arguments, 0))) + } + }; + for (var C = 0, A = D.length; C < A; C++) { + var B = D[C]; + if (!this.events[B]) { + this.events[B] = true + } + F.on(B, E(B), this) + } + }, + addEvents: function(D) { + if (!this.events) { + this.events = {} + } + if (typeof D == "string") { + for (var C = 0, A = arguments, B; B = A[C]; C++) { + if (!this.events[A[C]]) { + D[A[C]] = true + } + } + } else { + Ext.applyIf(this.events, D) + } + }, + hasListener: function(A) { + var B = this.events[A]; + return typeof B == "object" && B.listeners.length > 0 + }, + suspendEvents: function() { + this.eventsSuspended = true + }, + resumeEvents: function() { + this.eventsSuspended = false + }, + getMethodEvent: function(G) { + if (!this.methodEvents) { + this.methodEvents = {} + } + var F = this.methodEvents[G]; + if (!F) { + F = {}; + this.methodEvents[G] = F; + F.originalFn = this[G]; + F.methodName = G; + F.before = []; + F.after = []; + var C, B, D; + var E = this; + var A = function(J, I, H) { + if ((B = J.apply(I || E, H)) !== undefined) { + if (typeof B === "object") { + if (B.returnValue !== undefined) { + C = B.returnValue + } else { + C = B + } + if (B.cancel === true) { + D = true + } + } else { + if (B === false) { + D = true + } else { + C = B + } + } + } + }; + this[G] = function() { + C = B = undefined; + D = false; + var I = Array.prototype.slice.call(arguments, 0); + for (var J = 0, H = F.before.length; J < H; J++) { + A(F.before[J].fn, F.before[J].scope, I); + if (D) { + return C + } + } + if ((B = F.originalFn.apply(E, I)) !== undefined) { + C = B + } + for (var J = 0, H = F.after.length; J < H; J++) { + A(F.after[J].fn, F.after[J].scope, I); + if (D) { + return C + } + } + return C + } + } + return F + }, + beforeMethod: function(D, B, A) { + var C = this.getMethodEvent(D); + C.before.push({ + fn: B, + scope: A + }) + }, + afterMethod: function(D, B, A) { + var C = this.getMethodEvent(D); + C.after.push({ + fn: B, + scope: A + }) + }, + removeMethodListener: function(F, D, C) { + var E = this.getMethodEvent(F); + for (var B = 0, A = E.before.length; B < A; B++) { + if (E.before[B].fn == D && E.before[B].scope == C) { + E.before.splice(B, 1); + return + } + } + for (var B = 0, A = E.after.length; B < A; B++) { + if (E.after[B].fn == D && E.after[B].scope == C) { + E.after.splice(B, 1); + return + } + } + } +}; +Ext.util.Observable.prototype.on = Ext.util.Observable.prototype.addListener; +Ext.util.Observable.prototype.un = Ext.util.Observable.prototype.removeListener; +Ext.util.Observable.capture = function(C, B, A) { + C.fireEvent = C.fireEvent.createInterceptor(B, A) +}; +Ext.util.Observable.releaseCapture = function(A) { + A.fireEvent = Ext.util.Observable.prototype.fireEvent +}; +(function() { + var B = function(F, G, E) { + var D = new Ext.util.DelayedTask(); + return function() { + D.delay(G.buffer, F, E, Array.prototype.slice.call(arguments, 0)) + } + }; + var C = function(F, G, E, D) { + return function() { + G.removeListener(E, D); + return F.apply(D, arguments) + } + }; + var A = function(E, F, D) { + return function() { + var G = Array.prototype.slice.call(arguments, 0); + setTimeout(function() { + E.apply(D, G) + }, F.delay || 10) + } + }; + Ext.util.Event = function(E, D) { + this.name = D; + this.obj = E; + this.listeners = [] + }; + Ext.util.Event.prototype = { + addListener: function(G, F, E) { + F = F || this.obj; + if (!this.isListening(G, F)) { + var D = this.createListener(G, F, E); + if (!this.firing) { + this.listeners.push(D) + } else { + this.listeners = this.listeners.slice(0); + this.listeners.push(D) + } + } + }, + createListener: function(G, F, H) { + H = H || {}; + F = F || this.obj; + var D = { + fn: G, + scope: F, + options: H + }; + var E = G; + if (H.delay) { + E = A(E, H, F) + } + if (H.single) { + E = C(E, this, G, F) + } + if (H.buffer) { + E = B(E, H, F) + } + D.fireFn = E; + return D + }, + findListener: function(I, H) { + H = H || this.obj; + var F = this.listeners; + for (var G = 0, D = F.length; G < D; G++) { + var E = F[G]; + if (E.fn == I && E.scope == H) { + return G + } + } + return -1 + }, + isListening: function(E, D) { + return this.findListener(E, D) != -1 + }, + removeListener: function(F, E) { + var D; + if ((D = this.findListener(F, E)) != -1) { + if (!this.firing) { + this.listeners.splice(D, 1) + } else { + this.listeners = this.listeners.slice(0); + this.listeners.splice(D, 1) + } + return true + } + return false + }, + clearListeners: function() { + this.listeners = [] + }, + fire: function() { + var F = this.listeners, + I, D = F.length; + if (D > 0) { + this.firing = true; + var G = Array.prototype.slice.call(arguments, 0); + for (var H = 0; H < D; H++) { + var E = F[H]; + if (E.fireFn.apply(E.scope || this.obj || window, arguments) === false) { + this.firing = false; + return false + } + } + this.firing = false + } + return true + } + } +})(); +Ext.EventManager = function() { + var T, M, I = false; + var K, S, C, O; + var L = Ext.lib.Event; + var N = Ext.lib.Dom; + var B = function() { + if (!I) { + I = true; + Ext.isReady = true; + if (M) { + clearInterval(M) + } + if (Ext.isGecko || Ext.isOpera) { + document.removeEventListener("DOMContentLoaded", B, false) + } + if (Ext.isIE) { + var D = document.getElementById("ie-deferred-loader"); + if (D) { + D.onreadystatechange = null; + D.parentNode.removeChild(D) + } + } + if (T) { + T.fire(); + T.clearListeners() + } + } + }; + var A = function() { + T = new Ext.util.Event(); + if (Ext.isGecko || Ext.isOpera) { + document.addEventListener("DOMContentLoaded", B, false) + } else { + if (Ext.isIE) { + document.write(""); + var D = document.getElementById("ie-deferred-loader"); + D.onreadystatechange = function() { + if (this.readyState == "complete") { + B() + } + } + } else { + if (Ext.isSafari) { + M = setInterval(function() { + var E = document.readyState; + if (E == "complete") { + B() + } + }, 10) + } + } + } + L.on(window, "load", B) + }; + var R = function(E, U) { + var D = new Ext.util.DelayedTask(E); + return function(V) { + V = new Ext.EventObjectImpl(V); + D.delay(U.buffer, E, null, [V]) + } + }; + var P = function(V, U, D, E) { + return function(W) { + Ext.EventManager.removeListener(U, D, E); + V(W) + } + }; + var F = function(D, E) { + return function(U) { + U = new Ext.EventObjectImpl(U); + setTimeout(function() { + D(U) + }, E.delay || 10) + } + }; + var J = function(U, E, D, Y, X) { + var Z = (!D || typeof D == "boolean") ? {} : D; + Y = Y || Z.fn; + X = X || Z.scope; + var W = Ext.getDom(U); + if (!W) { + throw "Error listening for \"" + E + "\". Element \"" + U + "\" doesn't exist." + } + var V = function(b) { + b = Ext.EventObject.setEvent(b); + var a; + if (Z.delegate) { + a = b.getTarget(Z.delegate, W); + if (!a) { + return + } + } else { + a = b.target + } + if (Z.stopEvent === true) { + b.stopEvent() + } + if (Z.preventDefault === true) { + b.preventDefault() + } + if (Z.stopPropagation === true) { + b.stopPropagation() + } + if (Z.normalized === false) { + b = b.browserEvent + } + Y.call(X || W, b, a, Z) + }; + if (Z.delay) { + V = F(V, Z) + } + if (Z.single) { + V = P(V, W, E, Y) + } + if (Z.buffer) { + V = R(V, Z) + } + Y._handlers = Y._handlers || []; + Y._handlers.push([Ext.id(W), E, V]); + L.on(W, E, V); + if (E == "mousewheel" && W.addEventListener) { + W.addEventListener("DOMMouseScroll", V, false); + L.on(window, "unload", function() { + W.removeEventListener("DOMMouseScroll", V, false) + }) + } + if (E == "mousedown" && W == document) { + Ext.EventManager.stoppedMouseDownEvent.addListener(V) + } + return V + }; + var G = function(E, U, Z) { + var D = Ext.id(E), + a = Z._handlers, + X = Z; + if (a) { + for (var V = 0, Y = a.length; V < Y; V++) { + var W = a[V]; + if (W[0] == D && W[1] == U) { + X = W[2]; + a.splice(V, 1); + break + } + } + } + L.un(E, U, X); + E = Ext.getDom(E); + if (U == "mousewheel" && E.addEventListener) { + E.removeEventListener("DOMMouseScroll", X, false) + } + if (U == "mousedown" && E == document) { + Ext.EventManager.stoppedMouseDownEvent.removeListener(X) + } + }; + var H = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/; + var Q = { + addListener: function(U, D, W, V, E) { + if (typeof D == "object") { + var Y = D; + for (var X in Y) { + if (H.test(X)) { + continue + } + if (typeof Y[X] == "function") { + J(U, X, Y, Y[X], Y.scope) + } else { + J(U, X, Y[X]) + } + } + return + } + return J(U, D, E, W, V) + }, + removeListener: function(E, D, U) { + return G(E, D, U) + }, + onDocumentReady: function(U, E, D) { + if (I) { + T.addListener(U, E, D); + T.fire(); + T.clearListeners(); + return + } + if (!T) { + A() + } + T.addListener(U, E, D) + }, + onWindowResize: function(U, E, D) { + if (!K) { + K = new Ext.util.Event(); + S = new Ext.util.DelayedTask(function() { + K.fire(N.getViewWidth(), N.getViewHeight()) + }); + L.on(window, "resize", this.fireWindowResize, this) + } + K.addListener(U, E, D) + }, + fireWindowResize: function() { + if (K) { + if ((Ext.isIE || Ext.isAir) && S) { + S.delay(50) + } else { + K.fire(N.getViewWidth(), N.getViewHeight()) + } + } + }, + onTextResize: function(V, U, D) { + if (!C) { + C = new Ext.util.Event(); + var E = new Ext.Element(document.createElement("div")); + E.dom.className = "x-text-resize"; + E.dom.innerHTML = "X"; + E.appendTo(document.body); + O = E.dom.offsetHeight; + setInterval(function() { + if (E.dom.offsetHeight != O) { + C.fire(O, O = E.dom.offsetHeight) + } + }, this.textResizeInterval) + } + C.addListener(V, U, D) + }, + removeResizeListener: function(E, D) { + if (K) { + K.removeListener(E, D) + } + }, + fireResize: function() { + if (K) { + K.fire(N.getViewWidth(), N.getViewHeight()) + } + }, + ieDeferSrc: false, + textResizeInterval: 50 + }; + Q.on = Q.addListener; + Q.un = Q.removeListener; + Q.stoppedMouseDownEvent = new Ext.util.Event(); + return Q +}(); +Ext.onReady = Ext.EventManager.onDocumentReady; +Ext.onReady(function() { + var B = Ext.getBody(); + if (!B) { + return + } + var A = [Ext.isIE ? "ext-ie " + (Ext.isIE6 ? "ext-ie6" : "ext-ie7") : Ext.isGecko ? "ext-gecko" : Ext.isOpera ? "ext-opera" : Ext.isSafari ? "ext-safari" : ""]; + if (Ext.isMac) { + A.push("ext-mac") + } + if (Ext.isLinux) { + A.push("ext-linux") + } + if (Ext.isBorderBox) { + A.push("ext-border-box") + } + if (Ext.isStrict) { + var C = B.dom.parentNode; + if (C) { + C.className += " ext-strict" + } + } + B.addClass(A.join(" ")) +}); +Ext.EventObject = function() { + var B = Ext.lib.Event; + var A = { + 63234: 37, + 63235: 39, + 63232: 38, + 63233: 40, + 63276: 33, + 63277: 34, + 63272: 46, + 63273: 36, + 63275: 35 + }; + var C = Ext.isIE ? { + 1: 0, + 4: 1, + 2: 2 + } : (Ext.isSafari ? { + 1: 0, + 2: 1, + 3: 2 + } : { + 0: 0, + 1: 1, + 2: 2 + }); + Ext.EventObjectImpl = function(D) { + if (D) { + this.setEvent(D.browserEvent || D) + } + }; + Ext.EventObjectImpl.prototype = { + browserEvent: null, + button: -1, + shiftKey: false, + ctrlKey: false, + altKey: false, + BACKSPACE: 8, + TAB: 9, + RETURN: 13, + ENTER: 13, + SHIFT: 16, + CONTROL: 17, + ESC: 27, + SPACE: 32, + PAGEUP: 33, + PAGEDOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + DELETE: 46, + F5: 116, + setEvent: function(D) { + if (D == this || (D && D.browserEvent)) { + return D + } + this.browserEvent = D; + if (D) { + this.button = D.button ? C[D.button] : (D.which ? D.which - 1 : -1); + if (D.type == "click" && this.button == -1) { + this.button = 0 + } + this.type = D.type; + this.shiftKey = D.shiftKey; + this.ctrlKey = D.ctrlKey || D.metaKey; + this.altKey = D.altKey; + this.keyCode = D.keyCode; + this.charCode = D.charCode; + this.target = B.getTarget(D); + this.xy = B.getXY(D) + } else { + this.button = -1; + this.shiftKey = false; + this.ctrlKey = false; + this.altKey = false; + this.keyCode = 0; + this.charCode = 0; + this.target = null; + this.xy = [0, 0] + } + return this + }, + stopEvent: function() { + if (this.browserEvent) { + if (this.browserEvent.type == "mousedown") { + Ext.EventManager.stoppedMouseDownEvent.fire(this) + } + B.stopEvent(this.browserEvent) + } + }, + preventDefault: function() { + if (this.browserEvent) { + B.preventDefault(this.browserEvent) + } + }, + isNavKeyPress: function() { + var D = this.keyCode; + D = Ext.isSafari ? (A[D] || D) : D; + return (D >= 33 && D <= 40) || D == this.RETURN || D == this.TAB || D == this.ESC + }, + isSpecialKey: function() { + var D = this.keyCode; + return (this.type == "keypress" && this.ctrlKey) || D == 9 || D == 13 || D == 40 || D == 27 || (D == 16) || (D == 17) || (D >= 18 && D <= 20) || (D >= 33 && D <= 35) || (D >= 36 && D <= 39) || (D >= 44 && D <= 45) + }, + stopPropagation: function() { + if (this.browserEvent) { + if (this.browserEvent.type == "mousedown") { + Ext.EventManager.stoppedMouseDownEvent.fire(this) + } + B.stopPropagation(this.browserEvent) + } + }, + getCharCode: function() { + return this.charCode || this.keyCode + }, + getKey: function() { + var D = this.keyCode || this.charCode; + return Ext.isSafari ? (A[D] || D) : D + }, + getPageX: function() { + return this.xy[0] + }, + getPageY: function() { + return this.xy[1] + }, + getTime: function() { + if (this.browserEvent) { + return B.getTime(this.browserEvent) + } + return null + }, + getXY: function() { + return this.xy + }, + getTarget: function(E, G, D) { + var F = Ext.get(this.target); + return E ? F.findParent(E, G, D) : (D ? F : this.target) + }, + getRelatedTarget: function() { + if (this.browserEvent) { + return B.getRelatedTarget(this.browserEvent) + } + return null + }, + getWheelDelta: function() { + var D = this.browserEvent; + var E = 0; + if (D.wheelDelta) { + E = D.wheelDelta / 120 + } else { + if (D.detail) { + E = -D.detail / 3 + } + } + return E + }, + hasModifier: function() { + return ((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false + }, + within: function(E, F) { + var D = this[F ? "getRelatedTarget" : "getTarget"](); + return D && Ext.fly(E).contains(D) + }, + getPoint: function() { + return new Ext.lib.Point(this.xy[0], this.xy[1]) + } + }; + return new Ext.EventObjectImpl() +}(); +(function() { + var D = Ext.lib.Dom; + var E = Ext.lib.Event; + var A = Ext.lib.Anim; + var propCache = {}; + var camelRe = /(-[a-z])/gi; + var camelFn = function(m, a) { + return a.charAt(1).toUpperCase() + }; + var view = document.defaultView; + Ext.Element = function(element, forceNew) { + var dom = typeof element == "string" ? document.getElementById(element) : element; + if (!dom) { + return null + } + var id = dom.id; + if (forceNew !== true && id && Ext.Element.cache[id]) { + return Ext.Element.cache[id] + } + this.dom = dom; + this.id = id || Ext.id(dom) + }; + var El = Ext.Element; + El.prototype = { + originalDisplay: "", + visibilityMode: 1, + defaultUnit: "px", + setVisibilityMode: function(visMode) { + this.visibilityMode = visMode; + return this + }, + enableDisplayMode: function(display) { + this.setVisibilityMode(El.DISPLAY); + if (typeof display != "undefined") { + this.originalDisplay = display + } + return this + }, + findParent: function(simpleSelector, maxDepth, returnEl) { + var p = this.dom, + b = document.body, + depth = 0, + dq = Ext.DomQuery, + stopEl; + maxDepth = maxDepth || 50; + if (typeof maxDepth != "number") { + stopEl = Ext.getDom(maxDepth); + maxDepth = 10 + } + while (p && p.nodeType == 1 && depth < maxDepth && p != b && p != stopEl) { + if (dq.is(p, simpleSelector)) { + return returnEl ? Ext.get(p) : p + } + depth++; + p = p.parentNode + } + return null + }, + findParentNode: function(simpleSelector, maxDepth, returnEl) { + var p = Ext.fly(this.dom.parentNode, "_internal"); + return p ? p.findParent(simpleSelector, maxDepth, returnEl) : null + }, + up: function(simpleSelector, maxDepth) { + return this.findParentNode(simpleSelector, maxDepth, true) + }, + is: function(simpleSelector) { + return Ext.DomQuery.is(this.dom, simpleSelector) + }, + animate: function(args, duration, onComplete, easing, animType) { + this.anim(args, { + duration: duration, + callback: onComplete, + easing: easing + }, animType); + return this + }, + anim: function(args, opt, animType, defaultDur, defaultEase, cb) { + animType = animType || "run"; + opt = opt || {}; + var anim = Ext.lib.Anim[animType](this.dom, args, (opt.duration || defaultDur) || 0.35, (opt.easing || defaultEase) || "easeOut", function() { + Ext.callback(cb, this); + Ext.callback(opt.callback, opt.scope || this, [this, opt]) + }, this); + opt.anim = anim; + return anim + }, + preanim: function(a, i) { + return !a[i] ? false : (typeof a[i] == "object" ? a[i] : { + duration: a[i + 1], + callback: a[i + 2], + easing: a[i + 3] + }) + }, + clean: function(forceReclean) { + if (this.isCleaned && forceReclean !== true) { + return this + } + var ns = /\S/; + var d = this.dom, + n = d.firstChild, + ni = -1; + while (n) { + var nx = n.nextSibling; + if (n.nodeType == 3 && !ns.test(n.nodeValue)) { + d.removeChild(n) + } else { + n.nodeIndex = ++ni + } + n = nx + } + this.isCleaned = true; + return this + }, + scrollIntoView: function(container, hscroll) { + var c = Ext.getDom(container) || Ext.getBody().dom; + var el = this.dom; + var o = this.getOffsetsTo(c), + l = o[0] + c.scrollLeft, + t = o[1] + c.scrollTop, + b = t + el.offsetHeight, + r = l + el.offsetWidth; + var ch = c.clientHeight; + var ct = parseInt(c.scrollTop, 10); + var cl = parseInt(c.scrollLeft, 10); + var cb = ct + ch; + var cr = cl + c.clientWidth; + if (el.offsetHeight > ch || t < ct) { + c.scrollTop = t + } else { + if (b > cb) { + c.scrollTop = b - ch + } + } + c.scrollTop = c.scrollTop; + if (hscroll !== false) { + if (el.offsetWidth > c.clientWidth || l < cl) { + c.scrollLeft = l + } else { + if (r > cr) { + c.scrollLeft = r - c.clientWidth + } + } + c.scrollLeft = c.scrollLeft + } + return this + }, + scrollChildIntoView: function(child, hscroll) { + Ext.fly(child, "_scrollChildIntoView").scrollIntoView(this, hscroll) + }, + autoHeight: function(animate, duration, onComplete, easing) { + var oldHeight = this.getHeight(); + this.clip(); + this.setHeight(1); + setTimeout(function() { + var height = parseInt(this.dom.scrollHeight, 10); + if (!animate) { + this.setHeight(height); + this.unclip(); + if (typeof onComplete == "function") { + onComplete() + } + } else { + this.setHeight(oldHeight); + this.setHeight(height, animate, duration, function() { + this.unclip(); + if (typeof onComplete == "function") { + onComplete() + } + }.createDelegate(this), easing) + } + }.createDelegate(this), 0); + return this + }, + contains: function(el) { + if (!el) { + return false + } + return D.isAncestor(this.dom, el.dom ? el.dom : el) + }, + isVisible: function(deep) { + var vis = !(this.getStyle("visibility") == "hidden" || this.getStyle("display") == "none"); + if (deep !== true || !vis) { + return vis + } + var p = this.dom.parentNode; + while (p && p.tagName.toLowerCase() != "body") { + if (!Ext.fly(p, "_isVisible").isVisible()) { + return false + } + p = p.parentNode + } + return true + }, + select: function(selector, unique) { + return El.select(selector, unique, this.dom) + }, + query: function(selector, unique) { + return Ext.DomQuery.select(selector, this.dom) + }, + child: function(selector, returnDom) { + var n = Ext.DomQuery.selectNode(selector, this.dom); + return returnDom ? n : Ext.get(n) + }, + down: function(selector, returnDom) { + var n = Ext.DomQuery.selectNode(" > " + selector, this.dom); + return returnDom ? n : Ext.get(n) + }, + initDD: function(group, config, overrides) { + var dd = new Ext.dd.DD(Ext.id(this.dom), group, config); + return Ext.apply(dd, overrides) + }, + initDDProxy: function(group, config, overrides) { + var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config); + return Ext.apply(dd, overrides) + }, + initDDTarget: function(group, config, overrides) { + var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config); + return Ext.apply(dd, overrides) + }, + setVisible: function(visible, animate) { + if (!animate || !A) { + if (this.visibilityMode == El.DISPLAY) { + this.setDisplayed(visible) + } else { + this.fixDisplay(); + this.dom.style.visibility = visible ? "visible" : "hidden" + } + } else { + var dom = this.dom; + var visMode = this.visibilityMode; + if (visible) { + this.setOpacity(0.01); + this.setVisible(true) + } + this.anim({ + opacity: { + to: (visible ? 1 : 0) + } + }, this.preanim(arguments, 1), null, 0.35, "easeIn", function() { + if (!visible) { + if (visMode == El.DISPLAY) { + dom.style.display = "none" + } else { + dom.style.visibility = "hidden" + } + Ext.get(dom).setOpacity(1) + } + }) + } + return this + }, + isDisplayed: function() { + return this.getStyle("display") != "none" + }, + toggle: function(animate) { + this.setVisible(!this.isVisible(), this.preanim(arguments, 0)); + return this + }, + setDisplayed: function(value) { + if (typeof value == "boolean") { + value = value ? this.originalDisplay : "none" + } + this.setStyle("display", value); + return this + }, + focus: function() { + try { + this.dom.focus() + } catch (e) {} + return this + }, + blur: function() { + try { + this.dom.blur() + } catch (e) {} + return this + }, + addClass: function(className) { + if (Ext.isArray(className)) { + for (var i = 0, len = className.length; i < len; i++) { + this.addClass(className[i]) + } + } else { + if (className && !this.hasClass(className)) { + this.dom.className = this.dom.className + " " + className + } + } + return this + }, + radioClass: function(className) { + var siblings = this.dom.parentNode.childNodes; + for (var i = 0; i < siblings.length; i++) { + var s = siblings[i]; + if (s.nodeType == 1) { + Ext.get(s).removeClass(className) + } + } + this.addClass(className); + return this + }, + removeClass: function(className) { + if (!className || !this.dom.className) { + return this + } + if (Ext.isArray(className)) { + for (var i = 0, len = className.length; i < len; i++) { + this.removeClass(className[i]) + } + } else { + if (this.hasClass(className)) { + var re = this.classReCache[className]; + if (!re) { + re = new RegExp("(?:^|\\s+)" + className + "(?:\\s+|$)", "g"); + this.classReCache[className] = re + } + this.dom.className = this.dom.className.replace(re, " ") + } + } + return this + }, + classReCache: {}, + toggleClass: function(className) { + if (this.hasClass(className)) { + this.removeClass(className) + } else { + this.addClass(className) + } + return this + }, + hasClass: function(className) { + return className && (" " + this.dom.className + " ").indexOf(" " + className + " ") != -1 + }, + replaceClass: function(oldClassName, newClassName) { + this.removeClass(oldClassName); + this.addClass(newClassName); + return this + }, + getStyles: function() { + var a = arguments, + len = a.length, + r = {}; + for (var i = 0; i < len; i++) { + r[a[i]] = this.getStyle(a[i]) + } + return r + }, + getStyle: function() { + return view && view.getComputedStyle ? function(prop) { + var el = this.dom, + v, cs, camel; + if (prop == "float") { + prop = "cssFloat" + } + if (v = el.style[prop]) { + return v + } + if (cs = view.getComputedStyle(el, "")) { + if (!(camel = propCache[prop])) { + camel = propCache[prop] = prop.replace(camelRe, camelFn) + } + return cs[camel] + } + return null + } : function(prop) { + var el = this.dom, + v, cs, camel; + if (prop == "opacity") { + if (typeof el.style.filter == "string") { + var m = el.style.filter.match(/alpha\(opacity=(.*)\)/i); + if (m) { + var fv = parseFloat(m[1]); + if (!isNaN(fv)) { + return fv ? fv / 100 : 0 + } + } + } + return 1 + } else { + if (prop == "float") { + prop = "styleFloat" + } + } + if (!(camel = propCache[prop])) { + camel = propCache[prop] = prop.replace(camelRe, camelFn) + } + if (v = el.style[camel]) { + return v + } + if (cs = el.currentStyle) { + return cs[camel] + } + return null + } + }(), + setStyle: function(prop, value) { + if (typeof prop == "string") { + var camel; + if (!(camel = propCache[prop])) { + camel = propCache[prop] = prop.replace(camelRe, camelFn) + } + if (camel == "opacity") { + this.setOpacity(value) + } else { + this.dom.style[camel] = value + } + } else { + for (var style in prop) { + if (typeof prop[style] != "function") { + this.setStyle(style, prop[style]) + } + } + } + return this + }, + applyStyles: function(style) { + Ext.DomHelper.applyStyles(this.dom, style); + return this + }, + getX: function() { + return D.getX(this.dom) + }, + getY: function() { + return D.getY(this.dom) + }, + getXY: function() { + return D.getXY(this.dom) + }, + getOffsetsTo: function(el) { + var o = this.getXY(); + var e = Ext.fly(el, "_internal").getXY(); + return [o[0] - e[0], o[1] - e[1]] + }, + setX: function(x, animate) { + if (!animate || !A) { + D.setX(this.dom, x) + } else { + this.setXY([x, this.getY()], this.preanim(arguments, 1)) + } + return this + }, + setY: function(y, animate) { + if (!animate || !A) { + D.setY(this.dom, y) + } else { + this.setXY([this.getX(), y], this.preanim(arguments, 1)) + } + return this + }, + setLeft: function(left) { + this.setStyle("left", this.addUnits(left)); + return this + }, + setTop: function(top) { + this.setStyle("top", this.addUnits(top)); + return this + }, + setRight: function(right) { + this.setStyle("right", this.addUnits(right)); + return this + }, + setBottom: function(bottom) { + this.setStyle("bottom", this.addUnits(bottom)); + return this + }, + setXY: function(pos, animate) { + if (!animate || !A) { + D.setXY(this.dom, pos) + } else { + this.anim({ + points: { + to: pos + } + }, this.preanim(arguments, 1), "motion") + } + return this + }, + setLocation: function(x, y, animate) { + this.setXY([x, y], this.preanim(arguments, 2)); + return this + }, + moveTo: function(x, y, animate) { + this.setXY([x, y], this.preanim(arguments, 2)); + return this + }, + getRegion: function() { + return D.getRegion(this.dom) + }, + getHeight: function(contentHeight) { + var h = this.dom.offsetHeight || 0; + h = contentHeight !== true ? h : h - this.getBorderWidth("tb") - this.getPadding("tb"); + return h < 0 ? 0 : h + }, + getWidth: function(contentWidth) { + var w = this.dom.offsetWidth || 0; + w = contentWidth !== true ? w : w - this.getBorderWidth("lr") - this.getPadding("lr"); + return w < 0 ? 0 : w + }, + getComputedHeight: function() { + var h = Math.max(this.dom.offsetHeight, this.dom.clientHeight); + if (!h) { + h = parseInt(this.getStyle("height"), 10) || 0; + if (!this.isBorderBox()) { + h += this.getFrameWidth("tb") + } + } + return h + }, + getComputedWidth: function() { + var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth); + if (!w) { + w = parseInt(this.getStyle("width"), 10) || 0; + if (!this.isBorderBox()) { + w += this.getFrameWidth("lr") + } + } + return w + }, + getSize: function(contentSize) { + return { + width: this.getWidth(contentSize), + height: this.getHeight(contentSize) + } + }, + getStyleSize: function() { + var w, h, d = this.dom, + s = d.style; + if (s.width && s.width != "auto") { + w = parseInt(s.width, 10); + if (Ext.isBorderBox) { + w -= this.getFrameWidth("lr") + } + } + if (s.height && s.height != "auto") { + h = parseInt(s.height, 10); + if (Ext.isBorderBox) { + h -= this.getFrameWidth("tb") + } + } + return { + width: w || this.getWidth(true), + height: h || this.getHeight(true) + } + }, + getViewSize: function() { + var d = this.dom, + doc = document, + aw = 0, + ah = 0; + if (d == doc || d == doc.body) { + return { + width: D.getViewWidth(), + height: D.getViewHeight() + } + } else { + return { + width: d.clientWidth, + height: d.clientHeight + } + } + }, + getValue: function(asNumber) { + return asNumber ? parseInt(this.dom.value, 10) : this.dom.value + }, + adjustWidth: function(width) { + if (typeof width == "number") { + if (this.autoBoxAdjust && !this.isBorderBox()) { + width -= (this.getBorderWidth("lr") + this.getPadding("lr")) + } + if (width < 0) { + width = 0 + } + } + return width + }, + adjustHeight: function(height) { + if (typeof height == "number") { + if (this.autoBoxAdjust && !this.isBorderBox()) { + height -= (this.getBorderWidth("tb") + this.getPadding("tb")) + } + if (height < 0) { + height = 0 + } + } + return height + }, + setWidth: function(width, animate) { + width = this.adjustWidth(width); + if (!animate || !A) { + this.dom.style.width = this.addUnits(width) + } else { + this.anim({ + width: { + to: width + } + }, this.preanim(arguments, 1)) + } + return this + }, + setHeight: function(height, animate) { + height = this.adjustHeight(height); + if (!animate || !A) { + this.dom.style.height = this.addUnits(height) + } else { + this.anim({ + height: { + to: height + } + }, this.preanim(arguments, 1)) + } + return this + }, + setSize: function(width, height, animate) { + if (typeof width == "object") { + height = width.height; + width = width.width + } + width = this.adjustWidth(width); + height = this.adjustHeight(height); + if (!animate || !A) { + this.dom.style.width = this.addUnits(width); + this.dom.style.height = this.addUnits(height) + } else { + this.anim({ + width: { + to: width + }, + height: { + to: height + } + }, this.preanim(arguments, 2)) + } + return this + }, + setBounds: function(x, y, width, height, animate) { + if (!animate || !A) { + this.setSize(width, height); + this.setLocation(x, y) + } else { + width = this.adjustWidth(width); + height = this.adjustHeight(height); + this.anim({ + points: { + to: [x, y] + }, + width: { + to: width + }, + height: { + to: height + } + }, this.preanim(arguments, 4), "motion") + } + return this + }, + setRegion: function(region, animate) { + this.setBounds(region.left, region.top, region.right - region.left, region.bottom - region.top, this.preanim(arguments, 1)); + return this + }, + addListener: function(eventName, fn, scope, options) { + Ext.EventManager.on(this.dom, eventName, fn, scope || this, options) + }, + removeListener: function(eventName, fn) { + Ext.EventManager.removeListener(this.dom, eventName, fn); + return this + }, + removeAllListeners: function() { + E.purgeElement(this.dom); + return this + }, + relayEvent: function(eventName, observable) { + this.on(eventName, function(e) { + observable.fireEvent(eventName, e) + }) + }, + setOpacity: function(opacity, animate) { + if (!animate || !A) { + var s = this.dom.style; + if (Ext.isIE) { + s.zoom = 1; + s.filter = (s.filter || "").replace(/alpha\([^\)]*\)/gi, "") + (opacity == 1 ? "" : " alpha(opacity=" + opacity * 100 + ")") + } else { + s.opacity = opacity + } + } else { + this.anim({ + opacity: { + to: opacity + } + }, this.preanim(arguments, 1), null, 0.35, "easeIn") + } + return this + }, + getLeft: function(local) { + if (!local) { + return this.getX() + } else { + return parseInt(this.getStyle("left"), 10) || 0 + } + }, + getRight: function(local) { + if (!local) { + return this.getX() + this.getWidth() + } else { + return (this.getLeft(true) + this.getWidth()) || 0 + } + }, + getTop: function(local) { + if (!local) { + return this.getY() + } else { + return parseInt(this.getStyle("top"), 10) || 0 + } + }, + getBottom: function(local) { + if (!local) { + return this.getY() + this.getHeight() + } else { + return (this.getTop(true) + this.getHeight()) || 0 + } + }, + position: function(pos, zIndex, x, y) { + if (!pos) { + if (this.getStyle("position") == "static") { + this.setStyle("position", "relative") + } + } else { + this.setStyle("position", pos) + } + if (zIndex) { + this.setStyle("z-index", zIndex) + } + if (x !== undefined && y !== undefined) { + this.setXY([x, y]) + } else { + if (x !== undefined) { + this.setX(x) + } else { + if (y !== undefined) { + this.setY(y) + } + } + } + }, + clearPositioning: function(value) { + value = value || ""; + this.setStyle({ + "left": value, + "right": value, + "top": value, + "bottom": value, + "z-index": "", + "position": "static" + }); + return this + }, + getPositioning: function() { + var l = this.getStyle("left"); + var t = this.getStyle("top"); + return { + "position": this.getStyle("position"), + "left": l, + "right": l ? "" : this.getStyle("right"), + "top": t, + "bottom": t ? "" : this.getStyle("bottom"), + "z-index": this.getStyle("z-index") + } + }, + getBorderWidth: function(side) { + return this.addStyles(side, El.borders) + }, + getPadding: function(side) { + return this.addStyles(side, El.paddings) + }, + setPositioning: function(pc) { + this.applyStyles(pc); + if (pc.right == "auto") { + this.dom.style.right = "" + } + if (pc.bottom == "auto") { + this.dom.style.bottom = "" + } + return this + }, + fixDisplay: function() { + if (this.getStyle("display") == "none") { + this.setStyle("visibility", "hidden"); + this.setStyle("display", this.originalDisplay); + if (this.getStyle("display") == "none") { + this.setStyle("display", "block") + } + } + }, + setOverflow: function(v) { + if (v == "auto" && Ext.isMac && Ext.isGecko) { + this.dom.style.overflow = "hidden"; + (function() { + this.dom.style.overflow = "auto" + }).defer(1, this) + } else { + this.dom.style.overflow = v + } + }, + setLeftTop: function(left, top) { + this.dom.style.left = this.addUnits(left); + this.dom.style.top = this.addUnits(top); + return this + }, + move: function(direction, distance, animate) { + var xy = this.getXY(); + direction = direction.toLowerCase(); + switch (direction) { + case "l": + case "left": + this.moveTo(xy[0] - distance, xy[1], this.preanim(arguments, 2)); + break; + case "r": + case "right": + this.moveTo(xy[0] + distance, xy[1], this.preanim(arguments, 2)); + break; + case "t": + case "top": + case "up": + this.moveTo(xy[0], xy[1] - distance, this.preanim(arguments, 2)); + break; + case "b": + case "bottom": + case "down": + this.moveTo(xy[0], xy[1] + distance, this.preanim(arguments, 2)); + break + } + return this + }, + clip: function() { + if (!this.isClipped) { + this.isClipped = true; + this.originalClip = { + "o": this.getStyle("overflow"), + "x": this.getStyle("overflow-x"), + "y": this.getStyle("overflow-y") + }; + this.setStyle("overflow", "hidden"); + this.setStyle("overflow-x", "hidden"); + this.setStyle("overflow-y", "hidden") + } + return this + }, + unclip: function() { + if (this.isClipped) { + this.isClipped = false; + var o = this.originalClip; + if (o.o) { + this.setStyle("overflow", o.o) + } + if (o.x) { + this.setStyle("overflow-x", o.x) + } + if (o.y) { + this.setStyle("overflow-y", o.y) + } + } + return this + }, + getAnchorXY: function(anchor, local, s) { + var w, h, vp = false; + if (!s) { + var d = this.dom; + if (d == document.body || d == document) { + vp = true; + w = D.getViewWidth(); + h = D.getViewHeight() + } else { + w = this.getWidth(); + h = this.getHeight() + } + } else { + w = s.width; + h = s.height + } + var x = 0, + y = 0, + r = Math.round; + switch ((anchor || "tl").toLowerCase()) { + case "c": + x = r(w * 0.5); + y = r(h * 0.5); + break; + case "t": + x = r(w * 0.5); + y = 0; + break; + case "l": + x = 0; + y = r(h * 0.5); + break; + case "r": + x = w; + y = r(h * 0.5); + break; + case "b": + x = r(w * 0.5); + y = h; + break; + case "tl": + x = 0; + y = 0; + break; + case "bl": + x = 0; + y = h; + break; + case "br": + x = w; + y = h; + break; + case "tr": + x = w; + y = 0; + break + } + if (local === true) { + return [x, y] + } + if (vp) { + var sc = this.getScroll(); + return [x + sc.left, y + sc.top] + } + var o = this.getXY(); + return [x + o[0], y + o[1]] + }, + getAlignToXY: function(el, p, o) { + el = Ext.get(el); + if (!el || !el.dom) { + throw "Element.alignToXY with an element that doesn't exist" + } + var d = this.dom; + var c = false; + var p1 = "", + p2 = ""; + o = o || [0, 0]; + if (!p) { + p = "tl-bl" + } else { + if (p == "?") { + p = "tl-bl?" + } else { + if (p.indexOf("-") == -1) { + p = "tl-" + p + } + } + } + p = p.toLowerCase(); + var m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/); + if (!m) { + throw "Element.alignTo with an invalid alignment " + p + } + p1 = m[1]; + p2 = m[2]; + c = !!m[3]; + var a1 = this.getAnchorXY(p1, true); + var a2 = el.getAnchorXY(p2, false); + var x = a2[0] - a1[0] + o[0]; + var y = a2[1] - a1[1] + o[1]; + if (c) { + var w = this.getWidth(), + h = this.getHeight(), + r = el.getRegion(); + var dw = D.getViewWidth() - 5, + dh = D.getViewHeight() - 5; + var p1y = p1.charAt(0), + p1x = p1.charAt(p1.length - 1); + var p2y = p2.charAt(0), + p2x = p2.charAt(p2.length - 1); + var swapY = ((p1y == "t" && p2y == "b") || (p1y == "b" && p2y == "t")); + var swapX = ((p1x == "r" && p2x == "l") || (p1x == "l" && p2x == "r")); + var doc = document; + var scrollX = (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0) + 5; + var scrollY = (doc.documentElement.scrollTop || doc.body.scrollTop || 0) + 5; + if ((x + w) > dw + scrollX) { + x = swapX ? r.left - w : dw + scrollX - w + } + if (x < scrollX) { + x = swapX ? r.right : scrollX + } + if ((y + h) > dh + scrollY) { + y = swapY ? r.top - h : dh + scrollY - h + } + if (y < scrollY) { + y = swapY ? r.bottom : scrollY + } + } + return [x, y] + }, + getConstrainToXY: function() { + var os = { + top: 0, + left: 0, + bottom: 0, + right: 0 + }; + return function(el, local, offsets, proposedXY) { + el = Ext.get(el); + offsets = offsets ? Ext.applyIf(offsets, os) : os; + var vw, vh, vx = 0, + vy = 0; + if (el.dom == document.body || el.dom == document) { + vw = Ext.lib.Dom.getViewWidth(); + vh = Ext.lib.Dom.getViewHeight() + } else { + vw = el.dom.clientWidth; + vh = el.dom.clientHeight; + if (!local) { + var vxy = el.getXY(); + vx = vxy[0]; + vy = vxy[1] + } + } + var s = el.getScroll(); + vx += offsets.left + s.left; + vy += offsets.top + s.top; + vw -= offsets.right; + vh -= offsets.bottom; + var vr = vx + vw; + var vb = vy + vh; + var xy = proposedXY || (!local ? this.getXY() : [this.getLeft(true), this.getTop(true)]); + var x = xy[0], + y = xy[1]; + var w = this.dom.offsetWidth, + h = this.dom.offsetHeight; + var moved = false; + if ((x + w) > vr) { + x = vr - w; + moved = true + } + if ((y + h) > vb) { + y = vb - h; + moved = true + } + if (x < vx) { + x = vx; + moved = true + } + if (y < vy) { + y = vy; + moved = true + } + return moved ? [x, y] : false + } + }(), + adjustForConstraints: function(xy, parent, offsets) { + return this.getConstrainToXY(parent || document, false, offsets, xy) || xy + }, + alignTo: function(element, position, offsets, animate) { + var xy = this.getAlignToXY(element, position, offsets); + this.setXY(xy, this.preanim(arguments, 3)); + return this + }, + anchorTo: function(el, alignment, offsets, animate, monitorScroll, callback) { + var action = function() { + this.alignTo(el, alignment, offsets, animate); + Ext.callback(callback, this) + }; + Ext.EventManager.onWindowResize(action, this); + var tm = typeof monitorScroll; + if (tm != "undefined") { + Ext.EventManager.on(window, "scroll", action, this, { + buffer: tm == "number" ? monitorScroll : 50 + }) + } + action.call(this); + return this + }, + clearOpacity: function() { + if (window.ActiveXObject) { + if (typeof this.dom.style.filter == "string" && (/alpha/i).test(this.dom.style.filter)) { + this.dom.style.filter = "" + } + } else { + this.dom.style.opacity = ""; + this.dom.style["-moz-opacity"] = ""; + this.dom.style["-khtml-opacity"] = "" + } + return this + }, + hide: function(animate) { + this.setVisible(false, this.preanim(arguments, 0)); + return this + }, + show: function(animate) { + this.setVisible(true, this.preanim(arguments, 0)); + return this + }, + addUnits: function(size) { + return Ext.Element.addUnits(size, this.defaultUnit) + }, + update: function(html, loadScripts, callback) { + if (typeof html == "undefined") { + html = "" + } + if (loadScripts !== true) { + this.dom.innerHTML = html; + if (typeof callback == "function") { + callback() + } + return this + } + var id = Ext.id(); + var dom = this.dom; + html += ""; + E.onAvailable(id, function() { + var hd = document.getElementsByTagName("head")[0]; + var re = /(?:]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig; + var srcRe = /\ssrc=([\'\"])(.*?)\1/i; + var typeRe = /\stype=([\'\"])(.*?)\1/i; + var match; + while (match = re.exec(html)) { + var attrs = match[1]; + var srcMatch = attrs ? attrs.match(srcRe) : false; + if (srcMatch && srcMatch[2]) { + var s = document.createElement("script"); + s.src = srcMatch[2]; + var typeMatch = attrs.match(typeRe); + if (typeMatch && typeMatch[2]) { + s.type = typeMatch[2] + } + hd.appendChild(s) + } else { + if (match[2] && match[2].length > 0) { + if (window.execScript) { + window.execScript(match[2]) + } else { + window.eval(match[2]) + } + } + } + } + var el = document.getElementById(id); + if (el) { + Ext.removeNode(el) + } + if (typeof callback == "function") { + callback() + } + }); + dom.innerHTML = html.replace(/(?:)((\n|\r|.)*?)(?:<\/script>)/ig, ""); + return this + }, + load: function() { + var um = this.getUpdater(); + um.update.apply(um, arguments); + return this + }, + getUpdater: function() { + if (!this.updateManager) { + this.updateManager = new Ext.Updater(this) + } + return this.updateManager + }, + unselectable: function() { + this.dom.unselectable = "on"; + this.swallowEvent("selectstart", true); + this.applyStyles("-moz-user-select:none;-khtml-user-select:none;"); + this.addClass("x-unselectable"); + return this + }, + getCenterXY: function() { + return this.getAlignToXY(document, "c-c") + }, + center: function(centerIn) { + this.alignTo(centerIn || document, "c-c"); + return this + }, + isBorderBox: function() { + return noBoxAdjust[this.dom.tagName.toLowerCase()] || Ext.isBorderBox + }, + getBox: function(contentBox, local) { + var xy; + if (!local) { + xy = this.getXY() + } else { + var left = parseInt(this.getStyle("left"), 10) || 0; + var top = parseInt(this.getStyle("top"), 10) || 0; + xy = [left, top] + } + var el = this.dom, + w = el.offsetWidth, + h = el.offsetHeight, + bx; + if (!contentBox) { + bx = { + x: xy[0], + y: xy[1], + 0: xy[0], + 1: xy[1], + width: w, + height: h + } + } else { + var l = this.getBorderWidth("l") + this.getPadding("l"); + var r = this.getBorderWidth("r") + this.getPadding("r"); + var t = this.getBorderWidth("t") + this.getPadding("t"); + var b = this.getBorderWidth("b") + this.getPadding("b"); + bx = { + x: xy[0] + l, + y: xy[1] + t, + 0: xy[0] + l, + 1: xy[1] + t, + width: w - (l + r), + height: h - (t + b) + } + } + bx.right = bx.x + bx.width; + bx.bottom = bx.y + bx.height; + return bx + }, + getFrameWidth: function(sides, onlyContentBox) { + return onlyContentBox && Ext.isBorderBox ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides)) + }, + setBox: function(box, adjust, animate) { + var w = box.width, + h = box.height; + if ((adjust && !this.autoBoxAdjust) && !this.isBorderBox()) { + w -= (this.getBorderWidth("lr") + this.getPadding("lr")); + h -= (this.getBorderWidth("tb") + this.getPadding("tb")) + } + this.setBounds(box.x, box.y, w, h, this.preanim(arguments, 2)); + return this + }, + repaint: function() { + var dom = this.dom; + this.addClass("x-repaint"); + setTimeout(function() { + Ext.get(dom).removeClass("x-repaint") + }, 1); + return this + }, + getMargins: function(side) { + if (!side) { + return { + top: parseInt(this.getStyle("margin-top"), 10) || 0, + left: parseInt(this.getStyle("margin-left"), 10) || 0, + bottom: parseInt(this.getStyle("margin-bottom"), 10) || 0, + right: parseInt(this.getStyle("margin-right"), 10) || 0 + } + } else { + return this.addStyles(side, El.margins) + } + }, + addStyles: function(sides, styles) { + var val = 0, + v, w; + for (var i = 0, len = sides.length; i < len; i++) { + v = this.getStyle(styles[sides.charAt(i)]); + if (v) { + w = parseInt(v, 10); + if (w) { + val += (w >= 0 ? w : -1 * w) + } + } + } + return val + }, + createProxy: function(config, renderTo, matchBox) { + config = typeof config == "object" ? config : { + tag: "div", + cls: config + }; + var proxy; + if (renderTo) { + proxy = Ext.DomHelper.append(renderTo, config, true) + } else { + proxy = Ext.DomHelper.insertBefore(this.dom, config, true) + } + if (matchBox) { + proxy.setBox(this.getBox()) + } + return proxy + }, + mask: function(msg, msgCls) { + if (this.getStyle("position") == "static") { + this.setStyle("position", "relative") + } + if (this._maskMsg) { + this._maskMsg.remove() + } + if (this._mask) { + this._mask.remove() + } + this._mask = Ext.DomHelper.append(this.dom, { + cls: "ext-el-mask" + }, true); + this.addClass("x-masked"); + this._mask.setDisplayed(true); + if (typeof msg == "string") { + this._maskMsg = Ext.DomHelper.append(this.dom, { + cls: "ext-el-mask-msg", + cn: { + tag: "div" + } + }, true); + var mm = this._maskMsg; + mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls : "ext-el-mask-msg"; + mm.dom.firstChild.innerHTML = msg; + mm.setDisplayed(true); + mm.center(this) + } + if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && this.getStyle("height") == "auto") { + this._mask.setSize(this.dom.clientWidth, this.getHeight()) + } + return this._mask + }, + unmask: function() { + if (this._mask) { + if (this._maskMsg) { + this._maskMsg.remove(); + delete this._maskMsg + } + this._mask.remove(); + delete this._mask + } + this.removeClass("x-masked") + }, + isMasked: function() { + return this._mask && this._mask.isVisible() + }, + createShim: function() { + var el = document.createElement("iframe"); + el.frameBorder = "no"; + el.className = "ext-shim"; + if (Ext.isIE && Ext.isSecure) { + el.src = Ext.SSL_SECURE_URL + } + var shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom)); + shim.autoBoxAdjust = false; + return shim + }, + remove: function() { + Ext.removeNode(this.dom); + delete El.cache[this.dom.id] + }, + hover: function(overFn, outFn, scope) { + var preOverFn = function(e) { + if (!e.within(this, true)) { + overFn.apply(scope || this, arguments) + } + }; + var preOutFn = function(e) { + if (!e.within(this, true)) { + outFn.apply(scope || this, arguments) + } + }; + this.on("mouseover", preOverFn, this.dom); + this.on("mouseout", preOutFn, this.dom); + return this + }, + addClassOnOver: function(className, preventFlicker) { + this.hover(function() { + Ext.fly(this, "_internal").addClass(className) + }, function() { + Ext.fly(this, "_internal").removeClass(className) + }); + return this + }, + addClassOnFocus: function(className) { + this.on("focus", function() { + Ext.fly(this, "_internal").addClass(className) + }, this.dom); + this.on("blur", function() { + Ext.fly(this, "_internal").removeClass(className) + }, this.dom); + return this + }, + addClassOnClick: function(className) { + var dom = this.dom; + this.on("mousedown", function() { + Ext.fly(dom, "_internal").addClass(className); + var d = Ext.getDoc(); + var fn = function() { + Ext.fly(dom, "_internal").removeClass(className); + d.removeListener("mouseup", fn) + }; + d.on("mouseup", fn) + }); + return this + }, + swallowEvent: function(eventName, preventDefault) { + var fn = function(e) { + e.stopPropagation(); + if (preventDefault) { + e.preventDefault() + } + }; + if (Ext.isArray(eventName)) { + for (var i = 0, len = eventName.length; i < len; i++) { + this.on(eventName[i], fn) + } + return this + } + this.on(eventName, fn); + return this + }, + parent: function(selector, returnDom) { + return this.matchNode("parentNode", "parentNode", selector, returnDom) + }, + next: function(selector, returnDom) { + return this.matchNode("nextSibling", "nextSibling", selector, returnDom) + }, + prev: function(selector, returnDom) { + return this.matchNode("previousSibling", "previousSibling", selector, returnDom) + }, + first: function(selector, returnDom) { + return this.matchNode("nextSibling", "firstChild", selector, returnDom) + }, + last: function(selector, returnDom) { + return this.matchNode("previousSibling", "lastChild", selector, returnDom) + }, + matchNode: function(dir, start, selector, returnDom) { + var n = this.dom[start]; + while (n) { + if (n.nodeType == 1 && (!selector || Ext.DomQuery.is(n, selector))) { + return !returnDom ? Ext.get(n) : n + } + n = n[dir] + } + return null + }, + appendChild: function(el) { + el = Ext.get(el); + el.appendTo(this); + return this + }, + createChild: function(config, insertBefore, returnDom) { + config = config || { + tag: "div" + }; + if (insertBefore) { + return Ext.DomHelper.insertBefore(insertBefore, config, returnDom !== true) + } + return Ext.DomHelper[!this.dom.firstChild ? "overwrite" : "append"](this.dom, config, returnDom !== true) + }, + appendTo: function(el) { + el = Ext.getDom(el); + el.appendChild(this.dom); + return this + }, + insertBefore: function(el) { + el = Ext.getDom(el); + el.parentNode.insertBefore(this.dom, el); + return this + }, + insertAfter: function(el) { + el = Ext.getDom(el); + el.parentNode.insertBefore(this.dom, el.nextSibling); + return this + }, + insertFirst: function(el, returnDom) { + el = el || {}; + if (typeof el == "object" && !el.nodeType && !el.dom) { + return this.createChild(el, this.dom.firstChild, returnDom) + } else { + el = Ext.getDom(el); + this.dom.insertBefore(el, this.dom.firstChild); + return !returnDom ? Ext.get(el) : el + } + }, + insertSibling: function(el, where, returnDom) { + var rt; + if (Ext.isArray(el)) { + for (var i = 0, len = el.length; i < len; i++) { + rt = this.insertSibling(el[i], where, returnDom) + } + return rt + } + where = where ? where.toLowerCase() : "before"; + el = el || {}; + var refNode = where == "before" ? this.dom : this.dom.nextSibling; + if (typeof el == "object" && !el.nodeType && !el.dom) { + if (where == "after" && !this.dom.nextSibling) { + rt = Ext.DomHelper.append(this.dom.parentNode, el, !returnDom) + } else { + rt = Ext.DomHelper[where == "after" ? "insertAfter" : "insertBefore"](this.dom, el, !returnDom) + } + } else { + rt = this.dom.parentNode.insertBefore(Ext.getDom(el), refNode); + if (!returnDom) { + rt = Ext.get(rt) + } + } + return rt + }, + wrap: function(config, returnDom) { + if (!config) { + config = { + tag: "div" + } + } + var newEl = Ext.DomHelper.insertBefore(this.dom, config, !returnDom); + newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom); + return newEl + }, + replace: function(el) { + el = Ext.get(el); + this.insertBefore(el); + el.remove(); + return this + }, + replaceWith: function(el) { + if (typeof el == "object" && !el.nodeType && !el.dom) { + el = this.insertSibling(el, "before") + } else { + el = Ext.getDom(el); + this.dom.parentNode.insertBefore(el, this.dom) + } + El.uncache(this.id); + this.dom.parentNode.removeChild(this.dom); + this.dom = el; + this.id = Ext.id(el); + El.cache[this.id] = this; + return this + }, + insertHtml: function(where, html, returnEl) { + var el = Ext.DomHelper.insertHtml(where, this.dom, html); + return returnEl ? Ext.get(el) : el + }, + set: function(o, useSet) { + var el = this.dom; + useSet = typeof useSet == "undefined" ? (el.setAttribute ? true : false) : useSet; + for (var attr in o) { + if (attr == "style" || typeof o[attr] == "function") { + continue + } + if (attr == "cls") { + el.className = o["cls"] + } else { + if (o.hasOwnProperty(attr)) { + if (useSet) { + el.setAttribute(attr, o[attr]) + } else { + el[attr] = o[attr] + } + } + } + } + if (o.style) { + Ext.DomHelper.applyStyles(el, o.style) + } + return this + }, + addKeyListener: function(key, fn, scope) { + var config; + if (typeof key != "object" || Ext.isArray(key)) { + config = { + key: key, + fn: fn, + scope: scope + } + } else { + config = { + key: key.key, + shift: key.shift, + ctrl: key.ctrl, + alt: key.alt, + fn: fn, + scope: scope + } + } + return new Ext.KeyMap(this, config) + }, + addKeyMap: function(config) { + return new Ext.KeyMap(this, config) + }, + isScrollable: function() { + var dom = this.dom; + return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth + }, + scrollTo: function(side, value, animate) { + var prop = side.toLowerCase() == "left" ? "scrollLeft" : "scrollTop"; + if (!animate || !A) { + this.dom[prop] = value + } else { + var to = prop == "scrollLeft" ? [value, this.dom.scrollTop] : [this.dom.scrollLeft, value]; + this.anim({ + scroll: { + "to": to + } + }, this.preanim(arguments, 2), "scroll") + } + return this + }, + scroll: function(direction, distance, animate) { + if (!this.isScrollable()) { + return + } + var el = this.dom; + var l = el.scrollLeft, + t = el.scrollTop; + var w = el.scrollWidth, + h = el.scrollHeight; + var cw = el.clientWidth, + ch = el.clientHeight; + direction = direction.toLowerCase(); + var scrolled = false; + var a = this.preanim(arguments, 2); + switch (direction) { + case "l": + case "left": + if (w - l > cw) { + var v = Math.min(l + distance, w - cw); + this.scrollTo("left", v, a); + scrolled = true + } + break; + case "r": + case "right": + if (l > 0) { + var v = Math.max(l - distance, 0); + this.scrollTo("left", v, a); + scrolled = true + } + break; + case "t": + case "top": + case "up": + if (t > 0) { + var v = Math.max(t - distance, 0); + this.scrollTo("top", v, a); + scrolled = true + } + break; + case "b": + case "bottom": + case "down": + if (h - t > ch) { + var v = Math.min(t + distance, h - ch); + this.scrollTo("top", v, a); + scrolled = true + } + break + } + return scrolled + }, + translatePoints: function(x, y) { + if (typeof x == "object" || Ext.isArray(x)) { + y = x[1]; + x = x[0] + } + var p = this.getStyle("position"); + var o = this.getXY(); + var l = parseInt(this.getStyle("left"), 10); + var t = parseInt(this.getStyle("top"), 10); + if (isNaN(l)) { + l = (p == "relative") ? 0 : this.dom.offsetLeft + } + if (isNaN(t)) { + t = (p == "relative") ? 0 : this.dom.offsetTop + } + return { + left: (x - o[0] + l), + top: (y - o[1] + t) + } + }, + getScroll: function() { + var d = this.dom, + doc = document; + if (d == doc || d == doc.body) { + var l, t; + if (Ext.isIE && Ext.isStrict) { + l = doc.documentElement.scrollLeft || (doc.body.scrollLeft || 0); + t = doc.documentElement.scrollTop || (doc.body.scrollTop || 0) + } else { + l = window.pageXOffset || (doc.body.scrollLeft || 0); + t = window.pageYOffset || (doc.body.scrollTop || 0) + } + return { + left: l, + top: t + } + } else { + return { + left: d.scrollLeft, + top: d.scrollTop + } + } + }, + getColor: function(attr, defaultValue, prefix) { + var v = this.getStyle(attr); + if (!v || v == "transparent" || v == "inherit") { + return defaultValue + } + var color = typeof prefix == "undefined" ? "#" : prefix; + if (v.substr(0, 4) == "rgb(") { + var rvs = v.slice(4, v.length - 1).split(","); + for (var i = 0; i < 3; i++) { + var h = parseInt(rvs[i]); + var s = h.toString(16); + if (h < 16) { + s = "0" + s + } + color += s + } + } else { + if (v.substr(0, 1) == "#") { + if (v.length == 4) { + for (var i = 1; i < 4; i++) { + var c = v.charAt(i); + color += c + c + } + } else { + if (v.length == 7) { + color += v.substr(1) + } + } + } + } + return (color.length > 5 ? color.toLowerCase() : defaultValue) + }, + boxWrap: function(cls) { + cls = cls || "x-box"; + var el = Ext.get(this.insertHtml("beforeBegin", String.format("
    " + El.boxMarkup + "
    ", cls))); + el.child("." + cls + "-mc").dom.appendChild(this.dom); + return el + }, + getAttributeNS: Ext.isIE ? function(ns, name) { + var d = this.dom; + var type = typeof d[ns + ":" + name]; + if (type != "undefined" && type != "unknown") { + return d[ns + ":" + name] + } + return d[name] + } : function(ns, name) { + var d = this.dom; + return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name) || d.getAttribute(name) || d[name] + }, + getTextWidth: function(text, min, max) { + return (Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width).constrain(min || 0, max || 1000000) + } + }; + var ep = El.prototype; + ep.on = ep.addListener; + ep.mon = ep.addListener; + ep.getUpdateManager = ep.getUpdater; + ep.un = ep.removeListener; + ep.autoBoxAdjust = true; + El.unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i; + El.addUnits = function(v, defaultUnit) { + if (v === "" || v == "auto") { + return v + } + if (v === undefined) { + return "" + } + if (typeof v == "number" || !El.unitPattern.test(v)) { + return v + (defaultUnit || "px") + } + return v + }; + El.boxMarkup = "
    "; + El.VISIBILITY = 1; + El.DISPLAY = 2; + El.borders = { + l: "border-left-width", + r: "border-right-width", + t: "border-top-width", + b: "border-bottom-width" + }; + El.paddings = { + l: "padding-left", + r: "padding-right", + t: "padding-top", + b: "padding-bottom" + }; + El.margins = { + l: "margin-left", + r: "margin-right", + t: "margin-top", + b: "margin-bottom" + }; + El.cache = {}; + var docEl; + El.get = function(el) { + var ex, elm, id; + if (!el) { + return null + } + if (typeof el == "string") { + if (!(elm = document.getElementById(el))) { + return null + } + if (ex = El.cache[el]) { + ex.dom = elm + } else { + ex = El.cache[el] = new El(elm) + } + return ex + } else { + if (el.tagName) { + if (!(id = el.id)) { + id = Ext.id(el) + } + if (ex = El.cache[id]) { + ex.dom = el + } else { + ex = El.cache[id] = new El(el) + } + return ex + } else { + if (el instanceof El) { + if (el != docEl) { + el.dom = document.getElementById(el.id) || el.dom; + El.cache[el.id] = el + } + return el + } else { + if (el.isComposite) { + return el + } else { + if (Ext.isArray(el)) { + return El.select(el) + } else { + if (el == document) { + if (!docEl) { + var f = function() {}; + f.prototype = El.prototype; + docEl = new f(); + docEl.dom = document + } + return docEl + } + } + } + } + } + } + return null + }; + El.uncache = function(el) { + for (var i = 0, a = arguments, len = a.length; i < len; i++) { + if (a[i]) { + delete El.cache[a[i].id || a[i]] + } + } + }; + El.garbageCollect = function() { + if (!Ext.enableGarbageCollector) { + clearInterval(El.collectorThread); + return + } + for (var eid in El.cache) { + var el = El.cache[eid], + d = el.dom; + if (!d || !d.parentNode || (!d.offsetParent && !document.getElementById(eid))) { + delete El.cache[eid]; + if (d && Ext.enableListenerCollection) { + E.purgeElement(d) + } + } + } + }; + El.collectorThreadId = setInterval(El.garbageCollect, 30000); + var flyFn = function() {}; + flyFn.prototype = El.prototype; + var _cls = new flyFn(); + El.Flyweight = function(dom) { + this.dom = dom + }; + El.Flyweight.prototype = _cls; + El.Flyweight.prototype.isFlyweight = true; + El._flyweights = {}; + El.fly = function(el, named) { + named = named || "_global"; + el = Ext.getDom(el); + if (!el) { + return null + } + if (!El._flyweights[named]) { + El._flyweights[named] = new El.Flyweight() + } + El._flyweights[named].dom = el; + return El._flyweights[named] + }; + Ext.get = El.get; + Ext.fly = El.fly; + var noBoxAdjust = Ext.isStrict ? { + select: 1 + } : { + input: 1, + select: 1, + textarea: 1 + }; + if (Ext.isIE || Ext.isGecko) { + noBoxAdjust["button"] = 1 + } + Ext.EventManager.on(window, "unload", function() { + delete El.cache; + delete El._flyweights + }) +})(); +Ext.enableFx = true; +Ext.Fx = { + slideIn: function(A, C) { + var B = this.getFxEl(); + C = C || {}; + B.queueFx(C, function() { + A = A || "t"; + this.fixDisplay(); + var D = this.getFxRestore(); + var I = this.getBox(); + this.setSize(I); + var F = this.fxWrap(D.pos, C, "hidden"); + var K = this.dom.style; + K.visibility = "visible"; + K.position = "absolute"; + var E = function() { + B.fxUnwrap(F, D.pos, C); + K.width = D.width; + K.height = D.height; + B.afterFx(C) + }; + var J, L = { + to: [I.x, I.y] + }, + H = { + to: I.width + }, + G = { + to: I.height + }; + switch (A.toLowerCase()) { + case "t": + F.setSize(I.width, 0); + K.left = K.bottom = "0"; + J = { + height: G + }; + break; + case "l": + F.setSize(0, I.height); + K.right = K.top = "0"; + J = { + width: H + }; + break; + case "r": + F.setSize(0, I.height); + F.setX(I.right); + K.left = K.top = "0"; + J = { + width: H, + points: L + }; + break; + case "b": + F.setSize(I.width, 0); + F.setY(I.bottom); + K.left = K.top = "0"; + J = { + height: G, + points: L + }; + break; + case "tl": + F.setSize(0, 0); + K.right = K.bottom = "0"; + J = { + width: H, + height: G + }; + break; + case "bl": + F.setSize(0, 0); + F.setY(I.y + I.height); + K.right = K.top = "0"; + J = { + width: H, + height: G, + points: L + }; + break; + case "br": + F.setSize(0, 0); + F.setXY([I.right, I.bottom]); + K.left = K.top = "0"; + J = { + width: H, + height: G, + points: L + }; + break; + case "tr": + F.setSize(0, 0); + F.setX(I.x + I.width); + K.left = K.bottom = "0"; + J = { + width: H, + height: G, + points: L + }; + break + } + this.dom.style.visibility = "visible"; + F.show(); + arguments.callee.anim = F.fxanim(J, C, "motion", 0.5, "easeOut", E) + }); + return this + }, + slideOut: function(A, C) { + var B = this.getFxEl(); + C = C || {}; + B.queueFx(C, function() { + A = A || "t"; + var I = this.getFxRestore(); + var D = this.getBox(); + this.setSize(D); + var G = this.fxWrap(I.pos, C, "visible"); + var F = this.dom.style; + F.visibility = "visible"; + F.position = "absolute"; + G.setSize(D); + var J = function() { + if (C.useDisplay) { + B.setDisplayed(false) + } else { + B.hide() + } + B.fxUnwrap(G, I.pos, C); + F.width = I.width; + F.height = I.height; + B.afterFx(C) + }; + var E, H = { + to: 0 + }; + switch (A.toLowerCase()) { + case "t": + F.left = F.bottom = "0"; + E = { + height: H + }; + break; + case "l": + F.right = F.top = "0"; + E = { + width: H + }; + break; + case "r": + F.left = F.top = "0"; + E = { + width: H, + points: { + to: [D.right, D.y] + } + }; + break; + case "b": + F.left = F.top = "0"; + E = { + height: H, + points: { + to: [D.x, D.bottom] + } + }; + break; + case "tl": + F.right = F.bottom = "0"; + E = { + width: H, + height: H + }; + break; + case "bl": + F.right = F.top = "0"; + E = { + width: H, + height: H, + points: { + to: [D.x, D.bottom] + } + }; + break; + case "br": + F.left = F.top = "0"; + E = { + width: H, + height: H, + points: { + to: [D.x + D.width, D.bottom] + } + }; + break; + case "tr": + F.left = F.bottom = "0"; + E = { + width: H, + height: H, + points: { + to: [D.right, D.y] + } + }; + break + } + arguments.callee.anim = G.fxanim(E, C, "motion", 0.5, "easeOut", J) + }); + return this + }, + puff: function(B) { + var A = this.getFxEl(); + B = B || {}; + A.queueFx(B, function() { + this.clearOpacity(); + this.show(); + var F = this.getFxRestore(); + var D = this.dom.style; + var G = function() { + if (B.useDisplay) { + A.setDisplayed(false) + } else { + A.hide() + } + A.clearOpacity(); + A.setPositioning(F.pos); + D.width = F.width; + D.height = F.height; + D.fontSize = ""; + A.afterFx(B) + }; + var E = this.getWidth(); + var C = this.getHeight(); + arguments.callee.anim = this.fxanim({ + width: { + to: this.adjustWidth(E * 2) + }, + height: { + to: this.adjustHeight(C * 2) + }, + points: { + by: [-(E * 0.5), -(C * 0.5)] + }, + opacity: { + to: 0 + }, + fontSize: { + to: 200, + unit: "%" + } + }, B, "motion", 0.5, "easeOut", G) + }); + return this + }, + switchOff: function(B) { + var A = this.getFxEl(); + B = B || {}; + A.queueFx(B, function() { + this.clearOpacity(); + this.clip(); + var D = this.getFxRestore(); + var C = this.dom.style; + var E = function() { + if (B.useDisplay) { + A.setDisplayed(false) + } else { + A.hide() + } + A.clearOpacity(); + A.setPositioning(D.pos); + C.width = D.width; + C.height = D.height; + A.afterFx(B) + }; + this.fxanim({ + opacity: { + to: 0.3 + } + }, null, null, 0.1, null, function() { + this.clearOpacity(); + (function() { + this.fxanim({ + height: { + to: 1 + }, + points: { + by: [0, this.getHeight() * 0.5] + } + }, B, "motion", 0.3, "easeIn", E) + }).defer(100, this) + }) + }); + return this + }, + highlight: function(A, C) { + var B = this.getFxEl(); + C = C || {}; + B.queueFx(C, function() { + A = A || "ffff9c"; + var D = C.attr || "backgroundColor"; + this.clearOpacity(); + this.show(); + var G = this.getColor(D); + var H = this.dom.style[D]; + var F = (C.endColor || G) || "ffffff"; + var I = function() { + B.dom.style[D] = H; + B.afterFx(C) + }; + var E = {}; + E[D] = { + from: A, + to: F + }; + arguments.callee.anim = this.fxanim(E, C, "color", 1, "easeIn", I) + }); + return this + }, + frame: function(A, C, D) { + var B = this.getFxEl(); + D = D || {}; + B.queueFx(D, function() { + A = A || "#C3DAF9"; + if (A.length == 6) { + A = "#" + A + } + C = C || 1; + var G = D.duration || 1; + this.show(); + var E = this.getBox(); + var F = function() { + var H = Ext.getBody().createChild({ + style: { + visbility: "hidden", + position: "absolute", + "z-index": "35000", + border: "0px solid " + A + } + }); + var I = Ext.isBorderBox ? 2 : 1; + H.animate({ + top: { + from: E.y, + to: E.y - 20 + }, + left: { + from: E.x, + to: E.x - 20 + }, + borderWidth: { + from: 0, + to: 10 + }, + opacity: { + from: 1, + to: 0 + }, + height: { + from: E.height, + to: (E.height + (20 * I)) + }, + width: { + from: E.width, + to: (E.width + (20 * I)) + } + }, G, function() { + H.remove(); + if (--C > 0) { + F() + } else { + B.afterFx(D) + } + }) + }; + F.call(this) + }); + return this + }, + pause: function(C) { + var A = this.getFxEl(); + var B = {}; + A.queueFx(B, function() { + setTimeout(function() { + A.afterFx(B) + }, C * 1000) + }); + return this + }, + fadeIn: function(B) { + var A = this.getFxEl(); + B = B || {}; + A.queueFx(B, function() { + this.setOpacity(0); + this.fixDisplay(); + this.dom.style.visibility = "visible"; + var C = B.endOpacity || 1; + arguments.callee.anim = this.fxanim({ + opacity: { + to: C + } + }, B, null, 0.5, "easeOut", function() { + if (C == 1) { + this.clearOpacity() + } + A.afterFx(B) + }) + }); + return this + }, + fadeOut: function(B) { + var A = this.getFxEl(); + B = B || {}; + A.queueFx(B, function() { + arguments.callee.anim = this.fxanim({ + opacity: { + to: B.endOpacity || 0 + } + }, B, null, 0.5, "easeOut", function() { + if (this.visibilityMode == Ext.Element.DISPLAY || B.useDisplay) { + this.dom.style.display = "none" + } else { + this.dom.style.visibility = "hidden" + } + this.clearOpacity(); + A.afterFx(B) + }) + }); + return this + }, + scale: function(A, B, C) { + this.shift(Ext.apply({}, C, { + width: A, + height: B + })); + return this + }, + shift: function(B) { + var A = this.getFxEl(); + B = B || {}; + A.queueFx(B, function() { + var E = {}, + D = B.width, + F = B.height, + C = B.x, + H = B.y, + G = B.opacity; + if (D !== undefined) { + E.width = { + to: this.adjustWidth(D) + } + } + if (F !== undefined) { + E.height = { + to: this.adjustHeight(F) + } + } + if (C !== undefined || H !== undefined) { + E.points = { + to: [C !== undefined ? C : this.getX(), H !== undefined ? H : this.getY()] + } + } + if (G !== undefined) { + E.opacity = { + to: G + } + } + if (B.xy !== undefined) { + E.points = { + to: B.xy + } + } + arguments.callee.anim = this.fxanim(E, B, "motion", 0.35, "easeOut", function() { + A.afterFx(B) + }) + }); + return this + }, + ghost: function(A, C) { + var B = this.getFxEl(); + C = C || {}; + B.queueFx(C, function() { + A = A || "b"; + var H = this.getFxRestore(); + var E = this.getWidth(), + G = this.getHeight(); + var F = this.dom.style; + var J = function() { + if (C.useDisplay) { + B.setDisplayed(false) + } else { + B.hide() + } + B.clearOpacity(); + B.setPositioning(H.pos); + F.width = H.width; + F.height = H.height; + B.afterFx(C) + }; + var D = { + opacity: { + to: 0 + }, + points: {} + }, + I = D.points; + switch (A.toLowerCase()) { + case "t": + I.by = [0, -G]; + break; + case "l": + I.by = [-E, 0]; + break; + case "r": + I.by = [E, 0]; + break; + case "b": + I.by = [0, G]; + break; + case "tl": + I.by = [-E, -G]; + break; + case "bl": + I.by = [-E, G]; + break; + case "br": + I.by = [E, G]; + break; + case "tr": + I.by = [E, -G]; + break + } + arguments.callee.anim = this.fxanim(D, C, "motion", 0.5, "easeOut", J) + }); + return this + }, + syncFx: function() { + this.fxDefaults = Ext.apply(this.fxDefaults || {}, { + block: false, + concurrent: true, + stopFx: false + }); + return this + }, + sequenceFx: function() { + this.fxDefaults = Ext.apply(this.fxDefaults || {}, { + block: false, + concurrent: false, + stopFx: false + }); + return this + }, + nextFx: function() { + var A = this.fxQueue[0]; + if (A) { + A.call(this) + } + }, + hasActiveFx: function() { + return this.fxQueue && this.fxQueue[0] + }, + stopFx: function() { + if (this.hasActiveFx()) { + var A = this.fxQueue[0]; + if (A && A.anim && A.anim.isAnimated()) { + this.fxQueue = [A]; + A.anim.stop(true) + } + } + return this + }, + beforeFx: function(A) { + if (this.hasActiveFx() && !A.concurrent) { + if (A.stopFx) { + this.stopFx(); + return true + } + return false + } + return true + }, + hasFxBlock: function() { + var A = this.fxQueue; + return A && A[0] && A[0].block + }, + queueFx: function(C, A) { + if (!this.fxQueue) { + this.fxQueue = [] + } + if (!this.hasFxBlock()) { + Ext.applyIf(C, this.fxDefaults); + if (!C.concurrent) { + var B = this.beforeFx(C); + A.block = C.block; + this.fxQueue.push(A); + if (B) { + this.nextFx() + } + } else { + A.call(this) + } + } + return this + }, + fxWrap: function(F, D, C) { + var B; + if (!D.wrap || !(B = Ext.get(D.wrap))) { + var A; + if (D.fixPosition) { + A = this.getXY() + } + var E = document.createElement("div"); + E.style.visibility = C; + B = Ext.get(this.dom.parentNode.insertBefore(E, this.dom)); + B.setPositioning(F); + if (B.getStyle("position") == "static") { + B.position("relative") + } + this.clearPositioning("auto"); + B.clip(); + B.dom.appendChild(this.dom); + if (A) { + B.setXY(A) + } + } + return B + }, + fxUnwrap: function(A, C, B) { + this.clearPositioning(); + this.setPositioning(C); + if (!B.wrap) { + A.dom.parentNode.insertBefore(this.dom, A.dom); + A.remove() + } + }, + getFxRestore: function() { + var A = this.dom.style; + return { + pos: this.getPositioning(), + width: A.width, + height: A.height + } + }, + afterFx: function(A) { + if (A.afterStyle) { + this.applyStyles(A.afterStyle) + } + if (A.afterCls) { + this.addClass(A.afterCls) + } + if (A.remove === true) { + this.remove() + } + Ext.callback(A.callback, A.scope, [this]); + if (!A.concurrent) { + this.fxQueue.shift(); + this.nextFx() + } + }, + getFxEl: function() { + return Ext.get(this.dom) + }, + fxanim: function(D, E, B, F, C, A) { + B = B || "run"; + E = E || {}; + var G = Ext.lib.Anim[B](this.dom, D, (E.duration || F) || 0.35, (E.easing || C) || "easeOut", function() { + Ext.callback(A, this) + }, this); + E.anim = G; + return G + } +}; +Ext.Fx.resize = Ext.Fx.scale; +Ext.apply(Ext.Element.prototype, Ext.Fx); +Ext.CompositeElement = function(A) { + this.elements = []; + this.addElements(A) +}; +Ext.CompositeElement.prototype = { + isComposite: true, + addElements: function(E) { + if (!E) { + return this + } + if (typeof E == "string") { + E = Ext.Element.selectorFunction(E) + } + var D = this.elements; + var B = D.length - 1; + for (var C = 0, A = E.length; C < A; C++) { + D[++B] = Ext.get(E[C]) + } + return this + }, + fill: function(A) { + this.elements = []; + this.add(A); + return this + }, + filter: function(A) { + var B = []; + this.each(function(C) { + if (C.is(A)) { + B[B.length] = C.dom + } + }); + this.fill(B); + return this + }, + invoke: function(E, B) { + var D = this.elements; + for (var C = 0, A = D.length; C < A; C++) { + Ext.Element.prototype[E].apply(D[C], B) + } + return this + }, + add: function(A) { + if (typeof A == "string") { + this.addElements(Ext.Element.selectorFunction(A)) + } else { + if (A.length !== undefined) { + this.addElements(A) + } else { + this.addElements([A]) + } + } + return this + }, + each: function(E, D) { + var C = this.elements; + for (var B = 0, A = C.length; B < A; B++) { + if (E.call(D || C[B], C[B], this, B) === false) { + break + } + } + return this + }, + item: function(A) { + return this.elements[A] || null + }, + first: function() { + return this.item(0) + }, + last: function() { + return this.item(this.elements.length - 1) + }, + getCount: function() { + return this.elements.length + }, + contains: function(A) { + return this.indexOf(A) !== -1 + }, + indexOf: function(A) { + return this.elements.indexOf(Ext.get(A)) + }, + removeElement: function(D, F) { + if (Ext.isArray(D)) { + for (var C = 0, A = D.length; C < A; C++) { + this.removeElement(D[C]) + } + return this + } + var B = typeof D == "number" ? D : this.indexOf(D); + if (B !== -1 && this.elements[B]) { + if (F) { + var E = this.elements[B]; + if (E.dom) { + E.remove() + } else { + Ext.removeNode(E) + } + } + this.elements.splice(B, 1) + } + return this + }, + replaceElement: function(D, C, A) { + var B = typeof D == "number" ? D : this.indexOf(D); + if (B !== -1) { + if (A) { + this.elements[B].replaceWith(C) + } else { + this.elements.splice(B, 1, Ext.get(C)) + } + } + return this + }, + clear: function() { + this.elements = [] + } +}; +(function() { + Ext.CompositeElement.createCall = function(B, C) { + if (!B[C]) { + B[C] = function() { + return this.invoke(C, arguments) + } + } + }; + for (var A in Ext.Element.prototype) { + if (typeof Ext.Element.prototype[A] == "function") { + Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, A) + } + } +})(); +Ext.CompositeElementLite = function(A) { + Ext.CompositeElementLite.superclass.constructor.call(this, A); + this.el = new Ext.Element.Flyweight() +}; +Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, { + addElements: function(E) { + if (E) { + if (Ext.isArray(E)) { + this.elements = this.elements.concat(E) + } else { + var D = this.elements; + var B = D.length - 1; + for (var C = 0, A = E.length; C < A; C++) { + D[++B] = E[C] + } + } + } + return this + }, + invoke: function(F, B) { + var D = this.elements; + var E = this.el; + for (var C = 0, A = D.length; C < A; C++) { + E.dom = D[C]; + Ext.Element.prototype[F].apply(E, B) + } + return this + }, + item: function(A) { + if (!this.elements[A]) { + return null + } + this.el.dom = this.elements[A]; + return this.el + }, + addListener: function(B, G, F, E) { + var D = this.elements; + for (var C = 0, A = D.length; C < A; C++) { + Ext.EventManager.on(D[C], B, G, F || D[C], E) + } + return this + }, + each: function(F, E) { + var C = this.elements; + var D = this.el; + for (var B = 0, A = C.length; B < A; B++) { + D.dom = C[B]; + if (F.call(E || D, D, this, B) === false) { + break + } + } + return this + }, + indexOf: function(A) { + return this.elements.indexOf(Ext.getDom(A)) + }, + replaceElement: function(D, C, A) { + var B = typeof D == "number" ? D : this.indexOf(D); + if (B !== -1) { + C = Ext.getDom(C); + if (A) { + var E = this.elements[B]; + E.parentNode.insertBefore(C, E); + Ext.removeNode(E) + } + this.elements.splice(B, 1, C) + } + return this + } +}); +Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener; +if (Ext.DomQuery) { + Ext.Element.selectorFunction = Ext.DomQuery.select +} +Ext.Element.select = function(A, D, B) { + var C; + if (typeof A == "string") { + C = Ext.Element.selectorFunction(A, B) + } else { + if (A.length !== undefined) { + C = A + } else { + throw "Invalid selector" + } + } + if (D === true) { + return new Ext.CompositeElement(C) + } else { + return new Ext.CompositeElementLite(C) + } +}; +Ext.select = Ext.Element.select; +Ext.data.Connection = function(A) { + Ext.apply(this, A); + this.addEvents("beforerequest", "requestcomplete", "requestexception"); + Ext.data.Connection.superclass.constructor.call(this) +}; +Ext.extend(Ext.data.Connection, Ext.util.Observable, { + timeout: 30000, + autoAbort: false, + disableCaching: true, + request: function(E) { + if (this.fireEvent("beforerequest", this, E) !== false) { + var C = E.params; + if (typeof C == "function") { + C = C.call(E.scope || window, E) + } + if (typeof C == "object") { + C = Ext.urlEncode(C) + } + if (this.extraParams) { + var G = Ext.urlEncode(this.extraParams); + C = C ? (C + "&" + G) : G + } + var B = E.url || this.url; + if (typeof B == "function") { + B = B.call(E.scope || window, E) + } + if (E.form) { + var D = Ext.getDom(E.form); + B = B || D.action; + var I = D.getAttribute("enctype"); + if (E.isUpload || (I && I.toLowerCase() == "multipart/form-data")) { + return this.doFormUpload(E, C, B) + } + var H = Ext.lib.Ajax.serializeForm(D); + C = C ? (C + "&" + H) : H + } + var J = E.headers; + if (this.defaultHeaders) { + J = Ext.apply(J || {}, this.defaultHeaders); + if (!E.headers) { + E.headers = J + } + } + var F = { + success: this.handleResponse, + failure: this.handleFailure, + scope: this, + argument: { + options: E + }, + timeout: E.timeout || this.timeout + }; + var A = E.method || this.method || (C ? "POST" : "GET"); + if (A == "GET" && (this.disableCaching && E.disableCaching !== false) || E.disableCaching === true) { + B += (B.indexOf("?") != -1 ? "&" : "?") + "_dc=" + (new Date().getTime()) + } + if (typeof E.autoAbort == "boolean") { + if (E.autoAbort) { + this.abort() + } + } else { + if (this.autoAbort !== false) { + this.abort() + } + } + if ((A == "GET" && C) || E.xmlData || E.jsonData) { + B += (B.indexOf("?") != -1 ? "&" : "?") + C; + C = "" + } + this.transId = Ext.lib.Ajax.request(A, B, F, C, E); + return this.transId + } else { + Ext.callback(E.callback, E.scope, [E, null, null]); + return null + } + }, + isLoading: function(A) { + if (A) { + return Ext.lib.Ajax.isCallInProgress(A) + } else { + return this.transId ? true : false + } + }, + abort: function(A) { + if (A || this.isLoading()) { + Ext.lib.Ajax.abort(A || this.transId) + } + }, + handleResponse: function(A) { + this.transId = false; + var B = A.argument.options; + A.argument = B ? B.argument : null; + this.fireEvent("requestcomplete", this, A, B); + Ext.callback(B.success, B.scope, [A, B]); + Ext.callback(B.callback, B.scope, [B, true, A]) + }, + handleFailure: function(A, C) { + this.transId = false; + var B = A.argument.options; + A.argument = B ? B.argument : null; + this.fireEvent("requestexception", this, A, B, C); + Ext.callback(B.failure, B.scope, [A, B]); + Ext.callback(B.callback, B.scope, [B, false, A]) + }, + doFormUpload: function(E, A, B) { + var C = Ext.id(); + var F = document.createElement("iframe"); + F.id = C; + F.name = C; + F.className = "x-hidden"; + if (Ext.isIE) { + F.src = Ext.SSL_SECURE_URL + } + document.body.appendChild(F); + if (Ext.isIE) { + document.frames[C].name = C + } + var D = Ext.getDom(E.form); + D.target = C; + D.method = "POST"; + D.enctype = D.encoding = "multipart/form-data"; + if (B) { + D.action = B + } + var L, J; + if (A) { + L = []; + A = Ext.urlDecode(A, false); + for (var H in A) { + if (A.hasOwnProperty(H)) { + J = document.createElement("input"); + J.type = "hidden"; + J.name = H; + J.value = A[H]; + D.appendChild(J); + L.push(J) + } + } + } + + function G() { + var M = { + responseText: "", + responseXML: null + }; + M.argument = E ? E.argument : null; + try { + var O; + if (Ext.isIE) { + O = F.contentWindow.document + } else { + O = (F.contentDocument || window.frames[C].document) + } + if (O && O.body) { + M.responseText = O.body.innerHTML + } + if (O && O.XMLDocument) { + M.responseXML = O.XMLDocument + } else { + M.responseXML = O + } + } catch (N) {} + Ext.EventManager.removeListener(F, "load", G, this); + this.fireEvent("requestcomplete", this, M, E); + Ext.callback(E.success, E.scope, [M, E]); + Ext.callback(E.callback, E.scope, [E, true, M]); + setTimeout(function() { + Ext.removeNode(F) + }, 100) + } + Ext.EventManager.on(F, "load", G, this); + D.submit(); + if (L) { + for (var I = 0, K = L.length; I < K; I++) { + Ext.removeNode(L[I]) + } + } + } +}); +Ext.Ajax = new Ext.data.Connection({ + autoAbort: false, + serializeForm: function(A) { + return Ext.lib.Ajax.serializeForm(A) + } +}); +Ext.Updater = function(B, A) { + B = Ext.get(B); + if (!A && B.updateManager) { + return B.updateManager + } + this.el = B; + this.defaultUrl = null; + this.addEvents("beforeupdate", "update", "failure"); + var C = Ext.Updater.defaults; + this.sslBlankUrl = C.sslBlankUrl; + this.disableCaching = C.disableCaching; + this.indicatorText = C.indicatorText; + this.showLoadIndicator = C.showLoadIndicator; + this.timeout = C.timeout; + this.loadScripts = C.loadScripts; + this.transaction = null; + this.autoRefreshProcId = null; + this.refreshDelegate = this.refresh.createDelegate(this); + this.updateDelegate = this.update.createDelegate(this); + this.formUpdateDelegate = this.formUpdate.createDelegate(this); + if (!this.renderer) { + this.renderer = new Ext.Updater.BasicRenderer() + } + Ext.Updater.superclass.constructor.call(this) +}; +Ext.extend(Ext.Updater, Ext.util.Observable, { + getEl: function() { + return this.el + }, + update: function(B, F, H, D) { + if (this.fireEvent("beforeupdate", this.el, B, F) !== false) { + var G = this.method, + A, C; + if (typeof B == "object") { + A = B; + B = A.url; + F = F || A.params; + H = H || A.callback; + D = D || A.discardUrl; + C = A.scope; + if (typeof A.method != "undefined") { + G = A.method + } + if (typeof A.nocache != "undefined") { + this.disableCaching = A.nocache + } + if (typeof A.text != "undefined") { + this.indicatorText = "
    " + A.text + "
    " + } + if (typeof A.scripts != "undefined") { + this.loadScripts = A.scripts + } + if (typeof A.timeout != "undefined") { + this.timeout = A.timeout + } + } + this.showLoading(); + if (!D) { + this.defaultUrl = B + } + if (typeof B == "function") { + B = B.call(this) + } + G = G || (F ? "POST" : "GET"); + if (G == "GET") { + B = this.prepareUrl(B) + } + var E = Ext.apply(A || {}, { + url: B, + params: (typeof F == "function" && C) ? F.createDelegate(C) : F, + success: this.processSuccess, + failure: this.processFailure, + scope: this, + callback: undefined, + timeout: (this.timeout * 1000), + argument: { + "options": A, + "url": B, + "form": null, + "callback": H, + "scope": C || window, + "params": F + } + }); + this.transaction = Ext.Ajax.request(E) + } + }, + formUpdate: function(C, A, B, D) { + if (this.fireEvent("beforeupdate", this.el, C, A) !== false) { + if (typeof A == "function") { + A = A.call(this) + } + C = Ext.getDom(C); + this.transaction = Ext.Ajax.request({ + form: C, + url: A, + success: this.processSuccess, + failure: this.processFailure, + scope: this, + timeout: (this.timeout * 1000), + argument: { + "url": A, + "form": C, + "callback": D, + "reset": B + } + }); + this.showLoading.defer(1, this) + } + }, + refresh: function(A) { + if (this.defaultUrl == null) { + return + } + this.update(this.defaultUrl, null, A, true) + }, + startAutoRefresh: function(B, C, D, E, A) { + if (A) { + this.update(C || this.defaultUrl, D, E, true) + } + if (this.autoRefreshProcId) { + clearInterval(this.autoRefreshProcId) + } + this.autoRefreshProcId = setInterval(this.update.createDelegate(this, [C || this.defaultUrl, D, E, true]), B * 1000) + }, + stopAutoRefresh: function() { + if (this.autoRefreshProcId) { + clearInterval(this.autoRefreshProcId); + delete this.autoRefreshProcId + } + }, + isAutoRefreshing: function() { + return this.autoRefreshProcId ? true : false + }, + showLoading: function() { + if (this.showLoadIndicator) { + this.el.update(this.indicatorText) + } + }, + prepareUrl: function(B) { + if (this.disableCaching) { + var A = "_dc=" + (new Date().getTime()); + if (B.indexOf("?") !== -1) { + B += "&" + A + } else { + B += "?" + A + } + } + return B + }, + processSuccess: function(A) { + this.transaction = null; + if (A.argument.form && A.argument.reset) { + try { + A.argument.form.reset() + } catch (B) {} + } + if (this.loadScripts) { + this.renderer.render(this.el, A, this, this.updateComplete.createDelegate(this, [A])) + } else { + this.renderer.render(this.el, A, this); + this.updateComplete(A) + } + }, + updateComplete: function(A) { + this.fireEvent("update", this.el, A); + if (typeof A.argument.callback == "function") { + A.argument.callback.call(A.argument.scope, this.el, true, A, A.argument.options) + } + }, + processFailure: function(A) { + this.transaction = null; + this.fireEvent("failure", this.el, A); + if (typeof A.argument.callback == "function") { + A.argument.callback.call(A.argument.scope, this.el, false, A, A.argument.options) + } + }, + setRenderer: function(A) { + this.renderer = A + }, + getRenderer: function() { + return this.renderer + }, + setDefaultUrl: function(A) { + this.defaultUrl = A + }, + abort: function() { + if (this.transaction) { + Ext.Ajax.abort(this.transaction) + } + }, + isUpdating: function() { + if (this.transaction) { + return Ext.Ajax.isLoading(this.transaction) + } + return false + } +}); +Ext.Updater.defaults = { + timeout: 30, + loadScripts: false, + sslBlankUrl: (Ext.SSL_SECURE_URL || "javascript:false"), + disableCaching: false, + showLoadIndicator: true, + indicatorText: "
    Loading...
    " +}; +Ext.Updater.updateElement = function(D, C, E, B) { + var A = Ext.get(D).getUpdater(); + Ext.apply(A, B); + A.update(C, E, B ? B.callback : null) +}; +Ext.Updater.update = Ext.Updater.updateElement; +Ext.Updater.BasicRenderer = function() {}; +Ext.Updater.BasicRenderer.prototype = { + render: function(C, A, B, D) { + C.update(A.responseText, B.loadScripts, D) + } +}; +Ext.UpdateManager = Ext.Updater; +Date.parseFunctions = { + count: 0 +}; +Date.parseRegexes = []; +Date.formatFunctions = { + count: 0 +}; +Date.prototype.dateFormat = function(B) { + if (Date.formatFunctions[B] == null) { + Date.createNewFormat(B) + } + var A = Date.formatFunctions[B]; + return this[A]() +}; +Date.prototype.format = Date.prototype.dateFormat; +Date.createNewFormat = function(format) { + var funcName = "format" + Date.formatFunctions.count++; + Date.formatFunctions[format] = funcName; + var code = "Date.prototype." + funcName + " = function(){return "; + var special = false; + var ch = ""; + for (var i = 0; i < format.length; ++i) { + ch = format.charAt(i); + if (!special && ch == "\\") { + special = true + } else { + if (special) { + special = false; + code += "'" + String.escape(ch) + "' + " + } else { + code += Date.getFormatCode(ch) + } + } + } + eval(code.substring(0, code.length - 3) + ";}") +}; +Date.getFormatCode = function(D) { + switch (D) { + case "d": + return "String.leftPad(this.getDate(), 2, '0') + "; + case "D": + return "Date.getShortDayName(this.getDay()) + "; + case "j": + return "this.getDate() + "; + case "l": + return "Date.dayNames[this.getDay()] + "; + case "N": + return "(this.getDay() ? this.getDay() : 7) + "; + case "S": + return "this.getSuffix() + "; + case "w": + return "this.getDay() + "; + case "z": + return "this.getDayOfYear() + "; + case "W": + return "String.leftPad(this.getWeekOfYear(), 2, '0') + "; + case "F": + return "Date.monthNames[this.getMonth()] + "; + case "m": + return "String.leftPad(this.getMonth() + 1, 2, '0') + "; + case "M": + return "Date.getShortMonthName(this.getMonth()) + "; + case "n": + return "(this.getMonth() + 1) + "; + case "t": + return "this.getDaysInMonth() + "; + case "L": + return "(this.isLeapYear() ? 1 : 0) + "; + case "o": + return "(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0))) + "; + case "Y": + return "this.getFullYear() + "; + case "y": + return "('' + this.getFullYear()).substring(2, 4) + "; + case "a": + return "(this.getHours() < 12 ? 'am' : 'pm') + "; + case "A": + return "(this.getHours() < 12 ? 'AM' : 'PM') + "; + case "g": + return "((this.getHours() % 12) ? this.getHours() % 12 : 12) + "; + case "G": + return "this.getHours() + "; + case "h": + return "String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0') + "; + case "H": + return "String.leftPad(this.getHours(), 2, '0') + "; + case "i": + return "String.leftPad(this.getMinutes(), 2, '0') + "; + case "s": + return "String.leftPad(this.getSeconds(), 2, '0') + "; + case "u": + return "String.leftPad(this.getMilliseconds(), 3, '0') + "; + case "O": + return "this.getGMTOffset() + "; + case "P": + return "this.getGMTOffset(true) + "; + case "T": + return "this.getTimezone() + "; + case "Z": + return "(this.getTimezoneOffset() * -60) + "; + case "c": + for (var F = Date.getFormatCode, G = "Y-m-dTH:i:sP", C = "", B = 0, A = G.length; B < A; ++B) { + var E = G.charAt(B); + C += E == "T" ? "'T' + " : F(E) + } + return C; + case "U": + return "Math.round(this.getTime() / 1000) + "; + default: + return "'" + String.escape(D) + "' + " + } +}; +Date.parseDate = function(A, C) { + if (Date.parseFunctions[C] == null) { + Date.createParser(C) + } + var B = Date.parseFunctions[C]; + return Date[B](A) +}; +Date.createParser = function(format) { + var funcName = "parse" + Date.parseFunctions.count++; + var regexNum = Date.parseRegexes.length; + var currentGroup = 1; + Date.parseFunctions[format] = funcName; + var code = "Date." + funcName + " = function(input){\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, ms = -1, o, z, u, v;\ninput = String(input);var d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = 1\nvar results = input.match(Date.parseRegexes[" + regexNum + "]);\nif (results && results.length > 0) {"; + var regex = ""; + var special = false; + var ch = ""; + for (var i = 0; i < format.length; ++i) { + ch = format.charAt(i); + if (!special && ch == "\\") { + special = true + } else { + if (special) { + special = false; + regex += String.escape(ch) + } else { + var obj = Date.formatCodeToRegex(ch, currentGroup); + currentGroup += obj.g; + regex += obj.s; + if (obj.g && obj.c) { + code += obj.c + } + } + } + } + code += "if (u)\n{v = new Date(u * 1000);}else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0)\n{v = new Date(y, m, d, h, i, s, ms);}\nelse if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{v = new Date(y, m, d, h, i, s);}\nelse if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{v = new Date(y, m, d, h, i);}\nelse if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n{v = new Date(y, m, d, h);}\nelse if (y >= 0 && m >= 0 && d > 0)\n{v = new Date(y, m, d);}\nelse if (y >= 0 && m >= 0)\n{v = new Date(y, m);}\nelse if (y >= 0)\n{v = new Date(y);}\n}return (v && (z || o))?\n (z ? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n;}"; + Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$", "i"); + eval(code) +}; +Date.formatCodeToRegex = function(G, F) { + switch (G) { + case "d": + return { + g: 1, c: "d = parseInt(results[" + F + "], 10);\n", s: "(\\d{2})" + }; + case "D": + for (var C = [], E = 0; E < 7; C.push(Date.getShortDayName(E)), ++E) {} + return { + g: 0, c: null, s: "(?:" + C.join("|") + ")" + }; + case "j": + return { + g: 1, c: "d = parseInt(results[" + F + "], 10);\n", s: "(\\d{1,2})" + }; + case "l": + return { + g: 0, c: null, s: "(?:" + Date.dayNames.join("|") + ")" + }; + case "N": + return { + g: 0, c: null, s: "[1-7]" + }; + case "S": + return { + g: 0, c: null, s: "(?:st|nd|rd|th)" + }; + case "w": + return { + g: 0, c: null, s: "[0-6]" + }; + case "z": + return { + g: 0, c: null, s: "(?:\\d{1,3}" + }; + case "W": + return { + g: 0, c: null, s: "(?:\\d{2})" + }; + case "F": + return { + g: 1, c: "m = parseInt(Date.getMonthNumber(results[" + F + "]), 10);\n", s: "(" + Date.monthNames.join("|") + ")" + }; + case "m": + return { + g: 1, c: "m = parseInt(results[" + F + "], 10) - 1;\n", s: "(\\d{2})" + }; + case "M": + for (var C = [], E = 0; E < 12; C.push(Date.getShortMonthName(E)), ++E) {} + return { + g: 1, c: "m = parseInt(Date.getMonthNumber(results[" + F + "]), 10);\n", s: "(" + C.join("|") + ")" + }; + case "n": + return { + g: 1, c: "m = parseInt(results[" + F + "], 10) - 1;\n", s: "(\\d{1,2})" + }; + case "t": + return { + g: 0, c: null, s: "(?:\\d{2})" + }; + case "L": + return { + g: 0, c: null, s: "(?:1|0)" + }; + case "o": + case "Y": + return { + g: 1, c: "y = parseInt(results[" + F + "], 10);\n", s: "(\\d{4})" + }; + case "y": + return { + g: 1, c: "var ty = parseInt(results[" + F + "], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n", s: "(\\d{1,2})" + }; + case "a": + return { + g: 1, c: "if (results[" + F + "] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}", s: "(am|pm)" + }; + case "A": + return { + g: 1, c: "if (results[" + F + "] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}", s: "(AM|PM)" + }; + case "g": + case "G": + return { + g: 1, c: "h = parseInt(results[" + F + "], 10);\n", s: "(\\d{1,2})" + }; + case "h": + case "H": + return { + g: 1, c: "h = parseInt(results[" + F + "], 10);\n", s: "(\\d{2})" + }; + case "i": + return { + g: 1, c: "i = parseInt(results[" + F + "], 10);\n", s: "(\\d{2})" + }; + case "s": + return { + g: 1, c: "s = parseInt(results[" + F + "], 10);\n", s: "(\\d{2})" + }; + case "u": + return { + g: 1, c: "ms = parseInt(results[" + F + "], 10);\n", s: "(\\d{3})" + }; + case "O": + return { + g: 1, c: ["o = results[", F, "];\n", "var sn = o.substring(0,1);\n", "var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);\n", "var mn = o.substring(3,5) % 60;\n", "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n", " (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""), s: "([+-]\\d{4})" + }; + case "P": + return { + g: 1, c: ["o = results[", F, "];\n", "var sn = o.substring(0,1);\n", "var hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60);\n", "var mn = o.substring(4,6) % 60;\n", "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n", " (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""), s: "([+-]\\d{2}:\\d{2})" + }; + case "T": + return { + g: 0, c: null, s: "[A-Z]{1,4}" + }; + case "Z": + return { + g: 1, c: "z = results[" + F + "] * 1;\nz = (-43200 <= z && z <= 50400)? z : null;\n", s: "([+-]?\\d{1,5})" + }; + case "c": + var H = Date.formatCodeToRegex, + D = []; + var A = [H("Y", 1), H("m", 2), H("d", 3), H("h", 4), H("i", 5), H("s", 6), H("P", 7)]; + for (var E = 0, B = A.length; E < B; ++E) { + D.push(A[E].c) + } + return { + g: 1, c: D.join(""), s: A[0].s + "-" + A[1].s + "-" + A[2].s + "T" + A[3].s + ":" + A[4].s + ":" + A[5].s + A[6].s + }; + case "U": + return { + g: 1, c: "u = parseInt(results[" + F + "], 10);\n", s: "(-?\\d+)" + }; + default: + return { + g: 0, c: null, s: Ext.escapeRe(G) + } + } +}; +Date.prototype.getTimezone = function() { + return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, "$1$2").replace(/[^A-Z]/g, "") +}; +Date.prototype.getGMTOffset = function(A) { + return (this.getTimezoneOffset() > 0 ? "-" : "+") + String.leftPad(Math.abs(Math.floor(this.getTimezoneOffset() / 60)), 2, "0") + (A ? ":" : "") + String.leftPad(this.getTimezoneOffset() % 60, 2, "0") +}; +Date.prototype.getDayOfYear = function() { + var A = 0; + Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28; + for (var B = 0; B < this.getMonth(); ++B) { + A += Date.daysInMonth[B] + } + return A + this.getDate() - 1 +}; +Date.prototype.getWeekOfYear = function() { + var B = 86400000; + var C = 7 * B; + var D = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3) / B; + var A = Math.floor(D / 7); + var E = new Date(A * C).getUTCFullYear(); + return A - Math.floor(Date.UTC(E, 0, 7) / C) + 1 +}; +Date.prototype.isLeapYear = function() { + var A = this.getFullYear(); + return !!((A & 3) == 0 && (A % 100 || (A % 400 == 0 && A))) +}; +Date.prototype.getFirstDayOfMonth = function() { + var A = (this.getDay() - (this.getDate() - 1)) % 7; + return (A < 0) ? (A + 7) : A +}; +Date.prototype.getLastDayOfMonth = function() { + var A = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7; + return (A < 0) ? (A + 7) : A +}; +Date.prototype.getFirstDateOfMonth = function() { + return new Date(this.getFullYear(), this.getMonth(), 1) +}; +Date.prototype.getLastDateOfMonth = function() { + return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth()) +}; +Date.prototype.getDaysInMonth = function() { + Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28; + return Date.daysInMonth[this.getMonth()] +}; +Date.prototype.getSuffix = function() { + switch (this.getDate()) { + case 1: + case 21: + case 31: + return "st"; + case 2: + case 22: + return "nd"; + case 3: + case 23: + return "rd"; + default: + return "th" + } +}; +Date.daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +Date.monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; +Date.getShortMonthName = function(A) { + return Date.monthNames[A].substring(0, 3) +}; +Date.dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; +Date.getShortDayName = function(A) { + return Date.dayNames[A].substring(0, 3) +}; +Date.y2kYear = 50; +Date.monthNumbers = { + Jan: 0, + Feb: 1, + Mar: 2, + Apr: 3, + May: 4, + Jun: 5, + Jul: 6, + Aug: 7, + Sep: 8, + Oct: 9, + Nov: 10, + Dec: 11 +}; +Date.getMonthNumber = function(A) { + return Date.monthNumbers[A.substring(0, 1).toUpperCase() + A.substring(1, 3).toLowerCase()] +}; +Date.prototype.clone = function() { + return new Date(this.getTime()) +}; +Date.prototype.clearTime = function(A) { + if (A) { + return this.clone().clearTime() + } + this.setHours(0); + this.setMinutes(0); + this.setSeconds(0); + this.setMilliseconds(0); + return this +}; +if (Ext.isSafari) { + Date.brokenSetMonth = Date.prototype.setMonth; + Date.prototype.setMonth = function(A) { + if (A <= -1) { + var D = Math.ceil(-A); + var C = Math.ceil(D / 12); + var B = (D % 12) ? 12 - D % 12 : 0; + this.setFullYear(this.getFullYear() - C); + return Date.brokenSetMonth.call(this, B) + } else { + return Date.brokenSetMonth.apply(this, arguments) + } + } +} +Date.MILLI = "ms"; +Date.SECOND = "s"; +Date.MINUTE = "mi"; +Date.HOUR = "h"; +Date.DAY = "d"; +Date.MONTH = "mo"; +Date.YEAR = "y"; +Date.prototype.add = function(B, C) { + var D = this.clone(); + if (!B || C === 0) { + return D + } + switch (B.toLowerCase()) { + case Date.MILLI: + D.setMilliseconds(this.getMilliseconds() + C); + break; + case Date.SECOND: + D.setSeconds(this.getSeconds() + C); + break; + case Date.MINUTE: + D.setMinutes(this.getMinutes() + C); + break; + case Date.HOUR: + D.setHours(this.getHours() + C); + break; + case Date.DAY: + D.setDate(this.getDate() + C); + break; + case Date.MONTH: + var A = this.getDate(); + if (A > 28) { + A = Math.min(A, this.getFirstDateOfMonth().add("mo", C).getLastDateOfMonth().getDate()) + } + D.setDate(A); + D.setMonth(this.getMonth() + C); + break; + case Date.YEAR: + D.setFullYear(this.getFullYear() + C); + break + } + return D +}; +Date.prototype.between = function(C, A) { + var B = this.getTime(); + return C.getTime() <= B && B <= A.getTime() +}; +Ext.util.DelayedTask = function(E, D, A) { + var G = null, + F, B; + var C = function() { + var H = new Date().getTime(); + if (H - B >= F) { + clearInterval(G); + G = null; + E.apply(D, A || []) + } + }; + this.delay = function(I, K, J, H) { + if (G && I != F) { + this.cancel() + } + F = I; + B = new Date().getTime(); + E = K || E; + D = J || D; + A = H || A; + if (!G) { + G = setInterval(C, F) + } + }; + this.cancel = function() { + if (G) { + clearInterval(G); + G = null + } + } +}; +Ext.util.TaskRunner = function(E) { + E = E || 10; + var F = [], + A = []; + var B = 0; + var G = false; + var D = function() { + G = false; + clearInterval(B); + B = 0 + }; + var H = function() { + if (!G) { + G = true; + B = setInterval(I, E) + } + }; + var C = function(J) { + A.push(J); + if (J.onStop) { + J.onStop.apply(J.scope || J) + } + }; + var I = function() { + if (A.length > 0) { + for (var O = 0, K = A.length; O < K; O++) { + F.remove(A[O]) + } + A = []; + if (F.length < 1) { + D(); + return + } + } + var M = new Date().getTime(); + for (var O = 0, K = F.length; O < K; ++O) { + var N = F[O]; + var J = M - N.taskRunTime; + if (N.interval <= J) { + var L = N.run.apply(N.scope || N, N.args || [++N.taskRunCount]); + N.taskRunTime = M; + if (L === false || N.taskRunCount === N.repeat) { + C(N); + return + } + } + if (N.duration && N.duration <= (M - N.taskStartTime)) { + C(N) + } + } + }; + this.start = function(J) { + F.push(J); + J.taskStartTime = new Date().getTime(); + J.taskRunTime = 0; + J.taskRunCount = 0; + H(); + return J + }; + this.stop = function(J) { + C(J); + return J + }; + this.stopAll = function() { + D(); + for (var K = 0, J = F.length; K < J; K++) { + if (F[K].onStop) { + F[K].onStop() + } + } + F = []; + A = [] + } +}; +Ext.TaskMgr = new Ext.util.TaskRunner(); +Ext.util.MixedCollection = function(B, A) { + this.items = []; + this.map = {}; + this.keys = []; + this.length = 0; + this.addEvents("clear", "add", "replace", "remove", "sort"); + this.allowFunctions = B === true; + if (A) { + this.getKey = A + } + Ext.util.MixedCollection.superclass.constructor.call(this) +}; +Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, { + allowFunctions: false, + add: function(B, C) { + if (arguments.length == 1) { + C = arguments[0]; + B = this.getKey(C) + } + if (typeof B == "undefined" || B === null) { + this.length++; + this.items.push(C); + this.keys.push(null) + } else { + var A = this.map[B]; + if (A) { + return this.replace(B, C) + } + this.length++; + this.items.push(C); + this.map[B] = C; + this.keys.push(B) + } + this.fireEvent("add", this.length - 1, C, B); + return C + }, + getKey: function(A) { + return A.id + }, + replace: function(C, D) { + if (arguments.length == 1) { + D = arguments[0]; + C = this.getKey(D) + } + var A = this.item(C); + if (typeof C == "undefined" || C === null || typeof A == "undefined") { + return this.add(C, D) + } + var B = this.indexOfKey(C); + this.items[B] = D; + this.map[C] = D; + this.fireEvent("replace", C, A, D); + return D + }, + addAll: function(E) { + if (arguments.length > 1 || Ext.isArray(E)) { + var B = arguments.length > 1 ? arguments : E; + for (var D = 0, A = B.length; D < A; D++) { + this.add(B[D]) + } + } else { + for (var C in E) { + if (this.allowFunctions || typeof E[C] != "function") { + this.add(C, E[C]) + } + } + } + }, + each: function(E, D) { + var B = [].concat(this.items); + for (var C = 0, A = B.length; C < A; C++) { + if (E.call(D || B[C], B[C], C, A) === false) { + break + } + } + }, + eachKey: function(D, C) { + for (var B = 0, A = this.keys.length; B < A; B++) { + D.call(C || window, this.keys[B], this.items[B], B, A) + } + }, + find: function(D, C) { + for (var B = 0, A = this.items.length; B < A; B++) { + if (D.call(C || window, this.items[B], this.keys[B])) { + return this.items[B] + } + } + return null + }, + insert: function(A, B, C) { + if (arguments.length == 2) { + C = arguments[1]; + B = this.getKey(C) + } + if (A >= this.length) { + return this.add(B, C) + } + this.length++; + this.items.splice(A, 0, C); + if (typeof B != "undefined" && B != null) { + this.map[B] = C + } + this.keys.splice(A, 0, B); + this.fireEvent("add", A, C, B); + return C + }, + remove: function(A) { + return this.removeAt(this.indexOf(A)) + }, + removeAt: function(A) { + if (A < this.length && A >= 0) { + this.length--; + var C = this.items[A]; + this.items.splice(A, 1); + var B = this.keys[A]; + if (typeof B != "undefined") { + delete this.map[B] + } + this.keys.splice(A, 1); + this.fireEvent("remove", C, B); + return C + } + return false + }, + removeKey: function(A) { + return this.removeAt(this.indexOfKey(A)) + }, + getCount: function() { + return this.length + }, + indexOf: function(A) { + return this.items.indexOf(A) + }, + indexOfKey: function(A) { + return this.keys.indexOf(A) + }, + item: function(A) { + var B = typeof this.map[A] != "undefined" ? this.map[A] : this.items[A]; + return typeof B != "function" || this.allowFunctions ? B : null + }, + itemAt: function(A) { + return this.items[A] + }, + key: function(A) { + return this.map[A] + }, + contains: function(A) { + return this.indexOf(A) != -1 + }, + containsKey: function(A) { + return typeof this.map[A] != "undefined" + }, + clear: function() { + this.length = 0; + this.items = []; + this.keys = []; + this.map = {}; + this.fireEvent("clear") + }, + first: function() { + return this.items[0] + }, + last: function() { + return this.items[this.length - 1] + }, + _sort: function(I, A, H) { + var C = String(A).toUpperCase() == "DESC" ? -1 : 1; + H = H || function(K, J) { + return K - J + }; + var G = [], + B = this.keys, + F = this.items; + for (var D = 0, E = F.length; D < E; D++) { + G[G.length] = { + key: B[D], + value: F[D], + index: D + } + } + G.sort(function(K, J) { + var L = H(K[I], J[I]) * C; + if (L == 0) { + L = (K.index < J.index ? -1 : 1) + } + return L + }); + for (var D = 0, E = G.length; D < E; D++) { + F[D] = G[D].value; + B[D] = G[D].key + } + this.fireEvent("sort", this) + }, + sort: function(A, B) { + this._sort("value", A, B) + }, + keySort: function(A, B) { + this._sort("key", A, B || function(D, C) { + return String(D).toUpperCase() - String(C).toUpperCase() + }) + }, + getRange: function(E, A) { + var B = this.items; + if (B.length < 1) { + return [] + } + E = E || 0; + A = Math.min(typeof A == "undefined" ? this.length - 1 : A, this.length - 1); + var D = []; + if (E <= A) { + for (var C = E; C <= A; C++) { + D[D.length] = B[C] + } + } else { + for (var C = E; C >= A; C--) { + D[D.length] = B[C] + } + } + return D + }, + filter: function(C, B, D, A) { + if (Ext.isEmpty(B, false)) { + return this.clone() + } + B = this.createValueMatcher(B, D, A); + return this.filterBy(function(E) { + return E && B.test(E[C]) + }) + }, + filterBy: function(F, E) { + var G = new Ext.util.MixedCollection(); + G.getKey = this.getKey; + var B = this.keys, + D = this.items; + for (var C = 0, A = D.length; C < A; C++) { + if (F.call(E || this, D[C], B[C])) { + G.add(B[C], D[C]) + } + } + return G + }, + findIndex: function(C, B, E, D, A) { + if (Ext.isEmpty(B, false)) { + return -1 + } + B = this.createValueMatcher(B, D, A); + return this.findIndexBy(function(F) { + return F && B.test(F[C]) + }, null, E) + }, + findIndexBy: function(F, E, G) { + var B = this.keys, + D = this.items; + for (var C = (G || 0), A = D.length; C < A; C++) { + if (F.call(E || this, D[C], B[C])) { + return C + } + } + if (typeof G == "number" && G > 0) { + for (var C = 0; C < G; C++) { + if (F.call(E || this, D[C], B[C])) { + return C + } + } + } + return -1 + }, + createValueMatcher: function(B, C, A) { + if (!B.exec) { + B = String(B); + B = new RegExp((C === true ? "" : "^") + Ext.escapeRe(B), A ? "" : "i") + } + return B + }, + clone: function() { + var E = new Ext.util.MixedCollection(); + var B = this.keys, + D = this.items; + for (var C = 0, A = D.length; C < A; C++) { + E.add(B[C], D[C]) + } + E.getKey = this.getKey; + return E + } +}); +Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item; +Ext.util.JSON = new(function() { + var useHasOwn = {}.hasOwnProperty ? true : false; + var pad = function(n) { + return n < 10 ? "0" + n : n + }; + var m = { + "\b": "\\b", + "\t": "\\t", + "\n": "\\n", + "\f": "\\f", + "\r": "\\r", + "\"": "\\\"", + "\\": "\\\\" + }; + var encodeString = function(s) { + if (/["\\\x00-\x1f]/.test(s)) { + return "\"" + s.replace(/([\x00-\x1f\\"])/g, function(a, b) { + var c = m[b]; + if (c) { + return c + } + c = b.charCodeAt(); + return "\\u00" + Math.floor(c / 16).toString(16) + (c % 16).toString(16) + }) + "\"" + } + return "\"" + s + "\"" + }; + var encodeArray = function(o) { + var a = ["["], + b, i, l = o.length, + v; + for (i = 0; i < l; i += 1) { + v = o[i]; + switch (typeof v) { + case "undefined": + case "function": + case "unknown": + break; + default: + if (b) { + a.push(",") + } + a.push(v === null ? "null" : Ext.util.JSON.encode(v)); + b = true + } + } + a.push("]"); + return a.join("") + }; + var encodeDate = function(o) { + return "\"" + o.getFullYear() + "-" + pad(o.getMonth() + 1) + "-" + pad(o.getDate()) + "T" + pad(o.getHours()) + ":" + pad(o.getMinutes()) + ":" + pad(o.getSeconds()) + "\"" + }; + this.encode = function(o) { + if (typeof o == "undefined" || o === null) { + return "null" + } else { + if (Ext.isArray(o)) { + return encodeArray(o) + } else { + if (Ext.isDate(o)) { + return encodeDate(o) + } else { + if (typeof o == "string") { + return encodeString(o) + } else { + if (typeof o == "number") { + return isFinite(o) ? String(o) : "null" + } else { + if (typeof o == "boolean") { + return String(o) + } else { + var a = ["{"], + b, i, v; + for (i in o) { + if (!useHasOwn || o.hasOwnProperty(i)) { + v = o[i]; + switch (typeof v) { + case "undefined": + case "function": + case "unknown": + break; + default: + if (b) { + a.push(",") + } + a.push(this.encode(i), ":", v === null ? "null" : this.encode(v)); + b = true + } + } + } + a.push("}"); + return a.join("") + } + } + } + } + } + } + }; + this.decode = function(json) { + return eval("(" + json + ")") + } +})(); +Ext.encode = Ext.util.JSON.encode; +Ext.decode = Ext.util.JSON.decode; +Ext.util.Format = function() { + var trimRe = /^\s+|\s+$/g; + return { + ellipsis: function(value, len) { + if (value && value.length > len) { + return value.substr(0, len - 3) + "..." + } + return value + }, + undef: function(value) { + return value !== undefined ? value : "" + }, + defaultValue: function(value, defaultValue) { + return value !== undefined && value !== "" ? value : defaultValue + }, + htmlEncode: function(value) { + return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/").replace(/</g, "<").replace(/"/g, "\"") + }, + trim: function(value) { + return String(value).replace(trimRe, "") + }, + substr: function(value, start, length) { + return String(value).substr(start, length) + }, + lowercase: function(value) { + return String(value).toLowerCase() + }, + uppercase: function(value) { + return String(value).toUpperCase() + }, + capitalize: function(value) { + return !value ? value : value.charAt(0).toUpperCase() + value.substr(1).toLowerCase() + }, + call: function(value, fn) { + if (arguments.length > 2) { + var args = Array.prototype.slice.call(arguments, 2); + args.unshift(value); + return eval(fn).apply(window, args) + } else { + return eval(fn).call(window, value) + } + }, + usMoney: function(v) { + v = (Math.round((v - 0) * 100)) / 100; + v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10)) ? v + "0" : v); + v = String(v); + var ps = v.split("."); + var whole = ps[0]; + var sub = ps[1] ? "." + ps[1] : ".00"; + var r = /(\d+)(\d{3})/; + while (r.test(whole)) { + whole = whole.replace(r, "$1,$2") + } + v = whole + sub; + if (v.charAt(0) == "-") { + return "-" + v.substr(1) + } + return "" + v + }, + date: function(v, format) { + if (!v) { + return "" + } + if (!Ext.isDate(v)) { + v = new Date(Date.parse(v)) + } + return v.dateFormat(format || "m/d/Y") + }, + dateRenderer: function(format) { + return function(v) { + return Ext.util.Format.date(v, format) + } + }, + stripTagsRE: /<\/?[^>]+>/gi, + stripTags: function(v) { + return !v ? v : String(v).replace(this.stripTagsRE, "") + }, + stripScriptsRe: /(?:)((\n|\r|.)*?)(?:<\/script>)/ig, + stripScripts: function(v) { + return !v ? v : String(v).replace(this.stripScriptsRe, "") + }, + fileSize: function(size) { + if (size < 1024) { + return size + " bytes" + } else { + if (size < 1048576) { + return (Math.round(((size * 10) / 1024)) / 10) + " KB" + } else { + return (Math.round(((size * 10) / 1048576)) / 10) + " MB" + } + } + }, + math: function() { + var fns = {}; + return function(v, a) { + if (!fns[a]) { + fns[a] = new Function("v", "return v " + a + ";") + } + return fns[a](v) + } + }() + } +}(); +Ext.XTemplate = function() { + Ext.XTemplate.superclass.constructor.apply(this, arguments); + var P = this.html; + P = ["", P, ""].join(""); + var O = /]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/; + var N = /^]*?for="(.*?)"/; + var L = /^]*?if="(.*?)"/; + var J = /^]*?exec="(.*?)"/; + var C, B = 0; + var G = []; + while (C = P.match(O)) { + var M = C[0].match(N); + var K = C[0].match(L); + var I = C[0].match(J); + var E = null, + H = null, + D = null; + var A = M && M[1] ? M[1] : ""; + if (K) { + E = K && K[1] ? K[1] : null; + if (E) { + H = new Function("values", "parent", "xindex", "xcount", "with(values){ return " + (Ext.util.Format.htmlDecode(E)) + "; }") + } + } + if (I) { + E = I && I[1] ? I[1] : null; + if (E) { + D = new Function("values", "parent", "xindex", "xcount", "with(values){ " + (Ext.util.Format.htmlDecode(E)) + "; }") + } + } + if (A) { + switch (A) { + case ".": + A = new Function("values", "parent", "with(values){ return values; }"); + break; + case "..": + A = new Function("values", "parent", "with(values){ return parent; }"); + break; + default: + A = new Function("values", "parent", "with(values){ return " + A + "; }") + } + } + G.push({ + id: B, + target: A, + exec: D, + test: H, + body: C[1] || "" + }); + P = P.replace(C[0], "{xtpl" + B + "}"); + ++B + } + for (var F = G.length - 1; F >= 0; --F) { + this.compileTpl(G[F]) + } + this.master = G[G.length - 1]; + this.tpls = G +}; +Ext.extend(Ext.XTemplate, Ext.Template, { + re: /\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g, + codeRe: /\{\[((?:\\\]|.|\n)*?)\]\}/g, + applySubTemplate: function(A, H, G, D, C) { + var J = this.tpls[A]; + if (J.test && !J.test.call(this, H, G, D, C)) { + return "" + } + if (J.exec && J.exec.call(this, H, G, D, C)) { + return "" + } + var I = J.target ? J.target.call(this, H, G) : H; + G = J.target ? H : G; + if (J.target && Ext.isArray(I)) { + var B = []; + for (var E = 0, F = I.length; E < F; E++) { + B[B.length] = J.compiled.call(this, I[E], G, E + 1, F) + } + return B.join("") + } + return J.compiled.call(this, I, G, D, C) + }, + compileTpl: function(tpl) { + var fm = Ext.util.Format; + var useF = this.disableFormats !== true; + var sep = Ext.isGecko ? "+" : ","; + var fn = function(m, name, format, args, math) { + if (name.substr(0, 4) == "xtpl") { + return "'" + sep + "this.applySubTemplate(" + name.substr(4) + ", values, parent, xindex, xcount)" + sep + "'" + } + var v; + if (name === ".") { + v = "values" + } else { + if (name === "#") { + v = "xindex" + } else { + if (name.indexOf(".") != -1) { + v = name + } else { + v = "values['" + name + "']" + } + } + } + if (math) { + v = "(" + v + math + ")" + } + if (format && useF) { + args = args ? "," + args : ""; + if (format.substr(0, 5) != "this.") { + format = "fm." + format + "(" + } else { + format = "this.call(\"" + format.substr(5) + "\", "; + args = ", values" + } + } else { + args = ""; + format = "(" + v + " === undefined ? '' : " + } + return "'" + sep + format + v + args + ")" + sep + "'" + }; + var codeFn = function(m, code) { + return "'" + sep + "(" + code + ")" + sep + "'" + }; + var body; + if (Ext.isGecko) { + body = "tpl.compiled = function(values, parent, xindex, xcount){ return '" + tpl.body.replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn) + "';};" + } else { + body = ["tpl.compiled = function(values, parent, xindex, xcount){ return ['"]; + body.push(tpl.body.replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn)); + body.push("'].join('');};"); + body = body.join("") + } + eval(body); + return this + }, + apply: function(A) { + return this.master.compiled.call(this, A, {}, 1, 1) + }, + applyTemplate: function(A) { + return this.master.compiled.call(this, A, {}, 1, 1) + }, + compile: function() { + return this + } +}); +Ext.XTemplate.from = function(A) { + A = Ext.getDom(A); + return new Ext.XTemplate(A.value || A.innerHTML) +}; +Ext.util.CSS = function() { + var D = null; + var C = document; + var B = /(-[a-z])/gi; + var A = function(E, F) { + return F.charAt(1).toUpperCase() + }; + return { + createStyleSheet: function(G, J) { + var F; + var E = C.getElementsByTagName("head")[0]; + var I = C.createElement("style"); + I.setAttribute("type", "text/css"); + if (J) { + I.setAttribute("id", J) + } + if (Ext.isIE) { + E.appendChild(I); + F = I.styleSheet; + F.cssText = G + } else { + try { + I.appendChild(C.createTextNode(G)) + } catch (H) { + I.cssText = G + } + E.appendChild(I); + F = I.styleSheet ? I.styleSheet : (I.sheet || C.styleSheets[C.styleSheets.length - 1]) + } + this.cacheStyleSheet(F); + return F + }, + removeStyleSheet: function(F) { + var E = C.getElementById(F); + if (E) { + E.parentNode.removeChild(E) + } + }, + swapStyleSheet: function(G, E) { + this.removeStyleSheet(G); + var F = C.createElement("link"); + F.setAttribute("rel", "stylesheet"); + F.setAttribute("type", "text/css"); + F.setAttribute("id", G); + F.setAttribute("href", E); + C.getElementsByTagName("head")[0].appendChild(F) + }, + refreshCache: function() { + return this.getRules(true) + }, + cacheStyleSheet: function(F) { + if (!D) { + D = {} + } + try { + var H = F.cssRules || F.rules; + for (var E = H.length - 1; E >= 0; --E) { + D[H[E].selectorText] = H[E] + } + } catch (G) {} + }, + getRules: function(F) { + if (D == null || F) { + D = {}; + var H = C.styleSheets; + for (var G = 0, E = H.length; G < E; G++) { + try { + this.cacheStyleSheet(H[G]) + } catch (I) {} + } + } + return D + }, + getRule: function(E, G) { + var F = this.getRules(G); + if (!Ext.isArray(E)) { + return F[E] + } + for (var H = 0; H < E.length; H++) { + if (F[E[H]]) { + return F[E[H]] + } + } + return null + }, + updateRule: function(E, H, G) { + if (!Ext.isArray(E)) { + var I = this.getRule(E); + if (I) { + I.style[H.replace(B, A)] = G; + return true + } + } else { + for (var F = 0; F < E.length; F++) { + if (this.updateRule(E[F], H, G)) { + return true + } + } + } + return false + } + } +}(); +Ext.util.ClickRepeater = function(B, A) { + this.el = Ext.get(B); + this.el.unselectable(); + Ext.apply(this, A); + this.addEvents("mousedown", "click", "mouseup"); + this.el.on("mousedown", this.handleMouseDown, this); + if (this.preventDefault || this.stopDefault) { + this.el.on("click", function(C) { + if (this.preventDefault) { + C.preventDefault() + } + if (this.stopDefault) { + C.stopEvent() + } + }, this) + } + if (this.handler) { + this.on("click", this.handler, this.scope || this) + } + Ext.util.ClickRepeater.superclass.constructor.call(this) +}; +Ext.extend(Ext.util.ClickRepeater, Ext.util.Observable, { + interval: 20, + delay: 250, + preventDefault: true, + stopDefault: false, + timer: 0, + handleMouseDown: function() { + clearTimeout(this.timer); + this.el.blur(); + if (this.pressClass) { + this.el.addClass(this.pressClass) + } + this.mousedownTime = new Date(); + Ext.getDoc().on("mouseup", this.handleMouseUp, this); + this.el.on("mouseout", this.handleMouseOut, this); + this.fireEvent("mousedown", this); + this.fireEvent("click", this); + if (this.accelerate) { + this.delay = 400 + } + this.timer = this.click.defer(this.delay || this.interval, this) + }, + click: function() { + this.fireEvent("click", this); + this.timer = this.click.defer(this.accelerate ? this.easeOutExpo(this.mousedownTime.getElapsed(), 400, -390, 12000) : this.interval, this) + }, + easeOutExpo: function(B, A, D, C) { + return (B == C) ? A + D : D * (-Math.pow(2, -10 * B / C) + 1) + A + }, + handleMouseOut: function() { + clearTimeout(this.timer); + if (this.pressClass) { + this.el.removeClass(this.pressClass) + } + this.el.on("mouseover", this.handleMouseReturn, this) + }, + handleMouseReturn: function() { + this.el.un("mouseover", this.handleMouseReturn); + if (this.pressClass) { + this.el.addClass(this.pressClass) + } + this.click() + }, + handleMouseUp: function() { + clearTimeout(this.timer); + this.el.un("mouseover", this.handleMouseReturn); + this.el.un("mouseout", this.handleMouseOut); + Ext.getDoc().un("mouseup", this.handleMouseUp); + this.el.removeClass(this.pressClass); + this.fireEvent("mouseup", this) + } +}); +Ext.KeyNav = function(B, A) { + this.el = Ext.get(B); + Ext.apply(this, A); + if (!this.disabled) { + this.disabled = true; + this.enable() + } +}; +Ext.KeyNav.prototype = { + disabled: false, + defaultEventAction: "stopEvent", + forceKeyDown: false, + prepareEvent: function(C) { + var A = C.getKey(); + var B = this.keyToHandler[A]; + if (Ext.isSafari && B && A >= 37 && A <= 40) { + C.stopEvent() + } + }, + relay: function(C) { + var A = C.getKey(); + var B = this.keyToHandler[A]; + if (B && this[B]) { + if (this.doRelay(C, this[B], B) !== true) { + C[this.defaultEventAction]() + } + } + }, + doRelay: function(C, B, A) { + return B.call(this.scope || this, C) + }, + enter: false, + left: false, + right: false, + up: false, + down: false, + tab: false, + esc: false, + pageUp: false, + pageDown: false, + del: false, + home: false, + end: false, + keyToHandler: { + 37: "left", + 39: "right", + 38: "up", + 40: "down", + 33: "pageUp", + 34: "pageDown", + 46: "del", + 36: "home", + 35: "end", + 13: "enter", + 27: "esc", + 9: "tab" + }, + enable: function() { + if (this.disabled) { + if (this.forceKeyDown || Ext.isIE || Ext.isAir) { + this.el.on("keydown", this.relay, this) + } else { + this.el.on("keydown", this.prepareEvent, this); + this.el.on("keypress", this.relay, this) + } + this.disabled = false + } + }, + disable: function() { + if (!this.disabled) { + if (this.forceKeyDown || Ext.isIE || Ext.isAir) { + this.el.un("keydown", this.relay) + } else { + this.el.un("keydown", this.prepareEvent); + this.el.un("keypress", this.relay) + } + this.disabled = true + } + } +}; +Ext.KeyMap = function(C, B, A) { + this.el = Ext.get(C); + this.eventName = A || "keydown"; + this.bindings = []; + if (B) { + this.addBinding(B) + } + this.enable() +}; +Ext.KeyMap.prototype = { + stopEvent: false, + addBinding: function(D) { + if (Ext.isArray(D)) { + for (var F = 0, H = D.length; F < H; F++) { + this.addBinding(D[F]) + } + return + } + var N = D.key, + C = D.shift, + A = D.ctrl, + G = D.alt, + J = D.fn || D.handler, + M = D.scope; + if (typeof N == "string") { + var K = []; + var I = N.toUpperCase(); + for (var E = 0, H = I.length; E < H; E++) { + K.push(I.charCodeAt(E)) + } + N = K + } + var B = Ext.isArray(N); + var L = function(R) { + if ((!C || R.shiftKey) && (!A || R.ctrlKey) && (!G || R.altKey)) { + var P = R.getKey(); + if (B) { + for (var Q = 0, O = N.length; Q < O; Q++) { + if (N[Q] == P) { + if (this.stopEvent) { + R.stopEvent() + } + J.call(M || window, P, R); + return + } + } + } else { + if (P == N) { + if (this.stopEvent) { + R.stopEvent() + } + J.call(M || window, P, R) + } + } + } + }; + this.bindings.push(L) + }, + on: function(B, D, C) { + var G, A, E, F; + if (typeof B == "object" && !Ext.isArray(B)) { + G = B.key; + A = B.shift; + E = B.ctrl; + F = B.alt + } else { + G = B + } + this.addBinding({ + key: G, + shift: A, + ctrl: E, + alt: F, + fn: D, + scope: C + }) + }, + handleKeyDown: function(D) { + if (this.enabled) { + var B = this.bindings; + for (var C = 0, A = B.length; C < A; C++) { + B[C].call(this, D) + } + } + }, + isEnabled: function() { + return this.enabled + }, + enable: function() { + if (!this.enabled) { + this.el.on(this.eventName, this.handleKeyDown, this); + this.enabled = true + } + }, + disable: function() { + if (this.enabled) { + this.el.removeListener(this.eventName, this.handleKeyDown, this); + this.enabled = false + } + } +}; +Ext.util.TextMetrics = function() { + var A; + return { + measure: function(B, C, D) { + if (!A) { + A = Ext.util.TextMetrics.Instance(B, D) + } + A.bind(B); + A.setFixedWidth(D || "auto"); + return A.getSize(C) + }, + createInstance: function(B, C) { + return Ext.util.TextMetrics.Instance(B, C) + } + } +}(); +Ext.util.TextMetrics.Instance = function(B, D) { + var C = new Ext.Element(document.createElement("div")); + document.body.appendChild(C.dom); + C.position("absolute"); + C.setLeftTop(-1000, -1000); + C.hide(); + if (D) { + C.setWidth(D) + } + var A = { + getSize: function(F) { + C.update(F); + var E = C.getSize(); + C.update(""); + return E + }, + bind: function(E) { + C.setStyle(Ext.fly(E).getStyles("font-size", "font-style", "font-weight", "font-family", "line-height")) + }, + setFixedWidth: function(E) { + C.setWidth(E) + }, + getWidth: function(E) { + C.dom.style.width = "auto"; + return this.getSize(E).width + }, + getHeight: function(E) { + return this.getSize(E).height + } + }; + A.bind(B); + return A +}; +Ext.Element.measureText = Ext.util.TextMetrics.measure; +(function() { + var A = Ext.EventManager; + var B = Ext.lib.Dom; + Ext.dd.DragDrop = function(E, C, D) { + if (E) { + this.init(E, C, D) + } + }; + Ext.dd.DragDrop.prototype = { + id: null, + config: null, + dragElId: null, + handleElId: null, + invalidHandleTypes: null, + invalidHandleIds: null, + invalidHandleClasses: null, + startPageX: 0, + startPageY: 0, + groups: null, + locked: false, + lock: function() { + this.locked = true + }, + unlock: function() { + this.locked = false + }, + isTarget: true, + padding: null, + _domRef: null, + __ygDragDrop: true, + constrainX: false, + constrainY: false, + minX: 0, + maxX: 0, + minY: 0, + maxY: 0, + maintainOffset: false, + xTicks: null, + yTicks: null, + primaryButtonOnly: true, + available: false, + hasOuterHandles: false, + b4StartDrag: function(C, D) {}, + startDrag: function(C, D) {}, + b4Drag: function(C) {}, + onDrag: function(C) {}, + onDragEnter: function(C, D) {}, + b4DragOver: function(C) {}, + onDragOver: function(C, D) {}, + b4DragOut: function(C) {}, + onDragOut: function(C, D) {}, + b4DragDrop: function(C) {}, + onDragDrop: function(C, D) {}, + onInvalidDrop: function(C) {}, + b4EndDrag: function(C) {}, + endDrag: function(C) {}, + b4MouseDown: function(C) {}, + onMouseDown: function(C) {}, + onMouseUp: function(C) {}, + onAvailable: function() {}, + defaultPadding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + }, + constrainTo: function(H, F, M) { + if (typeof F == "number") { + F = { + left: F, + right: F, + top: F, + bottom: F + } + } + F = F || this.defaultPadding; + var J = Ext.get(this.getEl()).getBox(); + var C = Ext.get(H); + var L = C.getScroll(); + var I, D = C.dom; + if (D == document.body) { + I = { + x: L.left, + y: L.top, + width: Ext.lib.Dom.getViewWidth(), + height: Ext.lib.Dom.getViewHeight() + } + } else { + var K = C.getXY(); + I = { + x: K[0] + L.left, + y: K[1] + L.top, + width: D.clientWidth, + height: D.clientHeight + } + } + var G = J.y - I.y; + var E = J.x - I.x; + this.resetConstraints(); + this.setXConstraint(E - (F.left || 0), I.width - E - J.width - (F.right || 0), this.xTickSize); + this.setYConstraint(G - (F.top || 0), I.height - G - J.height - (F.bottom || 0), this.yTickSize) + }, + getEl: function() { + if (!this._domRef) { + this._domRef = Ext.getDom(this.id) + } + return this._domRef + }, + getDragEl: function() { + return Ext.getDom(this.dragElId) + }, + init: function(E, C, D) { + this.initTarget(E, C, D); + A.on(this.id, "mousedown", this.handleMouseDown, this) + }, + initTarget: function(E, C, D) { + this.config = D || {}; + this.DDM = Ext.dd.DDM; + this.groups = {}; + if (typeof E !== "string") { + E = Ext.id(E) + } + this.id = E; + this.addToGroup((C) ? C : "default"); + this.handleElId = E; + this.setDragElId(E); + this.invalidHandleTypes = { + A: "A" + }; + this.invalidHandleIds = {}; + this.invalidHandleClasses = []; + this.applyConfig(); + this.handleOnAvailable() + }, + applyConfig: function() { + this.padding = this.config.padding || [0, 0, 0, 0]; + this.isTarget = (this.config.isTarget !== false); + this.maintainOffset = (this.config.maintainOffset); + this.primaryButtonOnly = (this.config.primaryButtonOnly !== false) + }, + handleOnAvailable: function() { + this.available = true; + this.resetConstraints(); + this.onAvailable() + }, + setPadding: function(E, C, F, D) { + if (!C && 0 !== C) { + this.padding = [E, E, E, E] + } else { + if (!F && 0 !== F) { + this.padding = [E, C, E, C] + } else { + this.padding = [E, C, F, D] + } + } + }, + setInitPosition: function(F, E) { + var G = this.getEl(); + if (!this.DDM.verifyEl(G)) { + return + } + var D = F || 0; + var C = E || 0; + var H = B.getXY(G); + this.initPageX = H[0] - D; + this.initPageY = H[1] - C; + this.lastPageX = H[0]; + this.lastPageY = H[1]; + this.setStartPosition(H) + }, + setStartPosition: function(D) { + var C = D || B.getXY(this.getEl()); + this.deltaSetXY = null; + this.startPageX = C[0]; + this.startPageY = C[1] + }, + addToGroup: function(C) { + this.groups[C] = true; + this.DDM.regDragDrop(this, C) + }, + removeFromGroup: function(C) { + if (this.groups[C]) { + delete this.groups[C] + } + this.DDM.removeDDFromGroup(this, C) + }, + setDragElId: function(C) { + this.dragElId = C + }, + setHandleElId: function(C) { + if (typeof C !== "string") { + C = Ext.id(C) + } + this.handleElId = C; + this.DDM.regHandle(this.id, C) + }, + setOuterHandleElId: function(C) { + if (typeof C !== "string") { + C = Ext.id(C) + } + A.on(C, "mousedown", this.handleMouseDown, this); + this.setHandleElId(C); + this.hasOuterHandles = true + }, + unreg: function() { + A.un(this.id, "mousedown", this.handleMouseDown); + this._domRef = null; + this.DDM._remove(this) + }, + destroy: function() { + this.unreg() + }, + isLocked: function() { + return (this.DDM.isLocked() || this.locked) + }, + handleMouseDown: function(E, D) { + if (this.primaryButtonOnly && E.button != 0) { + return + } + if (this.isLocked()) { + return + } + this.DDM.refreshCache(this.groups); + var C = new Ext.lib.Point(Ext.lib.Event.getPageX(E), Ext.lib.Event.getPageY(E)); + if (!this.hasOuterHandles && !this.DDM.isOverTarget(C, this)) {} else { + if (this.clickValidator(E)) { + this.setStartPosition(); + this.b4MouseDown(E); + this.onMouseDown(E); + this.DDM.handleMouseDown(E, this); + this.DDM.stopEvent(E) + } else {} + } + }, + clickValidator: function(D) { + var C = D.getTarget(); + return (this.isValidHandleChild(C) && (this.id == this.handleElId || this.DDM.handleWasClicked(C, this.id))) + }, + addInvalidHandleType: function(C) { + var D = C.toUpperCase(); + this.invalidHandleTypes[D] = D + }, + addInvalidHandleId: function(C) { + if (typeof C !== "string") { + C = Ext.id(C) + } + this.invalidHandleIds[C] = C + }, + addInvalidHandleClass: function(C) { + this.invalidHandleClasses.push(C) + }, + removeInvalidHandleType: function(C) { + var D = C.toUpperCase(); + delete this.invalidHandleTypes[D] + }, + removeInvalidHandleId: function(C) { + if (typeof C !== "string") { + C = Ext.id(C) + } + delete this.invalidHandleIds[C] + }, + removeInvalidHandleClass: function(D) { + for (var E = 0, C = this.invalidHandleClasses.length; E < C; ++E) { + if (this.invalidHandleClasses[E] == D) { + delete this.invalidHandleClasses[E] + } + } + }, + isValidHandleChild: function(F) { + var E = true; + var H; + try { + H = F.nodeName.toUpperCase() + } catch (G) { + H = F.nodeName + } + E = E && !this.invalidHandleTypes[H]; + E = E && !this.invalidHandleIds[F.id]; + for (var D = 0, C = this.invalidHandleClasses.length; E && D < C; ++D) { + E = !B.hasClass(F, this.invalidHandleClasses[D]) + } + return E + }, + setXTicks: function(F, C) { + this.xTicks = []; + this.xTickSize = C; + var E = {}; + for (var D = this.initPageX; D >= this.minX; D = D - C) { + if (!E[D]) { + this.xTicks[this.xTicks.length] = D; + E[D] = true + } + } + for (D = this.initPageX; D <= this.maxX; D = D + C) { + if (!E[D]) { + this.xTicks[this.xTicks.length] = D; + E[D] = true + } + } + this.xTicks.sort(this.DDM.numericSort) + }, + setYTicks: function(F, C) { + this.yTicks = []; + this.yTickSize = C; + var E = {}; + for (var D = this.initPageY; D >= this.minY; D = D - C) { + if (!E[D]) { + this.yTicks[this.yTicks.length] = D; + E[D] = true + } + } + for (D = this.initPageY; D <= this.maxY; D = D + C) { + if (!E[D]) { + this.yTicks[this.yTicks.length] = D; + E[D] = true + } + } + this.yTicks.sort(this.DDM.numericSort) + }, + setXConstraint: function(E, D, C) { + this.leftConstraint = E; + this.rightConstraint = D; + this.minX = this.initPageX - E; + this.maxX = this.initPageX + D; + if (C) { + this.setXTicks(this.initPageX, C) + } + this.constrainX = true + }, + clearConstraints: function() { + this.constrainX = false; + this.constrainY = false; + this.clearTicks() + }, + clearTicks: function() { + this.xTicks = null; + this.yTicks = null; + this.xTickSize = 0; + this.yTickSize = 0 + }, + setYConstraint: function(C, E, D) { + this.topConstraint = C; + this.bottomConstraint = E; + this.minY = this.initPageY - C; + this.maxY = this.initPageY + E; + if (D) { + this.setYTicks(this.initPageY, D) + } + this.constrainY = true + }, + resetConstraints: function() { + if (this.initPageX || this.initPageX === 0) { + var D = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0; + var C = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0; + this.setInitPosition(D, C) + } else { + this.setInitPosition() + } + if (this.constrainX) { + this.setXConstraint(this.leftConstraint, this.rightConstraint, this.xTickSize) + } + if (this.constrainY) { + this.setYConstraint(this.topConstraint, this.bottomConstraint, this.yTickSize) + } + }, + getTick: function(I, F) { + if (!F) { + return I + } else { + if (F[0] >= I) { + return F[0] + } else { + for (var D = 0, C = F.length; D < C; ++D) { + var E = D + 1; + if (F[E] && F[E] >= I) { + var H = I - F[D]; + var G = F[E] - I; + return (G > H) ? F[D] : F[E] + } + } + return F[F.length - 1] + } + } + }, + toString: function() { + return ("DragDrop " + this.id) + } + } +})(); +if (!Ext.dd.DragDropMgr) { + Ext.dd.DragDropMgr = function() { + var A = Ext.EventManager; + return { + ids: {}, + handleIds: {}, + dragCurrent: null, + dragOvers: {}, + deltaX: 0, + deltaY: 0, + preventDefault: true, + stopPropagation: true, + initalized: false, + locked: false, + init: function() { + this.initialized = true + }, + POINT: 0, + INTERSECT: 1, + mode: 0, + _execOnAll: function(D, C) { + for (var E in this.ids) { + for (var B in this.ids[E]) { + var F = this.ids[E][B]; + if (!this.isTypeOfDD(F)) { + continue + } + F[D].apply(F, C) + } + } + }, + _onLoad: function() { + this.init(); + A.on(document, "mouseup", this.handleMouseUp, this, true); + A.on(document, "mousemove", this.handleMouseMove, this, true); + A.on(window, "unload", this._onUnload, this, true); + A.on(window, "resize", this._onResize, this, true) + }, + _onResize: function(B) { + this._execOnAll("resetConstraints", []) + }, + lock: function() { + this.locked = true + }, + unlock: function() { + this.locked = false + }, + isLocked: function() { + return this.locked + }, + locationCache: {}, + useCache: true, + clickPixelThresh: 3, + clickTimeThresh: 350, + dragThreshMet: false, + clickTimeout: null, + startX: 0, + startY: 0, + regDragDrop: function(C, B) { + if (!this.initialized) { + this.init() + } + if (!this.ids[B]) { + this.ids[B] = {} + } + this.ids[B][C.id] = C + }, + removeDDFromGroup: function(D, B) { + if (!this.ids[B]) { + this.ids[B] = {} + } + var C = this.ids[B]; + if (C && C[D.id]) { + delete C[D.id] + } + }, + _remove: function(C) { + for (var B in C.groups) { + if (B && this.ids[B][C.id]) { + delete this.ids[B][C.id] + } + } + delete this.handleIds[C.id] + }, + regHandle: function(C, B) { + if (!this.handleIds[C]) { + this.handleIds[C] = {} + } + this.handleIds[C][B] = B + }, + isDragDrop: function(B) { + return (this.getDDById(B)) ? true : false + }, + getRelated: function(F, C) { + var E = []; + for (var D in F.groups) { + for (j in this.ids[D]) { + var B = this.ids[D][j]; + if (!this.isTypeOfDD(B)) { + continue + } + if (!C || B.isTarget) { + E[E.length] = B + } + } + } + return E + }, + isLegalTarget: function(F, E) { + var C = this.getRelated(F, true); + for (var D = 0, B = C.length; D < B; ++D) { + if (C[D].id == E.id) { + return true + } + } + return false + }, + isTypeOfDD: function(B) { + return (B && B.__ygDragDrop) + }, + isHandle: function(C, B) { + return (this.handleIds[C] && this.handleIds[C][B]) + }, + getDDById: function(C) { + for (var B in this.ids) { + if (this.ids[B][C]) { + return this.ids[B][C] + } + } + return null + }, + handleMouseDown: function(D, C) { + if (Ext.QuickTips) { + Ext.QuickTips.disable() + } + this.currentTarget = D.getTarget(); + this.dragCurrent = C; + var B = C.getEl(); + this.startX = D.getPageX(); + this.startY = D.getPageY(); + this.deltaX = this.startX - B.offsetLeft; + this.deltaY = this.startY - B.offsetTop; + this.dragThreshMet = false; + this.clickTimeout = setTimeout(function() { + var E = Ext.dd.DDM; + E.startDrag(E.startX, E.startY) + }, this.clickTimeThresh) + }, + startDrag: function(B, C) { + clearTimeout(this.clickTimeout); + if (this.dragCurrent) { + this.dragCurrent.b4StartDrag(B, C); + this.dragCurrent.startDrag(B, C) + } + this.dragThreshMet = true + }, + handleMouseUp: function(B) { + if (Ext.QuickTips) { + Ext.QuickTips.enable() + } + if (!this.dragCurrent) { + return + } + clearTimeout(this.clickTimeout); + if (this.dragThreshMet) { + this.fireEvents(B, true) + } else {} + this.stopDrag(B); + this.stopEvent(B) + }, + stopEvent: function(B) { + if (this.stopPropagation) { + B.stopPropagation() + } + if (this.preventDefault) { + B.preventDefault() + } + }, + stopDrag: function(B) { + if (this.dragCurrent) { + if (this.dragThreshMet) { + this.dragCurrent.b4EndDrag(B); + this.dragCurrent.endDrag(B) + } + this.dragCurrent.onMouseUp(B) + } + this.dragCurrent = null; + this.dragOvers = {} + }, + handleMouseMove: function(D) { + if (!this.dragCurrent) { + return true + } + if (Ext.isIE && (D.button !== 0 && D.button !== 1 && D.button !== 2)) { + this.stopEvent(D); + return this.handleMouseUp(D) + } + if (!this.dragThreshMet) { + var C = Math.abs(this.startX - D.getPageX()); + var B = Math.abs(this.startY - D.getPageY()); + if (C > this.clickPixelThresh || B > this.clickPixelThresh) { + this.startDrag(this.startX, this.startY) + } + } + if (this.dragThreshMet) { + this.dragCurrent.b4Drag(D); + this.dragCurrent.onDrag(D); + if (!this.dragCurrent.moveOnly) { + this.fireEvents(D, false) + } + } + this.stopEvent(D); + return true + }, + fireEvents: function(K, L) { + var N = this.dragCurrent; + if (!N || N.isLocked()) { + return + } + var O = K.getPoint(); + var B = []; + var E = []; + var I = []; + var G = []; + var D = []; + for (var F in this.dragOvers) { + var C = this.dragOvers[F]; + if (!this.isTypeOfDD(C)) { + continue + } + if (!this.isOverTarget(O, C, this.mode)) { + E.push(C) + } + B[F] = true; + delete this.dragOvers[F] + } + for (var M in N.groups) { + if ("string" != typeof M) { + continue + } + for (F in this.ids[M]) { + var H = this.ids[M][F]; + if (!this.isTypeOfDD(H)) { + continue + } + if (H.isTarget && !H.isLocked() && H != N) { + if (this.isOverTarget(O, H, this.mode)) { + if (L) { + G.push(H) + } else { + if (!B[H.id]) { + D.push(H) + } else { + I.push(H) + } + this.dragOvers[H.id] = H + } + } + } + } + } + if (this.mode) { + if (E.length) { + N.b4DragOut(K, E); + N.onDragOut(K, E) + } + if (D.length) { + N.onDragEnter(K, D) + } + if (I.length) { + N.b4DragOver(K, I); + N.onDragOver(K, I) + } + if (G.length) { + N.b4DragDrop(K, G); + N.onDragDrop(K, G) + } + } else { + var J = 0; + for (F = 0, J = E.length; F < J; ++F) { + N.b4DragOut(K, E[F].id); + N.onDragOut(K, E[F].id) + } + for (F = 0, J = D.length; F < J; ++F) { + N.onDragEnter(K, D[F].id) + } + for (F = 0, J = I.length; F < J; ++F) { + N.b4DragOver(K, I[F].id); + N.onDragOver(K, I[F].id) + } + for (F = 0, J = G.length; F < J; ++F) { + N.b4DragDrop(K, G[F].id); + N.onDragDrop(K, G[F].id) + } + } + if (L && !G.length) { + N.onInvalidDrop(K) + } + }, + getBestMatch: function(D) { + var F = null; + var C = D.length; + if (C == 1) { + F = D[0] + } else { + for (var E = 0; E < C; ++E) { + var B = D[E]; + if (B.cursorIsOver) { + F = B; + break + } else { + if (!F || F.overlap.getArea() < B.overlap.getArea()) { + F = B + } + } + } + } + return F + }, + refreshCache: function(C) { + for (var B in C) { + if ("string" != typeof B) { + continue + } + for (var D in this.ids[B]) { + var E = this.ids[B][D]; + if (this.isTypeOfDD(E)) { + var F = this.getLocation(E); + if (F) { + this.locationCache[E.id] = F + } else { + delete this.locationCache[E.id] + } + } + } + } + }, + verifyEl: function(C) { + if (C) { + var B; + if (Ext.isIE) { + try { + B = C.offsetParent + } catch (D) {} + } else { + B = C.offsetParent + } + if (B) { + return true + } + } + return false + }, + getLocation: function(G) { + if (!this.isTypeOfDD(G)) { + return null + } + var E = G.getEl(), + J, D, C, L, K, M, B, I, F; + try { + J = Ext.lib.Dom.getXY(E) + } catch (H) {} + if (!J) { + return null + } + D = J[0]; + C = D + E.offsetWidth; + L = J[1]; + K = L + E.offsetHeight; + M = L - G.padding[0]; + B = C + G.padding[1]; + I = K + G.padding[2]; + F = D - G.padding[3]; + return new Ext.lib.Region(M, B, I, F) + }, + isOverTarget: function(J, B, D) { + var F = this.locationCache[B.id]; + if (!F || !this.useCache) { + F = this.getLocation(B); + this.locationCache[B.id] = F + } + if (!F) { + return false + } + B.cursorIsOver = F.contains(J); + var I = this.dragCurrent; + if (!I || !I.getTargetCoord || (!D && !I.constrainX && !I.constrainY)) { + return B.cursorIsOver + } + B.overlap = null; + var G = I.getTargetCoord(J.x, J.y); + var C = I.getDragEl(); + var E = new Ext.lib.Region(G.y, G.x + C.offsetWidth, G.y + C.offsetHeight, G.x); + var H = E.intersect(F); + if (H) { + B.overlap = H; + return (D) ? true : B.cursorIsOver + } else { + return false + } + }, + _onUnload: function(C, B) { + Ext.dd.DragDropMgr.unregAll() + }, + unregAll: function() { + if (this.dragCurrent) { + this.stopDrag(); + this.dragCurrent = null + } + this._execOnAll("unreg", []); + for (var B in this.elementCache) { + delete this.elementCache[B] + } + this.elementCache = {}; + this.ids = {} + }, + elementCache: {}, + getElWrapper: function(C) { + var B = this.elementCache[C]; + if (!B || !B.el) { + B = this.elementCache[C] = new this.ElementWrapper(Ext.getDom(C)) + } + return B + }, + getElement: function(B) { + return Ext.getDom(B) + }, + getCss: function(C) { + var B = Ext.getDom(C); + return (B) ? B.style : null + }, + ElementWrapper: function(B) { + this.el = B || null; + this.id = this.el && B.id; + this.css = this.el && B.style + }, + getPosX: function(B) { + return Ext.lib.Dom.getX(B) + }, + getPosY: function(B) { + return Ext.lib.Dom.getY(B) + }, + swapNode: function(D, B) { + if (D.swapNode) { + D.swapNode(B) + } else { + var E = B.parentNode; + var C = B.nextSibling; + if (C == D) { + E.insertBefore(D, B) + } else { + if (B == D.nextSibling) { + E.insertBefore(B, D) + } else { + D.parentNode.replaceChild(B, D); + E.insertBefore(D, C) + } + } + } + }, + getScroll: function() { + var D, B, E = document.documentElement, + C = document.body; + if (E && (E.scrollTop || E.scrollLeft)) { + D = E.scrollTop; + B = E.scrollLeft + } else { + if (C) { + D = C.scrollTop; + B = C.scrollLeft + } else {} + } + return { + top: D, + left: B + } + }, + getStyle: function(C, B) { + return Ext.fly(C).getStyle(B) + }, + getScrollTop: function() { + return this.getScroll().top + }, + getScrollLeft: function() { + return this.getScroll().left + }, + moveToEl: function(B, D) { + var C = Ext.lib.Dom.getXY(D); + Ext.lib.Dom.setXY(B, C) + }, + numericSort: function(C, B) { + return (C - B) + }, + _timeoutCount: 0, + _addListeners: function() { + var B = Ext.dd.DDM; + if (Ext.lib.Event && document) { + B._onLoad() + } else { + if (B._timeoutCount > 2000) {} else { + setTimeout(B._addListeners, 10); + if (document && document.body) { + B._timeoutCount += 1 + } + } + } + }, + handleWasClicked: function(B, D) { + if (this.isHandle(D, B.id)) { + return true + } else { + var C = B.parentNode; + while (C) { + if (this.isHandle(D, C.id)) { + return true + } else { + C = C.parentNode + } + } + } + return false + } + } + }(); + Ext.dd.DDM = Ext.dd.DragDropMgr; + Ext.dd.DDM._addListeners() +} +Ext.dd.DD = function(C, A, B) { + if (C) { + this.init(C, A, B) + } +}; +Ext.extend(Ext.dd.DD, Ext.dd.DragDrop, { + scroll: true, + autoOffset: function(C, B) { + var A = C - this.startPageX; + var D = B - this.startPageY; + this.setDelta(A, D) + }, + setDelta: function(B, A) { + this.deltaX = B; + this.deltaY = A + }, + setDragElPos: function(C, B) { + var A = this.getDragEl(); + this.alignElWithMouse(A, C, B) + }, + alignElWithMouse: function(C, G, F) { + var E = this.getTargetCoord(G, F); + var B = C.dom ? C : Ext.fly(C, "_dd"); + if (!this.deltaSetXY) { + var H = [E.x, E.y]; + B.setXY(H); + var D = B.getLeft(true); + var A = B.getTop(true); + this.deltaSetXY = [D - E.x, A - E.y] + } else { + B.setLeftTop(E.x + this.deltaSetXY[0], E.y + this.deltaSetXY[1]) + } + this.cachePosition(E.x, E.y); + this.autoScroll(E.x, E.y, C.offsetHeight, C.offsetWidth); + return E + }, + cachePosition: function(B, A) { + if (B) { + this.lastPageX = B; + this.lastPageY = A + } else { + var C = Ext.lib.Dom.getXY(this.getEl()); + this.lastPageX = C[0]; + this.lastPageY = C[1] + } + }, + autoScroll: function(J, I, E, K) { + if (this.scroll) { + var L = Ext.lib.Dom.getViewHeight(); + var B = Ext.lib.Dom.getViewWidth(); + var N = this.DDM.getScrollTop(); + var D = this.DDM.getScrollLeft(); + var H = E + I; + var M = K + J; + var G = (L + N - I - this.deltaY); + var F = (B + D - J - this.deltaX); + var C = 40; + var A = (document.all) ? 80 : 30; + if (H > L && G < C) { + window.scrollTo(D, N + A) + } + if (I < N && N > 0 && I - N < C) { + window.scrollTo(D, N - A) + } + if (M > B && F < C) { + window.scrollTo(D + A, N) + } + if (J < D && D > 0 && J - D < C) { + window.scrollTo(D - A, N) + } + } + }, + getTargetCoord: function(C, B) { + var A = C - this.deltaX; + var D = B - this.deltaY; + if (this.constrainX) { + if (A < this.minX) { + A = this.minX + } + if (A > this.maxX) { + A = this.maxX + } + } + if (this.constrainY) { + if (D < this.minY) { + D = this.minY + } + if (D > this.maxY) { + D = this.maxY + } + } + A = this.getTick(A, this.xTicks); + D = this.getTick(D, this.yTicks); + return { + x: A, + y: D + } + }, + applyConfig: function() { + Ext.dd.DD.superclass.applyConfig.call(this); + this.scroll = (this.config.scroll !== false) + }, + b4MouseDown: function(A) { + this.autoOffset(A.getPageX(), A.getPageY()) + }, + b4Drag: function(A) { + this.setDragElPos(A.getPageX(), A.getPageY()) + }, + toString: function() { + return ("DD " + this.id) + } +}); +Ext.dd.DDProxy = function(C, A, B) { + if (C) { + this.init(C, A, B); + this.initFrame() + } +}; +Ext.dd.DDProxy.dragElId = "ygddfdiv"; +Ext.extend(Ext.dd.DDProxy, Ext.dd.DD, { + resizeFrame: true, + centerFrame: false, + createFrame: function() { + var B = this; + var A = document.body; + if (!A || !A.firstChild) { + setTimeout(function() { + B.createFrame() + }, 50); + return + } + var D = this.getDragEl(); + if (!D) { + D = document.createElement("div"); + D.id = this.dragElId; + var C = D.style; + C.position = "absolute"; + C.visibility = "hidden"; + C.cursor = "move"; + C.border = "2px solid #aaa"; + C.zIndex = 999; + A.insertBefore(D, A.firstChild) + } + }, + initFrame: function() { + this.createFrame() + }, + applyConfig: function() { + Ext.dd.DDProxy.superclass.applyConfig.call(this); + this.resizeFrame = (this.config.resizeFrame !== false); + this.centerFrame = (this.config.centerFrame); + this.setDragElId(this.config.dragElId || Ext.dd.DDProxy.dragElId) + }, + showFrame: function(E, D) { + var C = this.getEl(); + var A = this.getDragEl(); + var B = A.style; + this._resizeProxy(); + if (this.centerFrame) { + this.setDelta(Math.round(parseInt(B.width, 10) / 2), Math.round(parseInt(B.height, 10) / 2)) + } + this.setDragElPos(E, D); + Ext.fly(A).show() + }, + _resizeProxy: function() { + if (this.resizeFrame) { + var A = this.getEl(); + Ext.fly(this.getDragEl()).setSize(A.offsetWidth, A.offsetHeight) + } + }, + b4MouseDown: function(B) { + var A = B.getPageX(); + var C = B.getPageY(); + this.autoOffset(A, C); + this.setDragElPos(A, C) + }, + b4StartDrag: function(A, B) { + this.showFrame(A, B) + }, + b4EndDrag: function(A) { + Ext.fly(this.getDragEl()).hide() + }, + endDrag: function(C) { + var B = this.getEl(); + var A = this.getDragEl(); + A.style.visibility = ""; + this.beforeMove(); + B.style.visibility = "hidden"; + Ext.dd.DDM.moveToEl(B, A); + A.style.visibility = "hidden"; + B.style.visibility = ""; + this.afterDrag() + }, + beforeMove: function() {}, + afterDrag: function() {}, + toString: function() { + return ("DDProxy " + this.id) + } +}); +Ext.dd.DDTarget = function(C, A, B) { + if (C) { + this.initTarget(C, A, B) + } +}; +Ext.extend(Ext.dd.DDTarget, Ext.dd.DragDrop, { + toString: function() { + return ("DDTarget " + this.id) + } +}); +Ext.dd.DragTracker = function(A) { + Ext.apply(this, A); + this.addEvents("mousedown", "mouseup", "mousemove", "dragstart", "dragend", "drag"); + this.dragRegion = new Ext.lib.Region(0, 0, 0, 0); + if (this.el) { + this.initEl(this.el) + } +}; +Ext.extend(Ext.dd.DragTracker, Ext.util.Observable, { + active: false, + tolerance: 5, + autoStart: false, + initEl: function(A) { + this.el = Ext.get(A); + A.on("mousedown", this.onMouseDown, this, this.delegate ? { + delegate: this.delegate + } : undefined) + }, + destroy: function() { + this.el.un("mousedown", this.onMouseDown, this) + }, + onMouseDown: function(C, B) { + if (this.fireEvent("mousedown", this, C) !== false && this.onBeforeStart(C) !== false) { + this.startXY = this.lastXY = C.getXY(); + this.dragTarget = this.delegate ? B : this.el.dom; + C.preventDefault(); + var A = Ext.getDoc(); + A.on("mouseup", this.onMouseUp, this); + A.on("mousemove", this.onMouseMove, this); + A.on("selectstart", this.stopSelect, this); + if (this.autoStart) { + this.timer = this.triggerStart.defer(this.autoStart === true ? 1000 : this.autoStart, this) + } + } + }, + onMouseMove: function(D, C) { + D.preventDefault(); + var B = D.getXY(), + A = this.startXY; + this.lastXY = B; + if (!this.active) { + if (Math.abs(A[0] - B[0]) > this.tolerance || Math.abs(A[1] - B[1]) > this.tolerance) { + this.triggerStart() + } else { + return + } + } + this.fireEvent("mousemove", this, D); + this.onDrag(D); + this.fireEvent("drag", this, D) + }, + onMouseUp: function(B) { + var A = Ext.getDoc(); + A.un("mousemove", this.onMouseMove, this); + A.un("mouseup", this.onMouseUp, this); + A.un("selectstart", this.stopSelect, this); + B.preventDefault(); + this.clearStart(); + this.active = false; + delete this.elRegion; + this.fireEvent("mouseup", this, B); + this.onEnd(B); + this.fireEvent("dragend", this, B) + }, + triggerStart: function(A) { + this.clearStart(); + this.active = true; + this.onStart(this.startXY); + this.fireEvent("dragstart", this, this.startXY) + }, + clearStart: function() { + if (this.timer) { + clearTimeout(this.timer); + delete this.timer + } + }, + stopSelect: function(A) { + A.stopEvent(); + return false + }, + onBeforeStart: function(A) {}, + onStart: function(A) {}, + onDrag: function(A) {}, + onEnd: function(A) {}, + getDragTarget: function() { + return this.dragTarget + }, + getDragCt: function() { + return this.el + }, + getXY: function(A) { + return A ? this.constrainModes[A].call(this, this.lastXY) : this.lastXY + }, + getOffset: function(C) { + var B = this.getXY(C); + var A = this.startXY; + return [A[0] - B[0], A[1] - B[1]] + }, + constrainModes: { + "point": function(B) { + if (!this.elRegion) { + this.elRegion = this.getDragCt().getRegion() + } + var A = this.dragRegion; + A.left = B[0]; + A.top = B[1]; + A.right = B[0]; + A.bottom = B[1]; + A.constrainTo(this.elRegion); + return [A.left, A.top] + } + } +}); +Ext.dd.ScrollManager = function() { + var C = Ext.dd.DragDropMgr; + var E = {}; + var B = null; + var H = {}; + var G = function(K) { + B = null; + A() + }; + var I = function() { + if (C.dragCurrent) { + C.refreshCache(C.dragCurrent.groups) + } + }; + var D = function() { + if (C.dragCurrent) { + var K = Ext.dd.ScrollManager; + var L = H.el.ddScrollConfig ? H.el.ddScrollConfig.increment : K.increment; + if (!K.animate) { + if (H.el.scroll(H.dir, L)) { + I() + } + } else { + H.el.scroll(H.dir, L, true, K.animDuration, I) + } + } + }; + var A = function() { + if (H.id) { + clearInterval(H.id) + } + H.id = 0; + H.el = null; + H.dir = "" + }; + var F = function(L, K) { + A(); + H.el = L; + H.dir = K; + H.id = setInterval(D, Ext.dd.ScrollManager.frequency) + }; + var J = function(N, P) { + if (P || !C.dragCurrent) { + return + } + var Q = Ext.dd.ScrollManager; + if (!B || B != C.dragCurrent) { + B = C.dragCurrent; + Q.refreshCache() + } + var R = Ext.lib.Event.getXY(N); + var S = new Ext.lib.Point(R[0], R[1]); + for (var L in E) { + var M = E[L], + K = M._region; + var O = M.ddScrollConfig ? M.ddScrollConfig : Q; + if (K && K.contains(S) && M.isScrollable()) { + if (K.bottom - S.y <= O.vthresh) { + if (H.el != M) { + F(M, "down") + } + return + } else { + if (K.right - S.x <= O.hthresh) { + if (H.el != M) { + F(M, "left") + } + return + } else { + if (S.y - K.top <= O.vthresh) { + if (H.el != M) { + F(M, "up") + } + return + } else { + if (S.x - K.left <= O.hthresh) { + if (H.el != M) { + F(M, "right") + } + return + } + } + } + } + } + } + A() + }; + C.fireEvents = C.fireEvents.createSequence(J, C); + C.stopDrag = C.stopDrag.createSequence(G, C); + return { + register: function(M) { + if (Ext.isArray(M)) { + for (var L = 0, K = M.length; L < K; L++) { + this.register(M[L]) + } + } else { + M = Ext.get(M); + E[M.id] = M + } + }, + unregister: function(M) { + if (Ext.isArray(M)) { + for (var L = 0, K = M.length; L < K; L++) { + this.unregister(M[L]) + } + } else { + M = Ext.get(M); + delete E[M.id] + } + }, + vthresh: 25, + hthresh: 25, + increment: 100, + frequency: 500, + animate: true, + animDuration: 0.4, + refreshCache: function() { + for (var K in E) { + if (typeof E[K] == "object") { + E[K]._region = E[K].getRegion() + } + } + } + } +}(); +Ext.dd.Registry = function() { + var D = {}; + var B = {}; + var A = 0; + var C = function(F, E) { + if (typeof F == "string") { + return F + } + var G = F.id; + if (!G && E !== false) { + G = "extdd-" + (++A); + F.id = G + } + return G + }; + return { + register: function(H, I) { + I = I || {}; + if (typeof H == "string") { + H = document.getElementById(H) + } + I.ddel = H; + D[C(H)] = I; + if (I.isHandle !== false) { + B[I.ddel.id] = I + } + if (I.handles) { + var G = I.handles; + for (var F = 0, E = G.length; F < E; F++) { + B[C(G[F])] = I + } + } + }, + unregister: function(H) { + var J = C(H, false); + var I = D[J]; + if (I) { + delete D[J]; + if (I.handles) { + var G = I.handles; + for (var F = 0, E = G.length; F < E; F++) { + delete B[C(G[F], false)] + } + } + } + }, + getHandle: function(E) { + if (typeof E != "string") { + E = E.id + } + return B[E] + }, + getHandleFromEvent: function(F) { + var E = Ext.lib.Event.getTarget(F); + return E ? B[E.id] : null + }, + getTarget: function(E) { + if (typeof E != "string") { + E = E.id + } + return D[E] + }, + getTargetFromEvent: function(F) { + var E = Ext.lib.Event.getTarget(F); + return E ? D[E.id] || B[E.id] : null + } + } +}(); +Ext.dd.StatusProxy = function(A) { + Ext.apply(this, A); + this.id = this.id || Ext.id(); + this.el = new Ext.Layer({ + dh: { + id: this.id, + tag: "div", + cls: "x-dd-drag-proxy " + this.dropNotAllowed, + children: [{ + tag: "div", + cls: "x-dd-drop-icon" + }, { + tag: "div", + cls: "x-dd-drag-ghost" + }] + }, + shadow: !A || A.shadow !== false + }); + this.ghost = Ext.get(this.el.dom.childNodes[1]); + this.dropStatus = this.dropNotAllowed +}; +Ext.dd.StatusProxy.prototype = { + dropAllowed: "x-dd-drop-ok", + dropNotAllowed: "x-dd-drop-nodrop", + setStatus: function(A) { + A = A || this.dropNotAllowed; + if (this.dropStatus != A) { + this.el.replaceClass(this.dropStatus, A); + this.dropStatus = A + } + }, + reset: function(A) { + this.el.dom.className = "x-dd-drag-proxy " + this.dropNotAllowed; + this.dropStatus = this.dropNotAllowed; + if (A) { + this.ghost.update("") + } + }, + update: function(A) { + if (typeof A == "string") { + this.ghost.update(A) + } else { + this.ghost.update(""); + A.style.margin = "0"; + this.ghost.dom.appendChild(A) + } + }, + getEl: function() { + return this.el + }, + getGhost: function() { + return this.ghost + }, + hide: function(A) { + this.el.hide(); + if (A) { + this.reset(true) + } + }, + stop: function() { + if (this.anim && this.anim.isAnimated && this.anim.isAnimated()) { + this.anim.stop() + } + }, + show: function() { + this.el.show() + }, + sync: function() { + this.el.sync() + }, + repair: function(B, C, A) { + this.callback = C; + this.scope = A; + if (B && this.animRepair !== false) { + this.el.addClass("x-dd-drag-repair"); + this.el.hideUnders(true); + this.anim = this.el.shift({ + duration: this.repairDuration || 0.5, + easing: "easeOut", + xy: B, + stopFx: true, + callback: this.afterRepair, + scope: this + }) + } else { + this.afterRepair() + } + }, + afterRepair: function() { + this.hide(true); + if (typeof this.callback == "function") { + this.callback.call(this.scope || this) + } + this.callback = null; + this.scope = null + } +}; +Ext.dd.DragSource = function(B, A) { + this.el = Ext.get(B); + if (!this.dragData) { + this.dragData = {} + } + Ext.apply(this, A); + if (!this.proxy) { + this.proxy = new Ext.dd.StatusProxy() + } + Ext.dd.DragSource.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group, { + dragElId: this.proxy.id, + resizeFrame: false, + isTarget: false, + scroll: this.scroll === true + }); + this.dragging = false +}; +Ext.extend(Ext.dd.DragSource, Ext.dd.DDProxy, { + dropAllowed: "x-dd-drop-ok", + dropNotAllowed: "x-dd-drop-nodrop", + getDragData: function(A) { + return this.dragData + }, + onDragEnter: function(C, D) { + var B = Ext.dd.DragDropMgr.getDDById(D); + this.cachedTarget = B; + if (this.beforeDragEnter(B, C, D) !== false) { + if (B.isNotifyTarget) { + var A = B.notifyEnter(this, C, this.dragData); + this.proxy.setStatus(A) + } else { + this.proxy.setStatus(this.dropAllowed) + } + if (this.afterDragEnter) { + this.afterDragEnter(B, C, D) + } + } + }, + beforeDragEnter: function(B, A, C) { + return true + }, + alignElWithMouse: function() { + Ext.dd.DragSource.superclass.alignElWithMouse.apply(this, arguments); + this.proxy.sync() + }, + onDragOver: function(C, D) { + var B = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(D); + if (this.beforeDragOver(B, C, D) !== false) { + if (B.isNotifyTarget) { + var A = B.notifyOver(this, C, this.dragData); + this.proxy.setStatus(A) + } + if (this.afterDragOver) { + this.afterDragOver(B, C, D) + } + } + }, + beforeDragOver: function(B, A, C) { + return true + }, + onDragOut: function(B, C) { + var A = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(C); + if (this.beforeDragOut(A, B, C) !== false) { + if (A.isNotifyTarget) { + A.notifyOut(this, B, this.dragData) + } + this.proxy.reset(); + if (this.afterDragOut) { + this.afterDragOut(A, B, C) + } + } + this.cachedTarget = null + }, + beforeDragOut: function(B, A, C) { + return true + }, + onDragDrop: function(B, C) { + var A = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(C); + if (this.beforeDragDrop(A, B, C) !== false) { + if (A.isNotifyTarget) { + if (A.notifyDrop(this, B, this.dragData)) { + this.onValidDrop(A, B, C) + } else { + this.onInvalidDrop(A, B, C) + } + } else { + this.onValidDrop(A, B, C) + } + if (this.afterDragDrop) { + this.afterDragDrop(A, B, C) + } + } + delete this.cachedTarget + }, + beforeDragDrop: function(B, A, C) { + return true + }, + onValidDrop: function(B, A, C) { + this.hideProxy(); + if (this.afterValidDrop) { + this.afterValidDrop(B, A, C) + } + }, + getRepairXY: function(B, A) { + return this.el.getXY() + }, + onInvalidDrop: function(B, A, C) { + this.beforeInvalidDrop(B, A, C); + if (this.cachedTarget) { + if (this.cachedTarget.isNotifyTarget) { + this.cachedTarget.notifyOut(this, A, this.dragData) + } + this.cacheTarget = null + } + this.proxy.repair(this.getRepairXY(A, this.dragData), this.afterRepair, this); + if (this.afterInvalidDrop) { + this.afterInvalidDrop(A, C) + } + }, + afterRepair: function() { + if (Ext.enableFx) { + this.el.highlight(this.hlColor || "c3daf9") + } + this.dragging = false + }, + beforeInvalidDrop: function(B, A, C) { + return true + }, + handleMouseDown: function(B) { + if (this.dragging) { + return + } + var A = this.getDragData(B); + if (A && this.onBeforeDrag(A, B) !== false) { + this.dragData = A; + this.proxy.stop(); + Ext.dd.DragSource.superclass.handleMouseDown.apply(this, arguments) + } + }, + onBeforeDrag: function(A, B) { + return true + }, + onStartDrag: Ext.emptyFn, + startDrag: function(A, B) { + this.proxy.reset(); + this.dragging = true; + this.proxy.update(""); + this.onInitDrag(A, B); + this.proxy.show() + }, + onInitDrag: function(A, C) { + var B = this.el.dom.cloneNode(true); + B.id = Ext.id(); + this.proxy.update(B); + this.onStartDrag(A, C); + return true + }, + getProxy: function() { + return this.proxy + }, + hideProxy: function() { + this.proxy.hide(); + this.proxy.reset(true); + this.dragging = false + }, + triggerCacheRefresh: function() { + Ext.dd.DDM.refreshCache(this.groups) + }, + b4EndDrag: function(A) {}, + endDrag: function(A) { + this.onEndDrag(this.dragData, A) + }, + onEndDrag: function(A, B) {}, + autoOffset: function(A, B) { + this.setDelta(-12, -20) + } +}); +Ext.dd.DropTarget = function(B, A) { + this.el = Ext.get(B); + Ext.apply(this, A); + if (this.containerScroll) { + Ext.dd.ScrollManager.register(this.el) + } + Ext.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group, { + isTarget: true + }) +}; +Ext.extend(Ext.dd.DropTarget, Ext.dd.DDTarget, { + dropAllowed: "x-dd-drop-ok", + dropNotAllowed: "x-dd-drop-nodrop", + isTarget: true, + isNotifyTarget: true, + notifyEnter: function(A, C, B) { + if (this.overClass) { + this.el.addClass(this.overClass) + } + return this.dropAllowed + }, + notifyOver: function(A, C, B) { + return this.dropAllowed + }, + notifyOut: function(A, C, B) { + if (this.overClass) { + this.el.removeClass(this.overClass) + } + }, + notifyDrop: function(A, C, B) { + return false + } +}); +Ext.dd.DragZone = function(B, A) { + Ext.dd.DragZone.superclass.constructor.call(this, B, A); + if (this.containerScroll) { + Ext.dd.ScrollManager.register(this.el) + } +}; +Ext.extend(Ext.dd.DragZone, Ext.dd.DragSource, { + getDragData: function(A) { + return Ext.dd.Registry.getHandleFromEvent(A) + }, + onInitDrag: function(A, B) { + this.proxy.update(this.dragData.ddel.cloneNode(true)); + this.onStartDrag(A, B); + return true + }, + afterRepair: function() { + if (Ext.enableFx) { + Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9") + } + this.dragging = false + }, + getRepairXY: function(A) { + return Ext.Element.fly(this.dragData.ddel).getXY() + } +}); +Ext.dd.DropZone = function(B, A) { + Ext.dd.DropZone.superclass.constructor.call(this, B, A) +}; +Ext.extend(Ext.dd.DropZone, Ext.dd.DropTarget, { + getTargetFromEvent: function(A) { + return Ext.dd.Registry.getTargetFromEvent(A) + }, + onNodeEnter: function(D, A, C, B) {}, + onNodeOver: function(D, A, C, B) { + return this.dropAllowed + }, + onNodeOut: function(D, A, C, B) {}, + onNodeDrop: function(D, A, C, B) { + return false + }, + onContainerOver: function(A, C, B) { + return this.dropNotAllowed + }, + onContainerDrop: function(A, C, B) { + return false + }, + notifyEnter: function(A, C, B) { + return this.dropNotAllowed + }, + notifyOver: function(A, C, B) { + var D = this.getTargetFromEvent(C); + if (!D) { + if (this.lastOverNode) { + this.onNodeOut(this.lastOverNode, A, C, B); + this.lastOverNode = null + } + return this.onContainerOver(A, C, B) + } + if (this.lastOverNode != D) { + if (this.lastOverNode) { + this.onNodeOut(this.lastOverNode, A, C, B) + } + this.onNodeEnter(D, A, C, B); + this.lastOverNode = D + } + return this.onNodeOver(D, A, C, B) + }, + notifyOut: function(A, C, B) { + if (this.lastOverNode) { + this.onNodeOut(this.lastOverNode, A, C, B); + this.lastOverNode = null + } + }, + notifyDrop: function(A, C, B) { + if (this.lastOverNode) { + this.onNodeOut(this.lastOverNode, A, C, B); + this.lastOverNode = null + } + var D = this.getTargetFromEvent(C); + return D ? this.onNodeDrop(D, A, C, B) : this.onContainerDrop(A, C, B) + }, + triggerCacheRefresh: function() { + Ext.dd.DDM.refreshCache(this.groups) + } +}); +Ext.data.SortTypes = { + none: function(A) { + return A + }, + stripTagsRE: /<\/?[^>]+>/gi, + asText: function(A) { + return String(A).replace(this.stripTagsRE, "") + }, + asUCText: function(A) { + return String(A).toUpperCase().replace(this.stripTagsRE, "") + }, + asUCString: function(A) { + return String(A).toUpperCase() + }, + asDate: function(A) { + if (!A) { + return 0 + } + if (Ext.isDate(A)) { + return A.getTime() + } + return Date.parse(String(A)) + }, + asFloat: function(A) { + var B = parseFloat(String(A).replace(/,/g, "")); + if (isNaN(B)) { + B = 0 + } + return B + }, + asInt: function(A) { + var B = parseInt(String(A).replace(/,/g, "")); + if (isNaN(B)) { + B = 0 + } + return B + } +}; +Ext.data.Record = function(A, B) { + this.id = (B || B === 0) ? B : ++Ext.data.Record.AUTO_ID; + this.data = A +}; +Ext.data.Record.create = function(E) { + var C = Ext.extend(Ext.data.Record, {}); + var D = C.prototype; + D.fields = new Ext.util.MixedCollection(false, function(F) { + return F.name + }); + for (var B = 0, A = E.length; B < A; B++) { + D.fields.add(new Ext.data.Field(E[B])) + } + C.getField = function(F) { + return D.fields.get(F) + }; + return C +}; +Ext.data.Record.AUTO_ID = 1000; +Ext.data.Record.EDIT = "edit"; +Ext.data.Record.REJECT = "reject"; +Ext.data.Record.COMMIT = "commit"; +Ext.data.Record.prototype = { + dirty: false, + editing: false, + error: null, + modified: null, + join: function(A) { + this.store = A + }, + set: function(A, B) { + if (String(this.data[A]) == String(B)) { + return + } + this.dirty = true; + if (!this.modified) { + this.modified = {} + } + if (typeof this.modified[A] == "undefined") { + this.modified[A] = this.data[A] + } + this.data[A] = B; + if (!this.editing && this.store) { + this.store.afterEdit(this) + } + }, + get: function(A) { + return this.data[A] + }, + beginEdit: function() { + this.editing = true; + this.modified = {} + }, + cancelEdit: function() { + this.editing = false; + delete this.modified + }, + endEdit: function() { + this.editing = false; + if (this.dirty && this.store) { + this.store.afterEdit(this) + } + }, + reject: function(B) { + var A = this.modified; + for (var C in A) { + if (typeof A[C] != "function") { + this.data[C] = A[C] + } + } + this.dirty = false; + delete this.modified; + this.editing = false; + if (this.store && B !== true) { + this.store.afterReject(this) + } + }, + commit: function(A) { + this.dirty = false; + delete this.modified; + this.editing = false; + if (this.store && A !== true) { + this.store.afterCommit(this) + } + }, + getChanges: function() { + var A = this.modified, + B = {}; + for (var C in A) { + if (A.hasOwnProperty(C)) { + B[C] = this.data[C] + } + } + return B + }, + hasError: function() { + return this.error != null + }, + clearError: function() { + this.error = null + }, + copy: function(A) { + return new this.constructor(Ext.apply({}, this.data), A || this.id) + }, + isModified: function(A) { + return this.modified && this.modified.hasOwnProperty(A) + } +}; +Ext.StoreMgr = Ext.apply(new Ext.util.MixedCollection(), { + register: function() { + for (var A = 0, B; B = arguments[A]; A++) { + this.add(B) + } + }, + unregister: function() { + for (var A = 0, B; B = arguments[A]; A++) { + this.remove(this.lookup(B)) + } + }, + lookup: function(A) { + return typeof A == "object" ? A : this.get(A) + }, + getKey: function(A) { + return A.storeId || A.id + } +}); +Ext.data.Store = function(A) { + this.data = new Ext.util.MixedCollection(false); + this.data.getKey = function(B) { + return B.id + }; + this.baseParams = {}; + this.paramNames = { + "start": "start", + "limit": "limit", + "sort": "sort", + "dir": "dir" + }; + if (A && A.data) { + this.inlineData = A.data; + delete A.data + } + Ext.apply(this, A); + if (this.url && !this.proxy) { + this.proxy = new Ext.data.HttpProxy({ + url: this.url + }) + } + if (this.reader) { + if (!this.recordType) { + this.recordType = this.reader.recordType + } + if (this.reader.onMetaChange) { + this.reader.onMetaChange = this.onMetaChange.createDelegate(this) + } + } + if (this.recordType) { + this.fields = this.recordType.prototype.fields + } + this.modified = []; + this.addEvents("datachanged", "metachange", "add", "remove", "update", "clear", "beforeload", "load", "loadexception"); + if (this.proxy) { + this.relayEvents(this.proxy, ["loadexception"]) + } + this.sortToggle = {}; + if (this.sortInfo) { + this.setDefaultSort(this.sortInfo.field, this.sortInfo.direction) + } + Ext.data.Store.superclass.constructor.call(this); + if (this.storeId || this.id) { + Ext.StoreMgr.register(this) + } + if (this.inlineData) { + this.loadData(this.inlineData); + delete this.inlineData + } else { + if (this.autoLoad) { + this.load.defer(10, this, [typeof this.autoLoad == "object" ? this.autoLoad : undefined]) + } + } +}; +Ext.extend(Ext.data.Store, Ext.util.Observable, { + remoteSort: false, + pruneModifiedRecords: false, + lastOptions: null, + destroy: function() { + if (this.id) { + Ext.StoreMgr.unregister(this) + } + this.data = null; + this.purgeListeners() + }, + add: function(B) { + B = [].concat(B); + if (B.length < 1) { + return + } + for (var D = 0, A = B.length; D < A; D++) { + B[D].join(this) + } + var C = this.data.length; + this.data.addAll(B); + if (this.snapshot) { + this.snapshot.addAll(B) + } + this.fireEvent("add", this, B, C) + }, + addSorted: function(A) { + var B = this.findInsertIndex(A); + this.insert(B, A) + }, + remove: function(A) { + var B = this.data.indexOf(A); + this.data.removeAt(B); + if (this.pruneModifiedRecords) { + this.modified.remove(A) + } + if (this.snapshot) { + this.snapshot.remove(A) + } + this.fireEvent("remove", this, A, B) + }, + removeAll: function() { + this.data.clear(); + if (this.snapshot) { + this.snapshot.clear() + } + if (this.pruneModifiedRecords) { + this.modified = [] + } + this.fireEvent("clear", this) + }, + insert: function(C, B) { + B = [].concat(B); + for (var D = 0, A = B.length; D < A; D++) { + this.data.insert(C, B[D]); + B[D].join(this) + } + this.fireEvent("add", this, B, C) + }, + indexOf: function(A) { + return this.data.indexOf(A) + }, + indexOfId: function(A) { + return this.data.indexOfKey(A) + }, + getById: function(A) { + return this.data.key(A) + }, + getAt: function(A) { + return this.data.itemAt(A) + }, + getRange: function(B, A) { + return this.data.getRange(B, A) + }, + storeOptions: function(A) { + A = Ext.apply({}, A); + delete A.callback; + delete A.scope; + this.lastOptions = A + }, + load: function(B) { + B = B || {}; + if (this.fireEvent("beforeload", this, B) !== false) { + this.storeOptions(B); + var C = Ext.apply(B.params || {}, this.baseParams); + if (this.sortInfo && this.remoteSort) { + var A = this.paramNames; + C[A["sort"]] = this.sortInfo.field; + C[A["dir"]] = this.sortInfo.direction + } + this.proxy.load(C, this.reader, this.loadRecords, this, B); + return true + } else { + return false + } + }, + reload: function(A) { + this.load(Ext.applyIf(A || {}, this.lastOptions)) + }, + loadRecords: function(G, B, F) { + if (!G || F === false) { + if (F !== false) { + this.fireEvent("load", this, [], B) + } + if (B.callback) { + B.callback.call(B.scope || this, [], B, false) + } + return + } + var E = G.records, + D = G.totalRecords || E.length; + if (!B || B.add !== true) { + if (this.pruneModifiedRecords) { + this.modified = [] + } + for (var C = 0, A = E.length; C < A; C++) { + E[C].join(this) + } + if (this.snapshot) { + this.data = this.snapshot; + delete this.snapshot + } + this.data.clear(); + this.data.addAll(E); + this.totalLength = D; + this.applySort(); + this.fireEvent("datachanged", this) + } else { + this.totalLength = Math.max(D, this.data.length + E.length); + this.add(E) + } + this.fireEvent("load", this, E, B); + if (B.callback) { + B.callback.call(B.scope || this, E, B, true) + } + }, + loadData: function(C, A) { + var B = this.reader.readRecords(C); + this.loadRecords(B, { + add: A + }, true) + }, + getCount: function() { + return this.data.length || 0 + }, + getTotalCount: function() { + return this.totalLength || 0 + }, + getSortState: function() { + return this.sortInfo + }, + applySort: function() { + if (this.sortInfo && !this.remoteSort) { + var A = this.sortInfo, + B = A.field; + this.sortData(B, A.direction) + } + }, + sortData: function(C, D) { + D = D || "ASC"; + var A = this.fields.get(C).sortType; + var B = function(F, E) { + var H = A(F.data[C]), + G = A(E.data[C]); + return H > G ? 1 : (H < G ? -1 : 0) + }; + this.data.sort(D, B); + if (this.snapshot && this.snapshot != this.data) { + this.snapshot.sort(D, B) + } + }, + setDefaultSort: function(B, A) { + A = A ? A.toUpperCase() : "ASC"; + this.sortInfo = { + field: B, + direction: A + }; + this.sortToggle[B] = A + }, + sort: function(E, C) { + var D = this.fields.get(E); + if (!D) { + return false + } + if (!C) { + if (this.sortInfo && this.sortInfo.field == D.name) { + C = (this.sortToggle[D.name] || "ASC").toggle("ASC", "DESC") + } else { + C = D.sortDir + } + } + var B = (this.sortToggle) ? this.sortToggle[D.name] : null; + var A = (this.sortInfo) ? this.sortInfo : null; + this.sortToggle[D.name] = C; + this.sortInfo = { + field: D.name, + direction: C + }; + if (!this.remoteSort) { + this.applySort(); + this.fireEvent("datachanged", this) + } else { + if (!this.load(this.lastOptions)) { + if (B) { + this.sortToggle[D.name] = B + } + if (A) { + this.sortInfo = A + } + } + } + }, + each: function(B, A) { + this.data.each(B, A) + }, + getModifiedRecords: function() { + return this.modified + }, + createFilterFn: function(C, B, D, A) { + if (Ext.isEmpty(B, false)) { + return false + } + B = this.data.createValueMatcher(B, D, A); + return function(E) { + return B.test(E.data[C]) + } + }, + sum: function(E, F, A) { + var C = this.data.items, + B = 0; + F = F || 0; + A = (A || A === 0) ? A : C.length - 1; + for (var D = F; D <= A; D++) { + B += (C[D].data[E] || 0) + } + return B + }, + filter: function(D, C, E, A) { + var B = this.createFilterFn(D, C, E, A); + return B ? this.filterBy(B) : this.clearFilter() + }, + filterBy: function(B, A) { + this.snapshot = this.snapshot || this.data; + this.data = this.queryBy(B, A || this); + this.fireEvent("datachanged", this) + }, + query: function(D, C, E, A) { + var B = this.createFilterFn(D, C, E, A); + return B ? this.queryBy(B) : this.data.clone() + }, + queryBy: function(B, A) { + var C = this.snapshot || this.data; + return C.filterBy(B, A || this) + }, + find: function(D, C, F, E, A) { + var B = this.createFilterFn(D, C, E, A); + return B ? this.data.findIndexBy(B, null, F) : -1 + }, + findBy: function(B, A, C) { + return this.data.findIndexBy(B, A, C) + }, + collect: function(G, H, B) { + var F = (B === true && this.snapshot) ? this.snapshot.items : this.data.items; + var I, J, A = [], + C = {}; + for (var D = 0, E = F.length; D < E; D++) { + I = F[D].data[G]; + J = String(I); + if ((H || !Ext.isEmpty(I)) && !C[J]) { + C[J] = true; + A[A.length] = I + } + } + return A + }, + clearFilter: function(A) { + if (this.isFiltered()) { + this.data = this.snapshot; + delete this.snapshot; + if (A !== true) { + this.fireEvent("datachanged", this) + } + } + }, + isFiltered: function() { + return this.snapshot && this.snapshot != this.data + }, + afterEdit: function(A) { + if (this.modified.indexOf(A) == -1) { + this.modified.push(A) + } + this.fireEvent("update", this, A, Ext.data.Record.EDIT) + }, + afterReject: function(A) { + this.modified.remove(A); + this.fireEvent("update", this, A, Ext.data.Record.REJECT) + }, + afterCommit: function(A) { + this.modified.remove(A); + this.fireEvent("update", this, A, Ext.data.Record.COMMIT) + }, + commitChanges: function() { + var B = this.modified.slice(0); + this.modified = []; + for (var C = 0, A = B.length; C < A; C++) { + B[C].commit() + } + }, + rejectChanges: function() { + var B = this.modified.slice(0); + this.modified = []; + for (var C = 0, A = B.length; C < A; C++) { + B[C].reject() + } + }, + onMetaChange: function(B, A, C) { + this.recordType = A; + this.fields = A.prototype.fields; + delete this.snapshot; + this.sortInfo = B.sortInfo; + this.modified = []; + this.fireEvent("metachange", this, this.reader.meta) + }, + findInsertIndex: function(A) { + this.suspendEvents(); + var C = this.data.clone(); + this.data.add(A); + this.applySort(); + var B = this.data.indexOf(A); + this.data = C; + this.resumeEvents(); + return B + } +}); +Ext.data.SimpleStore = function(A) { + Ext.data.SimpleStore.superclass.constructor.call(this, Ext.apply(A, { + reader: new Ext.data.ArrayReader({ + id: A.id + }, Ext.data.Record.create(A.fields)) + })) +}; +Ext.extend(Ext.data.SimpleStore, Ext.data.Store, { + loadData: function(E, B) { + if (this.expandData === true) { + var D = []; + for (var C = 0, A = E.length; C < A; C++) { + D[D.length] = [E[C]] + } + E = D + } + Ext.data.SimpleStore.superclass.loadData.call(this, E, B) + } +}); +Ext.data.JsonStore = function(A) { + Ext.data.JsonStore.superclass.constructor.call(this, Ext.apply(A, { + proxy: !A.data ? new Ext.data.HttpProxy({ + url: A.url + }) : undefined, + reader: new Ext.data.JsonReader(A, A.fields) + })) +}; +Ext.extend(Ext.data.JsonStore, Ext.data.Store); +Ext.data.Field = function(D) { + if (typeof D == "string") { + D = { + name: D + } + } + Ext.apply(this, D); + if (!this.type) { + this.type = "auto" + } + var C = Ext.data.SortTypes; + if (typeof this.sortType == "string") { + this.sortType = C[this.sortType] + } + if (!this.sortType) { + switch (this.type) { + case "string": + this.sortType = C.asUCString; + break; + case "date": + this.sortType = C.asDate; + break; + default: + this.sortType = C.none + } + } + var E = /[\$,%]/g; + if (!this.convert) { + var B, A = this.dateFormat; + switch (this.type) { + case "": + case "auto": + case undefined: + B = function(F) { + return F + }; + break; + case "string": + B = function(F) { + return (F === undefined || F === null) ? "" : String(F) + }; + break; + case "int": + B = function(F) { + return F !== undefined && F !== null && F !== "" ? parseInt(String(F).replace(E, ""), 10) : "" + }; + break; + case "float": + B = function(F) { + return F !== undefined && F !== null && F !== "" ? parseFloat(String(F).replace(E, ""), 10) : "" + }; + break; + case "bool": + case "boolean": + B = function(F) { + return F === true || F === "true" || F == 1 + }; + break; + case "date": + B = function(G) { + if (!G) { + return "" + } + if (Ext.isDate(G)) { + return G + } + if (A) { + if (A == "timestamp") { + return new Date(G * 1000) + } + if (A == "time") { + return new Date(parseInt(G, 10)) + } + return Date.parseDate(G, A) + } + var F = Date.parse(G); + return F ? new Date(F) : null + }; + break + } + this.convert = B + } +}; +Ext.data.Field.prototype = { + dateFormat: null, + defaultValue: "", + mapping: null, + sortType: null, + sortDir: "ASC" +}; +Ext.data.DataReader = function(A, B) { + this.meta = A; + this.recordType = Ext.isArray(B) ? Ext.data.Record.create(B) : B +}; +Ext.data.DataReader.prototype = {}; +Ext.data.DataProxy = function() { + this.addEvents("beforeload", "load", "loadexception"); + Ext.data.DataProxy.superclass.constructor.call(this) +}; +Ext.extend(Ext.data.DataProxy, Ext.util.Observable); +Ext.data.MemoryProxy = function(A) { + Ext.data.MemoryProxy.superclass.constructor.call(this); + this.data = A +}; +Ext.extend(Ext.data.MemoryProxy, Ext.data.DataProxy, { + load: function(F, C, G, D, B) { + F = F || {}; + var A; + try { + A = C.readRecords(this.data) + } catch (E) { + this.fireEvent("loadexception", this, B, null, E); + G.call(D, null, B, false); + return + } + G.call(D, A, B, true) + }, + update: function(B, A) {} +}); +Ext.data.HttpProxy = function(A) { + Ext.data.HttpProxy.superclass.constructor.call(this); + this.conn = A; + this.useAjax = !A || !A.events +}; +Ext.extend(Ext.data.HttpProxy, Ext.data.DataProxy, { + getConnection: function() { + return this.useAjax ? Ext.Ajax : this.conn + }, + load: function(E, B, F, C, A) { + if (this.fireEvent("beforeload", this, E) !== false) { + var D = { + params: E || {}, + request: { + callback: F, + scope: C, + arg: A + }, + reader: B, + callback: this.loadResponse, + scope: this + }; + if (this.useAjax) { + Ext.applyIf(D, this.conn); + if (this.activeRequest) { + Ext.Ajax.abort(this.activeRequest) + } + this.activeRequest = Ext.Ajax.request(D) + } else { + this.conn.request(D) + } + } else { + F.call(C || this, null, A, false) + } + }, + loadResponse: function(E, D, B) { + delete this.activeRequest; + if (!D) { + this.fireEvent("loadexception", this, E, B); + E.request.callback.call(E.request.scope, null, E.request.arg, false); + return + } + var A; + try { + A = E.reader.read(B) + } catch (C) { + this.fireEvent("loadexception", this, E, B, C); + E.request.callback.call(E.request.scope, null, E.request.arg, false); + return + } + this.fireEvent("load", this, E, E.request.arg); + E.request.callback.call(E.request.scope, A, E.request.arg, true) + }, + update: function(A) {}, + updateResponse: function(A) {} +}); +Ext.data.ScriptTagProxy = function(A) { + Ext.data.ScriptTagProxy.superclass.constructor.call(this); + Ext.apply(this, A); + this.head = document.getElementsByTagName("head")[0] +}; +Ext.data.ScriptTagProxy.TRANS_ID = 1000; +Ext.extend(Ext.data.ScriptTagProxy, Ext.data.DataProxy, { + timeout: 30000, + callbackParam: "callback", + nocache: true, + load: function(E, F, H, I, J) { + if (this.fireEvent("beforeload", this, E) !== false) { + var C = Ext.urlEncode(Ext.apply(E, this.extraParams)); + var B = this.url; + B += (B.indexOf("?") != -1 ? "&" : "?") + C; + if (this.nocache) { + B += "&_dc=" + (new Date().getTime()) + } + var A = ++Ext.data.ScriptTagProxy.TRANS_ID; + var K = { + id: A, + cb: "stcCallback" + A, + scriptId: "stcScript" + A, + params: E, + arg: J, + url: B, + callback: H, + scope: I, + reader: F + }; + var D = this; + window[K.cb] = function(L) { + D.handleResponse(L, K) + }; + B += String.format("&{0}={1}", this.callbackParam, K.cb); + if (this.autoAbort !== false) { + this.abort() + } + K.timeoutId = this.handleFailure.defer(this.timeout, this, [K]); + var G = document.createElement("script"); + G.setAttribute("src", B); + G.setAttribute("type", "text/javascript"); + G.setAttribute("id", K.scriptId); + this.head.appendChild(G); + this.trans = K + } else { + H.call(I || this, null, J, false) + } + }, + isLoading: function() { + return this.trans ? true : false + }, + abort: function() { + if (this.isLoading()) { + this.destroyTrans(this.trans) + } + }, + destroyTrans: function(B, A) { + this.head.removeChild(document.getElementById(B.scriptId)); + clearTimeout(B.timeoutId); + if (A) { + window[B.cb] = undefined; + try { + delete window[B.cb] + } catch (C) {} + } else { + window[B.cb] = function() { + window[B.cb] = undefined; + try { + delete window[B.cb] + } catch (D) {} + } + } + }, + handleResponse: function(D, B) { + this.trans = false; + this.destroyTrans(B, true); + var A; + try { + A = B.reader.readRecords(D) + } catch (C) { + this.fireEvent("loadexception", this, D, B.arg, C); + B.callback.call(B.scope || window, null, B.arg, false); + return + } + this.fireEvent("load", this, D, B.arg); + B.callback.call(B.scope || window, A, B.arg, true) + }, + handleFailure: function(A) { + this.trans = false; + this.destroyTrans(A, false); + this.fireEvent("loadexception", this, null, A.arg); + A.callback.call(A.scope || window, null, A.arg, false) + } +}); +Ext.data.JsonReader = function(A, B) { + A = A || {}; + Ext.data.JsonReader.superclass.constructor.call(this, A, B || A.fields) +}; +Ext.extend(Ext.data.JsonReader, Ext.data.DataReader, { + read: function(response) { + var json = response.responseText; + var o = eval("(" + json + ")"); + if (!o) { + throw { + message: "JsonReader.read: Json object not found" + } + } + if (o.metaData) { + delete this.ef; + this.meta = o.metaData; + this.recordType = Ext.data.Record.create(o.metaData.fields); + this.onMetaChange(this.meta, this.recordType, o) + } + return this.readRecords(o) + }, + onMetaChange: function(A, C, B) {}, + simpleAccess: function(B, A) { + return B[A] + }, + getJsonAccessor: function() { + var A = /[\[\.]/; + return function(C) { + try { + return (A.test(C)) ? new Function("obj", "return obj." + C) : function(D) { + return D[C] + } + } catch (B) {} + return Ext.emptyFn + } + }(), + readRecords: function(K) { + this.jsonData = K; + var H = this.meta, + A = this.recordType, + R = A.prototype.fields, + F = R.items, + E = R.length; + if (!this.ef) { + if (H.totalProperty) { + this.getTotal = this.getJsonAccessor(H.totalProperty) + } + if (H.successProperty) { + this.getSuccess = this.getJsonAccessor(H.successProperty) + } + this.getRoot = H.root ? this.getJsonAccessor(H.root) : function(U) { + return U + }; + if (H.id) { + var Q = this.getJsonAccessor(H.id); + this.getId = function(V) { + var U = Q(V); + return (U === undefined || U === "") ? null : U + } + } else { + this.getId = function() { + return null + } + } + this.ef = []; + for (var O = 0; O < E; O++) { + R = F[O]; + var T = (R.mapping !== undefined && R.mapping !== null) ? R.mapping : R.name; + this.ef[O] = this.getJsonAccessor(T) + } + } + var M = this.getRoot(K), + S = M.length, + I = S, + D = true; + if (H.totalProperty) { + var G = parseInt(this.getTotal(K), 10); + if (!isNaN(G)) { + I = G + } + } + if (H.successProperty) { + var G = this.getSuccess(K); + if (G === false || G === "false") { + D = false + } + } + var P = []; + for (var O = 0; O < S; O++) { + var L = M[O]; + var B = {}; + var J = this.getId(L); + for (var N = 0; N < E; N++) { + R = F[N]; + var G = this.ef[N](L); + B[R.name] = R.convert((G !== undefined) ? G : R.defaultValue, L) + } + var C = new A(B, J); + C.json = L; + P[O] = C + } + return { + success: D, + records: P, + totalRecords: I + } + } +}); +Ext.data.XmlReader = function(A, B) { + A = A || {}; + Ext.data.XmlReader.superclass.constructor.call(this, A, B || A.fields) +}; +Ext.extend(Ext.data.XmlReader, Ext.data.DataReader, { + read: function(A) { + var B = A.responseXML; + if (!B) { + throw { + message: "XmlReader.read: XML Document not available" + } + } + return this.readRecords(B) + }, + readRecords: function(T) { + this.xmlData = T; + var N = T.documentElement || T; + var I = Ext.DomQuery; + var B = this.recordType, + L = B.prototype.fields; + var D = this.meta.id; + var G = 0, + E = true; + if (this.meta.totalRecords) { + G = I.selectNumber(this.meta.totalRecords, N, 0) + } + if (this.meta.success) { + var K = I.selectValue(this.meta.success, N, true); + E = K !== false && K !== "false" + } + var Q = []; + var U = I.select(this.meta.record, N); + for (var P = 0, R = U.length; P < R; P++) { + var M = U[P]; + var A = {}; + var J = D ? I.selectValue(D, M) : undefined; + for (var O = 0, H = L.length; O < H; O++) { + var S = L.items[O]; + var F = I.selectValue(S.mapping || S.name, M, S.defaultValue); + F = S.convert(F, M); + A[S.name] = F + } + var C = new B(A, J); + C.node = M; + Q[Q.length] = C + } + return { + success: E, + records: Q, + totalRecords: G || Q.length + } + } +}); +Ext.data.ArrayReader = Ext.extend(Ext.data.JsonReader, { + readRecords: function(C) { + var B = this.meta ? this.meta.id : null; + var G = this.recordType, + K = G.prototype.fields; + var E = []; + var M = C; + for (var I = 0; I < M.length; I++) { + var D = M[I]; + var O = {}; + var A = ((B || B === 0) && D[B] !== undefined && D[B] !== "" ? D[B] : null); + for (var H = 0, P = K.length; H < P; H++) { + var L = K.items[H]; + var F = L.mapping !== undefined && L.mapping !== null ? L.mapping : H; + var N = D[F] !== undefined ? D[F] : L.defaultValue; + N = L.convert(N, D); + O[L.name] = N + } + var J = new G(O, A); + J.json = D; + E[E.length] = J + } + return { + records: E, + totalRecords: E.length + } + } +}); +Ext.data.Tree = function(A) { + this.nodeHash = {}; + this.root = null; + if (A) { + this.setRootNode(A) + } + this.addEvents("append", "remove", "move", "insert", "beforeappend", "beforeremove", "beforemove", "beforeinsert"); + Ext.data.Tree.superclass.constructor.call(this) +}; +Ext.extend(Ext.data.Tree, Ext.util.Observable, { + pathSeparator: "/", + proxyNodeEvent: function() { + return this.fireEvent.apply(this, arguments) + }, + getRootNode: function() { + return this.root + }, + setRootNode: function(A) { + this.root = A; + A.ownerTree = this; + A.isRoot = true; + this.registerNode(A); + return A + }, + getNodeById: function(A) { + return this.nodeHash[A] + }, + registerNode: function(A) { + this.nodeHash[A.id] = A + }, + unregisterNode: function(A) { + delete this.nodeHash[A.id] + }, + toString: function() { + return "[Tree" + (this.id ? " " + this.id : "") + "]" + } +}); +Ext.data.Node = function(A) { + this.attributes = A || {}; + this.leaf = this.attributes.leaf; + this.id = this.attributes.id; + if (!this.id) { + this.id = Ext.id(null, "ynode-"); + this.attributes.id = this.id + } + this.childNodes = []; + if (!this.childNodes.indexOf) { + this.childNodes.indexOf = function(D) { + for (var C = 0, B = this.length; C < B; C++) { + if (this[C] == D) { + return C + } + } + return -1 + } + } + this.parentNode = null; + this.firstChild = null; + this.lastChild = null; + this.previousSibling = null; + this.nextSibling = null; + this.addEvents({ + "append": true, + "remove": true, + "move": true, + "insert": true, + "beforeappend": true, + "beforeremove": true, + "beforemove": true, + "beforeinsert": true + }); + this.listeners = this.attributes.listeners; + Ext.data.Node.superclass.constructor.call(this) +}; +Ext.extend(Ext.data.Node, Ext.util.Observable, { + fireEvent: function(B) { + if (Ext.data.Node.superclass.fireEvent.apply(this, arguments) === false) { + return false + } + var A = this.getOwnerTree(); + if (A) { + if (A.proxyNodeEvent.apply(A, arguments) === false) { + return false + } + } + return true + }, + isLeaf: function() { + return this.leaf === true + }, + setFirstChild: function(A) { + this.firstChild = A + }, + setLastChild: function(A) { + this.lastChild = A + }, + isLast: function() { + return (!this.parentNode ? true : this.parentNode.lastChild == this) + }, + isFirst: function() { + return (!this.parentNode ? true : this.parentNode.firstChild == this) + }, + hasChildNodes: function() { + return !this.isLeaf() && this.childNodes.length > 0 + }, + appendChild: function(E) { + var F = false; + if (Ext.isArray(E)) { + F = E + } else { + if (arguments.length > 1) { + F = arguments + } + } + if (F) { + for (var D = 0, A = F.length; D < A; D++) { + this.appendChild(F[D]) + } + } else { + if (this.fireEvent("beforeappend", this.ownerTree, this, E) === false) { + return false + } + var B = this.childNodes.length; + var C = E.parentNode; + if (C) { + if (E.fireEvent("beforemove", E.getOwnerTree(), E, C, this, B) === false) { + return false + } + C.removeChild(E) + } + B = this.childNodes.length; + if (B == 0) { + this.setFirstChild(E) + } + this.childNodes.push(E); + E.parentNode = this; + var G = this.childNodes[B - 1]; + if (G) { + E.previousSibling = G; + G.nextSibling = E + } else { + E.previousSibling = null + } + E.nextSibling = null; + this.setLastChild(E); + E.setOwnerTree(this.getOwnerTree()); + this.fireEvent("append", this.ownerTree, this, E, B); + if (C) { + E.fireEvent("move", this.ownerTree, E, C, this, B) + } + return E + } + }, + removeChild: function(B) { + var A = this.childNodes.indexOf(B); + if (A == -1) { + return false + } + if (this.fireEvent("beforeremove", this.ownerTree, this, B) === false) { + return false + } + this.childNodes.splice(A, 1); + if (B.previousSibling) { + B.previousSibling.nextSibling = B.nextSibling + } + if (B.nextSibling) { + B.nextSibling.previousSibling = B.previousSibling + } + if (this.firstChild == B) { + this.setFirstChild(B.nextSibling) + } + if (this.lastChild == B) { + this.setLastChild(B.previousSibling) + } + B.setOwnerTree(null); + B.parentNode = null; + B.previousSibling = null; + B.nextSibling = null; + this.fireEvent("remove", this.ownerTree, this, B); + return B + }, + insertBefore: function(D, A) { + if (!A) { + return this.appendChild(D) + } + if (D == A) { + return false + } + if (this.fireEvent("beforeinsert", this.ownerTree, this, D, A) === false) { + return false + } + var B = this.childNodes.indexOf(A); + var C = D.parentNode; + var E = B; + if (C == this && this.childNodes.indexOf(D) < B) { + E-- + } + if (C) { + if (D.fireEvent("beforemove", D.getOwnerTree(), D, C, this, B, A) === false) { + return false + } + C.removeChild(D) + } + if (E == 0) { + this.setFirstChild(D) + } + this.childNodes.splice(E, 0, D); + D.parentNode = this; + var F = this.childNodes[E - 1]; + if (F) { + D.previousSibling = F; + F.nextSibling = D + } else { + D.previousSibling = null + } + D.nextSibling = A; + A.previousSibling = D; + D.setOwnerTree(this.getOwnerTree()); + this.fireEvent("insert", this.ownerTree, this, D, A); + if (C) { + D.fireEvent("move", this.ownerTree, D, C, this, E, A) + } + return D + }, + remove: function() { + this.parentNode.removeChild(this); + return this + }, + item: function(A) { + return this.childNodes[A] + }, + replaceChild: function(A, B) { + this.insertBefore(A, B); + this.removeChild(B); + return B + }, + indexOf: function(A) { + return this.childNodes.indexOf(A) + }, + getOwnerTree: function() { + if (!this.ownerTree) { + var A = this; + while (A) { + if (A.ownerTree) { + this.ownerTree = A.ownerTree; + break + } + A = A.parentNode + } + } + return this.ownerTree + }, + getDepth: function() { + var B = 0; + var A = this; + while (A.parentNode) { + ++B; + A = A.parentNode + } + return B + }, + setOwnerTree: function(B) { + if (B != this.ownerTree) { + if (this.ownerTree) { + this.ownerTree.unregisterNode(this) + } + this.ownerTree = B; + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + D[C].setOwnerTree(B) + } + if (B) { + B.registerNode(this) + } + } + }, + getPath: function(B) { + B = B || "id"; + var D = this.parentNode; + var A = [this.attributes[B]]; + while (D) { + A.unshift(D.attributes[B]); + D = D.parentNode + } + var C = this.getOwnerTree().pathSeparator; + return C + A.join(C) + }, + bubble: function(C, B, A) { + var D = this; + while (D) { + if (C.apply(B || D, A || [D]) === false) { + break + } + D = D.parentNode + } + }, + cascade: function(F, E, B) { + if (F.apply(E || this, B || [this]) !== false) { + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + D[C].cascade(F, E, B) + } + } + }, + eachChild: function(F, E, B) { + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + if (F.apply(E || this, B || [D[C]]) === false) { + break + } + } + }, + findChild: function(D, E) { + var C = this.childNodes; + for (var B = 0, A = C.length; B < A; B++) { + if (C[B].attributes[D] == E) { + return C[B] + } + } + return null + }, + findChildBy: function(E, D) { + var C = this.childNodes; + for (var B = 0, A = C.length; B < A; B++) { + if (E.call(D || C[B], C[B]) === true) { + return C[B] + } + } + return null + }, + sort: function(E, D) { + var C = this.childNodes; + var A = C.length; + if (A > 0) { + var F = D ? function() { + E.apply(D, arguments) + } : E; + C.sort(F); + for (var B = 0; B < A; B++) { + var G = C[B]; + G.previousSibling = C[B - 1]; + G.nextSibling = C[B + 1]; + if (B == 0) { + this.setFirstChild(G) + } + if (B == A - 1) { + this.setLastChild(G) + } + } + } + }, + contains: function(A) { + return A.isAncestor(this) + }, + isAncestor: function(A) { + var B = this.parentNode; + while (B) { + if (B == A) { + return true + } + B = B.parentNode + } + return false + }, + toString: function() { + return "[Node" + (this.id ? " " + this.id : "") + "]" + } +}); +Ext.data.GroupingStore = Ext.extend(Ext.data.Store, { + remoteGroup: false, + groupOnSort: false, + clearGrouping: function() { + this.groupField = false; + if (this.remoteGroup) { + if (this.baseParams) { + delete this.baseParams.groupBy + } + this.reload() + } else { + this.applySort(); + this.fireEvent("datachanged", this) + } + }, + groupBy: function(C, B) { + if (this.groupField == C && !B) { + return + } + this.groupField = C; + if (this.remoteGroup) { + if (!this.baseParams) { + this.baseParams = {} + } + this.baseParams["groupBy"] = C + } + if (this.groupOnSort) { + this.sort(C); + return + } + if (this.remoteGroup) { + this.reload() + } else { + var A = this.sortInfo || {}; + if (A.field != C) { + this.applySort() + } else { + this.sortData(C) + } + this.fireEvent("datachanged", this) + } + }, + applySort: function() { + Ext.data.GroupingStore.superclass.applySort.call(this); + if (!this.groupOnSort && !this.remoteGroup) { + var A = this.getGroupState(); + if (A && A != this.sortInfo.field) { + this.sortData(this.groupField) + } + } + }, + applyGrouping: function(A) { + if (this.groupField !== false) { + this.groupBy(this.groupField, true); + return true + } else { + if (A === true) { + this.fireEvent("datachanged", this) + } + return false + } + }, + getGroupState: function() { + return this.groupOnSort && this.groupField !== false ? (this.sortInfo ? this.sortInfo.field : undefined) : this.groupField + } +}); +Ext.ComponentMgr = function() { + var B = new Ext.util.MixedCollection(); + var A = {}; + return { + register: function(C) { + B.add(C) + }, + unregister: function(C) { + B.remove(C) + }, + get: function(C) { + return B.get(C) + }, + onAvailable: function(E, D, C) { + B.on("add", function(F, G) { + if (G.id == E) { + D.call(C || G, G); + B.un("add", D, C) + } + }) + }, + all: B, + registerType: function(D, C) { + A[D] = C; + C.xtype = D + }, + create: function(C, D) { + return new A[C.xtype || D](C) + } + } +}(); +Ext.reg = Ext.ComponentMgr.registerType; +Ext.Component = function(B) { + B = B || {}; + if (B.initialConfig) { + if (B.isAction) { + this.baseAction = B + } + B = B.initialConfig + } else { + if (B.tagName || B.dom || typeof B == "string") { + B = { + applyTo: B, + id: B.id || B + } + } + } + this.initialConfig = B; + Ext.apply(this, B); + this.addEvents("disable", "enable", "beforeshow", "show", "beforehide", "hide", "beforerender", "render", "beforedestroy", "destroy", "beforestaterestore", "staterestore", "beforestatesave", "statesave"); + this.getId(); + Ext.ComponentMgr.register(this); + Ext.Component.superclass.constructor.call(this); + if (this.baseAction) { + this.baseAction.addComponent(this) + } + this.initComponent(); + if (this.plugins) { + if (Ext.isArray(this.plugins)) { + for (var C = 0, A = this.plugins.length; C < A; C++) { + this.plugins[C].init(this) + } + } else { + this.plugins.init(this) + } + } + if (this.stateful !== false) { + this.initState(B) + } + if (this.applyTo) { + this.applyToMarkup(this.applyTo); + delete this.applyTo + } else { + if (this.renderTo) { + this.render(this.renderTo); + delete this.renderTo + } + } +}; +Ext.Component.AUTO_ID = 1000; +Ext.extend(Ext.Component, Ext.util.Observable, { + disabledClass: "x-item-disabled", + allowDomMove: true, + autoShow: false, + hideMode: "display", + hideParent: false, + hidden: false, + disabled: false, + rendered: false, + ctype: "Ext.Component", + actionMode: "el", + getActionEl: function() { + return this[this.actionMode] + }, + initComponent: Ext.emptyFn, + render: function(B, A) { + if (!this.rendered && this.fireEvent("beforerender", this) !== false) { + if (!B && this.el) { + this.el = Ext.get(this.el); + B = this.el.dom.parentNode; + this.allowDomMove = false + } + this.container = Ext.get(B); + if (this.ctCls) { + this.container.addClass(this.ctCls) + } + this.rendered = true; + if (A !== undefined) { + if (typeof A == "number") { + A = this.container.dom.childNodes[A] + } else { + A = Ext.getDom(A) + } + } + this.onRender(this.container, A || null); + if (this.autoShow) { + this.el.removeClass(["x-hidden", "x-hide-" + this.hideMode]) + } + if (this.cls) { + this.el.addClass(this.cls); + delete this.cls + } + if (this.style) { + this.el.applyStyles(this.style); + delete this.style + } + this.fireEvent("render", this); + this.afterRender(this.container); + if (this.hidden) { + this.hide() + } + if (this.disabled) { + this.disable() + } + this.initStateEvents() + } + return this + }, + initState: function(A) { + if (Ext.state.Manager) { + var B = Ext.state.Manager.get(this.stateId || this.id); + if (B) { + if (this.fireEvent("beforestaterestore", this, B) !== false) { + this.applyState(B); + this.fireEvent("staterestore", this, B) + } + } + } + }, + initStateEvents: function() { + if (this.stateEvents) { + for (var A = 0, B; B = this.stateEvents[A]; A++) { + this.on(B, this.saveState, this, { + delay: 100 + }) + } + } + }, + applyState: function(B, A) { + if (B) { + Ext.apply(this, B) + } + }, + getState: function() { + return null + }, + saveState: function() { + if (Ext.state.Manager) { + var A = this.getState(); + if (this.fireEvent("beforestatesave", this, A) !== false) { + Ext.state.Manager.set(this.stateId || this.id, A); + this.fireEvent("statesave", this, A) + } + } + }, + applyToMarkup: function(A) { + this.allowDomMove = false; + this.el = Ext.get(A); + this.render(this.el.dom.parentNode) + }, + addClass: function(A) { + if (this.el) { + this.el.addClass(A) + } else { + this.cls = this.cls ? this.cls + " " + A : A + } + }, + removeClass: function(A) { + if (this.el) { + this.el.removeClass(A) + } else { + if (this.cls) { + this.cls = this.cls.split(" ").remove(A).join(" ") + } + } + }, + onRender: function(B, A) { + if (this.autoEl) { + if (typeof this.autoEl == "string") { + this.el = document.createElement(this.autoEl) + } else { + var C = document.createElement("div"); + Ext.DomHelper.overwrite(C, this.autoEl); + this.el = C.firstChild + } + if (!this.el.id) { + this.el.id = this.getId() + } + } + if (this.el) { + this.el = Ext.get(this.el); + if (this.allowDomMove !== false) { + B.dom.insertBefore(this.el.dom, A) + } + } + }, + getAutoCreate: function() { + var A = typeof this.autoCreate == "object" ? this.autoCreate : Ext.apply({}, this.defaultAutoCreate); + if (this.id && !A.id) { + A.id = this.id + } + return A + }, + afterRender: Ext.emptyFn, + destroy: function() { + if (this.fireEvent("beforedestroy", this) !== false) { + this.beforeDestroy(); + if (this.rendered) { + this.el.removeAllListeners(); + this.el.remove(); + if (this.actionMode == "container") { + this.container.remove() + } + } + this.onDestroy(); + Ext.ComponentMgr.unregister(this); + this.fireEvent("destroy", this); + this.purgeListeners() + } + }, + beforeDestroy: Ext.emptyFn, + onDestroy: Ext.emptyFn, + getEl: function() { + return this.el + }, + getId: function() { + return this.id || (this.id = "ext-comp-" + (++Ext.Component.AUTO_ID)) + }, + getItemId: function() { + return this.itemId || this.getId() + }, + focus: function(B, A) { + if (A) { + this.focus.defer(typeof A == "number" ? A : 10, this, [B, false]); + return + } + if (this.rendered) { + this.el.focus(); + if (B === true) { + this.el.dom.select() + } + } + return this + }, + blur: function() { + if (this.rendered) { + this.el.blur() + } + return this + }, + disable: function() { + if (this.rendered) { + this.onDisable() + } + this.disabled = true; + this.fireEvent("disable", this); + return this + }, + onDisable: function() { + this.getActionEl().addClass(this.disabledClass); + this.el.dom.disabled = true + }, + enable: function() { + if (this.rendered) { + this.onEnable() + } + this.disabled = false; + this.fireEvent("enable", this); + return this + }, + onEnable: function() { + this.getActionEl().removeClass(this.disabledClass); + this.el.dom.disabled = false + }, + setDisabled: function(A) { + this[A ? "disable" : "enable"]() + }, + show: function() { + if (this.fireEvent("beforeshow", this) !== false) { + this.hidden = false; + if (this.autoRender) { + this.render(typeof this.autoRender == "boolean" ? Ext.getBody() : this.autoRender) + } + if (this.rendered) { + this.onShow() + } + this.fireEvent("show", this) + } + return this + }, + onShow: function() { + if (this.hideParent) { + this.container.removeClass("x-hide-" + this.hideMode) + } else { + this.getActionEl().removeClass("x-hide-" + this.hideMode) + } + }, + hide: function() { + if (this.fireEvent("beforehide", this) !== false) { + this.hidden = true; + if (this.rendered) { + this.onHide() + } + this.fireEvent("hide", this) + } + return this + }, + onHide: function() { + if (this.hideParent) { + this.container.addClass("x-hide-" + this.hideMode) + } else { + this.getActionEl().addClass("x-hide-" + this.hideMode) + } + }, + setVisible: function(A) { + if (A) { + this.show() + } else { + this.hide() + } + return this + }, + isVisible: function() { + return this.rendered && this.getActionEl().isVisible() + }, + cloneConfig: function(B) { + B = B || {}; + var C = B.id || Ext.id(); + var A = Ext.applyIf(B, this.initialConfig); + A.id = C; + return new this.constructor(A) + }, + getXType: function() { + return this.constructor.xtype + }, + isXType: function(B, A) { + return !A ? ("/" + this.getXTypes() + "/").indexOf("/" + B + "/") != -1 : this.constructor.xtype == B + }, + getXTypes: function() { + var A = this.constructor; + if (!A.xtypes) { + var C = [], + B = this; + while (B && B.constructor.xtype) { + C.unshift(B.constructor.xtype); + B = B.constructor.superclass + } + A.xtypeChain = C; + A.xtypes = C.join("/") + } + return A.xtypes + }, + findParentBy: function(A) { + for (var B = this.ownerCt; + (B != null) && !A(B, this); B = B.ownerCt) {} + return B || null + }, + findParentByType: function(A) { + return typeof A == "function" ? this.findParentBy(function(B) { + return B.constructor === A + }) : this.findParentBy(function(B) { + return B.constructor.xtype === A + }) + } +}); +Ext.reg("component", Ext.Component); +Ext.Action = function(A) { + this.initialConfig = A; + this.items = [] +}; +Ext.Action.prototype = { + isAction: true, + setText: function(A) { + this.initialConfig.text = A; + this.callEach("setText", [A]) + }, + getText: function() { + return this.initialConfig.text + }, + setIconClass: function(A) { + this.initialConfig.iconCls = A; + this.callEach("setIconClass", [A]) + }, + getIconClass: function() { + return this.initialConfig.iconCls + }, + setDisabled: function(A) { + this.initialConfig.disabled = A; + this.callEach("setDisabled", [A]) + }, + enable: function() { + this.setDisabled(false) + }, + disable: function() { + this.setDisabled(true) + }, + isDisabled: function() { + return this.initialConfig.disabled + }, + setHidden: function(A) { + this.initialConfig.hidden = A; + this.callEach("setVisible", [!A]) + }, + show: function() { + this.setHidden(false) + }, + hide: function() { + this.setHidden(true) + }, + isHidden: function() { + return this.initialConfig.hidden + }, + setHandler: function(B, A) { + this.initialConfig.handler = B; + this.initialConfig.scope = A; + this.callEach("setHandler", [B, A]) + }, + each: function(B, A) { + Ext.each(this.items, B, A) + }, + callEach: function(E, B) { + var D = this.items; + for (var C = 0, A = D.length; C < A; C++) { + D[C][E].apply(D[C], B) + } + }, + addComponent: function(A) { + this.items.push(A); + A.on("destroy", this.removeComponent, this) + }, + removeComponent: function(A) { + this.items.remove(A) + }, + execute: function() { + this.initialConfig.handler.apply(this.initialConfig.scope || window, arguments) + } +}; +(function() { + Ext.Layer = function(D, C) { + D = D || {}; + var E = Ext.DomHelper; + var G = D.parentEl, + F = G ? Ext.getDom(G) : document.body; + if (C) { + this.dom = Ext.getDom(C) + } + if (!this.dom) { + var H = D.dh || { + tag: "div", + cls: "x-layer" + }; + this.dom = E.append(F, H) + } + if (D.cls) { + this.addClass(D.cls) + } + this.constrain = D.constrain !== false; + this.visibilityMode = Ext.Element.VISIBILITY; + if (D.id) { + this.id = this.dom.id = D.id + } else { + this.id = Ext.id(this.dom) + } + this.zindex = D.zindex || this.getZIndex(); + this.position("absolute", this.zindex); + if (D.shadow) { + this.shadowOffset = D.shadowOffset || 4; + this.shadow = new Ext.Shadow({ + offset: this.shadowOffset, + mode: D.shadow + }) + } else { + this.shadowOffset = 0 + } + this.useShim = D.shim !== false && Ext.useShims; + this.useDisplay = D.useDisplay; + this.hide() + }; + var A = Ext.Element.prototype; + var B = []; + Ext.extend(Ext.Layer, Ext.Element, { + getZIndex: function() { + return this.zindex || parseInt(this.getStyle("z-index"), 10) || 11000 + }, + getShim: function() { + if (!this.useShim) { + return null + } + if (this.shim) { + return this.shim + } + var D = B.shift(); + if (!D) { + D = this.createShim(); + D.enableDisplayMode("block"); + D.dom.style.display = "none"; + D.dom.style.visibility = "visible" + } + var C = this.dom.parentNode; + if (D.dom.parentNode != C) { + C.insertBefore(D.dom, this.dom) + } + D.setStyle("z-index", this.getZIndex() - 2); + this.shim = D; + return D + }, + hideShim: function() { + if (this.shim) { + this.shim.setDisplayed(false); + B.push(this.shim); + delete this.shim + } + }, + disableShadow: function() { + if (this.shadow) { + this.shadowDisabled = true; + this.shadow.hide(); + this.lastShadowOffset = this.shadowOffset; + this.shadowOffset = 0 + } + }, + enableShadow: function(C) { + if (this.shadow) { + this.shadowDisabled = false; + this.shadowOffset = this.lastShadowOffset; + delete this.lastShadowOffset; + if (C) { + this.sync(true) + } + } + }, + sync: function(C) { + var I = this.shadow; + if (!this.updating && this.isVisible() && (I || this.useShim)) { + var F = this.getShim(); + var H = this.getWidth(), + E = this.getHeight(); + var D = this.getLeft(true), + J = this.getTop(true); + if (I && !this.shadowDisabled) { + if (C && !I.isVisible()) { + I.show(this) + } else { + I.realign(D, J, H, E) + } + if (F) { + if (C) { + F.show() + } + var G = I.adjusts, + K = F.dom.style; + K.left = (Math.min(D, D + G.l)) + "px"; + K.top = (Math.min(J, J + G.t)) + "px"; + K.width = (H + G.w) + "px"; + K.height = (E + G.h) + "px" + } + } else { + if (F) { + if (C) { + F.show() + } + F.setSize(H, E); + F.setLeftTop(D, J) + } + } + } + }, + destroy: function() { + this.hideShim(); + if (this.shadow) { + this.shadow.hide() + } + this.removeAllListeners(); + Ext.removeNode(this.dom); + Ext.Element.uncache(this.id) + }, + remove: function() { + this.destroy() + }, + beginUpdate: function() { + this.updating = true + }, + endUpdate: function() { + this.updating = false; + this.sync(true) + }, + hideUnders: function(C) { + if (this.shadow) { + this.shadow.hide() + } + this.hideShim() + }, + constrainXY: function() { + if (this.constrain) { + var G = Ext.lib.Dom.getViewWidth(), + C = Ext.lib.Dom.getViewHeight(); + var L = Ext.getDoc().getScroll(); + var K = this.getXY(); + var H = K[0], + F = K[1]; + var I = this.dom.offsetWidth + this.shadowOffset, + D = this.dom.offsetHeight + this.shadowOffset; + var E = false; + if ((H + I) > G + L.left) { + H = G - I - this.shadowOffset; + E = true + } + if ((F + D) > C + L.top) { + F = C - D - this.shadowOffset; + E = true + } + if (H < L.left) { + H = L.left; + E = true + } + if (F < L.top) { + F = L.top; + E = true + } + if (E) { + if (this.avoidY) { + var J = this.avoidY; + if (F <= J && (F + D) >= J) { + F = J - D - 5 + } + } + K = [H, F]; + this.storeXY(K); + A.setXY.call(this, K); + this.sync() + } + } + }, + isVisible: function() { + return this.visible + }, + showAction: function() { + this.visible = true; + if (this.useDisplay === true) { + this.setDisplayed("") + } else { + if (this.lastXY) { + A.setXY.call(this, this.lastXY) + } else { + if (this.lastLT) { + A.setLeftTop.call(this, this.lastLT[0], this.lastLT[1]) + } + } + } + }, + hideAction: function() { + this.visible = false; + if (this.useDisplay === true) { + this.setDisplayed(false) + } else { + this.setLeftTop(-10000, -10000) + } + }, + setVisible: function(E, D, G, H, F) { + if (E) { + this.showAction() + } + if (D && E) { + var C = function() { + this.sync(true); + if (H) { + H() + } + }.createDelegate(this); + A.setVisible.call(this, true, true, G, C, F) + } else { + if (!E) { + this.hideUnders(true) + } + var C = H; + if (D) { + C = function() { + this.hideAction(); + if (H) { + H() + } + }.createDelegate(this) + } + A.setVisible.call(this, E, D, G, C, F); + if (E) { + this.sync(true) + } else { + if (!D) { + this.hideAction() + } + } + } + }, + storeXY: function(C) { + delete this.lastLT; + this.lastXY = C + }, + storeLeftTop: function(D, C) { + delete this.lastXY; + this.lastLT = [D, C] + }, + beforeFx: function() { + this.beforeAction(); + return Ext.Layer.superclass.beforeFx.apply(this, arguments) + }, + afterFx: function() { + Ext.Layer.superclass.afterFx.apply(this, arguments); + this.sync(this.isVisible()) + }, + beforeAction: function() { + if (!this.updating && this.shadow) { + this.shadow.hide() + } + }, + setLeft: function(C) { + this.storeLeftTop(C, this.getTop(true)); + A.setLeft.apply(this, arguments); + this.sync() + }, + setTop: function(C) { + this.storeLeftTop(this.getLeft(true), C); + A.setTop.apply(this, arguments); + this.sync() + }, + setLeftTop: function(D, C) { + this.storeLeftTop(D, C); + A.setLeftTop.apply(this, arguments); + this.sync() + }, + setXY: function(F, D, G, H, E) { + this.fixDisplay(); + this.beforeAction(); + this.storeXY(F); + var C = this.createCB(H); + A.setXY.call(this, F, D, G, C, E); + if (!D) { + C() + } + }, + createCB: function(D) { + var C = this; + return function() { + C.constrainXY(); + C.sync(true); + if (D) { + D() + } + } + }, + setX: function(C, D, F, G, E) { + this.setXY([C, this.getY()], D, F, G, E) + }, + setY: function(G, C, E, F, D) { + this.setXY([this.getX(), G], C, E, F, D) + }, + setSize: function(E, F, D, H, I, G) { + this.beforeAction(); + var C = this.createCB(I); + A.setSize.call(this, E, F, D, H, C, G); + if (!D) { + C() + } + }, + setWidth: function(E, D, G, H, F) { + this.beforeAction(); + var C = this.createCB(H); + A.setWidth.call(this, E, D, G, C, F); + if (!D) { + C() + } + }, + setHeight: function(E, D, G, H, F) { + this.beforeAction(); + var C = this.createCB(H); + A.setHeight.call(this, E, D, G, C, F); + if (!D) { + C() + } + }, + setBounds: function(J, H, K, D, I, F, G, E) { + this.beforeAction(); + var C = this.createCB(G); + if (!I) { + this.storeXY([J, H]); + A.setXY.call(this, [J, H]); + A.setSize.call(this, K, D, I, F, C, E); + C() + } else { + A.setBounds.call(this, J, H, K, D, I, F, C, E) + } + return this + }, + setZIndex: function(C) { + this.zindex = C; + this.setStyle("z-index", C + 2); + if (this.shadow) { + this.shadow.setZIndex(C + 1) + } + if (this.shim) { + this.shim.setStyle("z-index", C) + } + } + }) +})(); +Ext.Shadow = function(C) { + Ext.apply(this, C); + if (typeof this.mode != "string") { + this.mode = this.defaultMode + } + var D = this.offset, + B = { + h: 0 + }; + var A = Math.floor(this.offset / 2); + switch (this.mode.toLowerCase()) { + case "drop": + B.w = 0; + B.l = B.t = D; + B.t -= 1; + if (Ext.isIE) { + B.l -= this.offset + A; + B.t -= this.offset + A; + B.w -= A; + B.h -= A; + B.t += 1 + } + break; + case "sides": + B.w = (D * 2); + B.l = -D; + B.t = D - 1; + if (Ext.isIE) { + B.l -= (this.offset - A); + B.t -= this.offset + A; + B.l += 1; + B.w -= (this.offset - A) * 2; + B.w -= A + 1; + B.h -= 1 + } + break; + case "frame": + B.w = B.h = (D * 2); + B.l = B.t = -D; + B.t += 1; + B.h -= 2; + if (Ext.isIE) { + B.l -= (this.offset - A); + B.t -= (this.offset - A); + B.l += 1; + B.w -= (this.offset + A + 1); + B.h -= (this.offset + A); + B.h += 1 + } + break + } + this.adjusts = B +}; +Ext.Shadow.prototype = { + offset: 4, + defaultMode: "drop", + show: function(A) { + A = Ext.get(A); + if (!this.el) { + this.el = Ext.Shadow.Pool.pull(); + if (this.el.dom.nextSibling != A.dom) { + this.el.insertBefore(A) + } + } + this.el.setStyle("z-index", this.zIndex || parseInt(A.getStyle("z-index"), 10) - 1); + if (Ext.isIE) { + this.el.dom.style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (this.offset) + ")" + } + this.realign(A.getLeft(true), A.getTop(true), A.getWidth(), A.getHeight()); + this.el.dom.style.display = "block" + }, + isVisible: function() { + return this.el ? true : false + }, + realign: function(A, M, L, D) { + if (!this.el) { + return + } + var I = this.adjusts, + G = this.el.dom, + N = G.style; + var E = 0; + N.left = (A + I.l) + "px"; + N.top = (M + I.t) + "px"; + var K = (L + I.w), + C = (D + I.h), + F = K + "px", + J = C + "px"; + if (N.width != F || N.height != J) { + N.width = F; + N.height = J; + if (!Ext.isIE) { + var H = G.childNodes; + var B = Math.max(0, (K - 12)) + "px"; + H[0].childNodes[1].style.width = B; + H[1].childNodes[1].style.width = B; + H[2].childNodes[1].style.width = B; + H[1].style.height = Math.max(0, (C - 12)) + "px" + } + } + }, + hide: function() { + if (this.el) { + this.el.dom.style.display = "none"; + Ext.Shadow.Pool.push(this.el); + delete this.el + } + }, + setZIndex: function(A) { + this.zIndex = A; + if (this.el) { + this.el.setStyle("z-index", A) + } + } +}; +Ext.Shadow.Pool = function() { + var B = []; + var A = Ext.isIE ? "
    " : "
    "; + return { + pull: function() { + var C = B.shift(); + if (!C) { + C = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, A)); + C.autoBoxAdjust = false + } + return C + }, + push: function(C) { + B.push(C) + } + } +}(); +Ext.BoxComponent = Ext.extend(Ext.Component, { + initComponent: function() { + Ext.BoxComponent.superclass.initComponent.call(this); + this.addEvents("resize", "move") + }, + boxReady: false, + deferHeight: false, + setSize: function(B, D) { + if (typeof B == "object") { + D = B.height; + B = B.width + } + if (!this.boxReady) { + this.width = B; + this.height = D; + return this + } + if (this.lastSize && this.lastSize.width == B && this.lastSize.height == D) { + return this + } + this.lastSize = { + width: B, + height: D + }; + var C = this.adjustSize(B, D); + var F = C.width, + A = C.height; + if (F !== undefined || A !== undefined) { + var E = this.getResizeEl(); + if (!this.deferHeight && F !== undefined && A !== undefined) { + E.setSize(F, A) + } else { + if (!this.deferHeight && A !== undefined) { + E.setHeight(A) + } else { + if (F !== undefined) { + E.setWidth(F) + } + } + } + this.onResize(F, A, B, D); + this.fireEvent("resize", this, F, A, B, D) + } + return this + }, + setWidth: function(A) { + return this.setSize(A) + }, + setHeight: function(A) { + return this.setSize(undefined, A) + }, + getSize: function() { + return this.el.getSize() + }, + getPosition: function(A) { + if (A === true) { + return [this.el.getLeft(true), this.el.getTop(true)] + } + return this.xy || this.el.getXY() + }, + getBox: function(A) { + var B = this.el.getSize(); + if (A === true) { + B.x = this.el.getLeft(true); + B.y = this.el.getTop(true) + } else { + var C = this.xy || this.el.getXY(); + B.x = C[0]; + B.y = C[1] + } + return B + }, + updateBox: function(A) { + this.setSize(A.width, A.height); + this.setPagePosition(A.x, A.y); + return this + }, + getResizeEl: function() { + return this.resizeEl || this.el + }, + getPositionEl: function() { + return this.positionEl || this.el + }, + setPosition: function(A, F) { + if (A && typeof A[1] == "number") { + F = A[1]; + A = A[0] + } + this.x = A; + this.y = F; + if (!this.boxReady) { + return this + } + var B = this.adjustPosition(A, F); + var E = B.x, + D = B.y; + var C = this.getPositionEl(); + if (E !== undefined || D !== undefined) { + if (E !== undefined && D !== undefined) { + C.setLeftTop(E, D) + } else { + if (E !== undefined) { + C.setLeft(E) + } else { + if (D !== undefined) { + C.setTop(D) + } + } + } + this.onPosition(E, D); + this.fireEvent("move", this, E, D) + } + return this + }, + setPagePosition: function(A, C) { + if (A && typeof A[1] == "number") { + C = A[1]; + A = A[0] + } + this.pageX = A; + this.pageY = C; + if (!this.boxReady) { + return + } + if (A === undefined || C === undefined) { + return + } + var B = this.el.translatePoints(A, C); + this.setPosition(B.left, B.top); + return this + }, + onRender: function(B, A) { + Ext.BoxComponent.superclass.onRender.call(this, B, A); + if (this.resizeEl) { + this.resizeEl = Ext.get(this.resizeEl) + } + if (this.positionEl) { + this.positionEl = Ext.get(this.positionEl) + } + }, + afterRender: function() { + Ext.BoxComponent.superclass.afterRender.call(this); + this.boxReady = true; + this.setSize(this.width, this.height); + if (this.x || this.y) { + this.setPosition(this.x, this.y) + } else { + if (this.pageX || this.pageY) { + this.setPagePosition(this.pageX, this.pageY) + } + } + }, + syncSize: function() { + delete this.lastSize; + this.setSize(this.autoWidth ? undefined : this.el.getWidth(), this.autoHeight ? undefined : this.el.getHeight()); + return this + }, + onResize: function(D, B, A, C) {}, + onPosition: function(A, B) {}, + adjustSize: function(A, B) { + if (this.autoWidth) { + A = "auto" + } + if (this.autoHeight) { + B = "auto" + } + return { + width: A, + height: B + } + }, + adjustPosition: function(A, B) { + return { + x: A, + y: B + } + } +}); +Ext.reg("box", Ext.BoxComponent); +Ext.SplitBar = function(C, E, B, D, A) { + this.el = Ext.get(C, true); + this.el.dom.unselectable = "on"; + this.resizingEl = Ext.get(E, true); + this.orientation = B || Ext.SplitBar.HORIZONTAL; + this.minSize = 0; + this.maxSize = 2000; + this.animate = false; + this.useShim = false; + this.shim = null; + if (!A) { + this.proxy = Ext.SplitBar.createProxy(this.orientation) + } else { + this.proxy = Ext.get(A).dom + } + this.dd = new Ext.dd.DDProxy(this.el.dom.id, "XSplitBars", { + dragElId: this.proxy.id + }); + this.dd.b4StartDrag = this.onStartProxyDrag.createDelegate(this); + this.dd.endDrag = this.onEndProxyDrag.createDelegate(this); + this.dragSpecs = {}; + this.adapter = new Ext.SplitBar.BasicLayoutAdapter(); + this.adapter.init(this); + if (this.orientation == Ext.SplitBar.HORIZONTAL) { + this.placement = D || (this.el.getX() > this.resizingEl.getX() ? Ext.SplitBar.LEFT : Ext.SplitBar.RIGHT); + this.el.addClass("x-splitbar-h") + } else { + this.placement = D || (this.el.getY() > this.resizingEl.getY() ? Ext.SplitBar.TOP : Ext.SplitBar.BOTTOM); + this.el.addClass("x-splitbar-v") + } + this.addEvents("resize", "moved", "beforeresize", "beforeapply"); + Ext.SplitBar.superclass.constructor.call(this) +}; +Ext.extend(Ext.SplitBar, Ext.util.Observable, { + onStartProxyDrag: function(A, E) { + this.fireEvent("beforeresize", this); + this.overlay = Ext.DomHelper.append(document.body, { + cls: "x-drag-overlay", + html: " " + }, true); + this.overlay.unselectable(); + this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); + this.overlay.show(); + Ext.get(this.proxy).setDisplayed("block"); + var C = this.adapter.getElementSize(this); + this.activeMinSize = this.getMinimumSize(); + this.activeMaxSize = this.getMaximumSize(); + var D = C - this.activeMinSize; + var B = Math.max(this.activeMaxSize - C, 0); + if (this.orientation == Ext.SplitBar.HORIZONTAL) { + this.dd.resetConstraints(); + this.dd.setXConstraint(this.placement == Ext.SplitBar.LEFT ? D : B, this.placement == Ext.SplitBar.LEFT ? B : D); + this.dd.setYConstraint(0, 0) + } else { + this.dd.resetConstraints(); + this.dd.setXConstraint(0, 0); + this.dd.setYConstraint(this.placement == Ext.SplitBar.TOP ? D : B, this.placement == Ext.SplitBar.TOP ? B : D) + } + this.dragSpecs.startSize = C; + this.dragSpecs.startPoint = [A, E]; + Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd, A, E) + }, + onEndProxyDrag: function(C) { + Ext.get(this.proxy).setDisplayed(false); + var B = Ext.lib.Event.getXY(C); + if (this.overlay) { + this.overlay.remove(); + delete this.overlay + } + var A; + if (this.orientation == Ext.SplitBar.HORIZONTAL) { + A = this.dragSpecs.startSize + (this.placement == Ext.SplitBar.LEFT ? B[0] - this.dragSpecs.startPoint[0] : this.dragSpecs.startPoint[0] - B[0]) + } else { + A = this.dragSpecs.startSize + (this.placement == Ext.SplitBar.TOP ? B[1] - this.dragSpecs.startPoint[1] : this.dragSpecs.startPoint[1] - B[1]) + } + A = Math.min(Math.max(A, this.activeMinSize), this.activeMaxSize); + if (A != this.dragSpecs.startSize) { + if (this.fireEvent("beforeapply", this, A) !== false) { + this.adapter.setElementSize(this, A); + this.fireEvent("moved", this, A); + this.fireEvent("resize", this, A) + } + } + }, + getAdapter: function() { + return this.adapter + }, + setAdapter: function(A) { + this.adapter = A; + this.adapter.init(this) + }, + getMinimumSize: function() { + return this.minSize + }, + setMinimumSize: function(A) { + this.minSize = A + }, + getMaximumSize: function() { + return this.maxSize + }, + setMaximumSize: function(A) { + this.maxSize = A + }, + setCurrentSize: function(B) { + var A = this.animate; + this.animate = false; + this.adapter.setElementSize(this, B); + this.animate = A + }, + destroy: function(A) { + if (this.shim) { + this.shim.remove() + } + this.dd.unreg(); + Ext.removeNode(this.proxy); + if (A) { + this.el.remove() + } + } +}); +Ext.SplitBar.createProxy = function(B) { + var C = new Ext.Element(document.createElement("div")); + C.unselectable(); + var A = "x-splitbar-proxy"; + C.addClass(A + " " + (B == Ext.SplitBar.HORIZONTAL ? A + "-h" : A + "-v")); + document.body.appendChild(C.dom); + return C.dom +}; +Ext.SplitBar.BasicLayoutAdapter = function() {}; +Ext.SplitBar.BasicLayoutAdapter.prototype = { + init: function(A) {}, + getElementSize: function(A) { + if (A.orientation == Ext.SplitBar.HORIZONTAL) { + return A.resizingEl.getWidth() + } else { + return A.resizingEl.getHeight() + } + }, + setElementSize: function(B, A, C) { + if (B.orientation == Ext.SplitBar.HORIZONTAL) { + if (!B.animate) { + B.resizingEl.setWidth(A); + if (C) { + C(B, A) + } + } else { + B.resizingEl.setWidth(A, true, 0.1, C, "easeOut") + } + } else { + if (!B.animate) { + B.resizingEl.setHeight(A); + if (C) { + C(B, A) + } + } else { + B.resizingEl.setHeight(A, true, 0.1, C, "easeOut") + } + } + } +}; +Ext.SplitBar.AbsoluteLayoutAdapter = function(A) { + this.basic = new Ext.SplitBar.BasicLayoutAdapter(); + this.container = Ext.get(A) +}; +Ext.SplitBar.AbsoluteLayoutAdapter.prototype = { + init: function(A) { + this.basic.init(A) + }, + getElementSize: function(A) { + return this.basic.getElementSize(A) + }, + setElementSize: function(B, A, C) { + this.basic.setElementSize(B, A, this.moveSplitter.createDelegate(this, [B])) + }, + moveSplitter: function(A) { + var B = Ext.SplitBar; + switch (A.placement) { + case B.LEFT: + A.el.setX(A.resizingEl.getRight()); + break; + case B.RIGHT: + A.el.setStyle("right", (this.container.getWidth() - A.resizingEl.getLeft()) + "px"); + break; + case B.TOP: + A.el.setY(A.resizingEl.getBottom()); + break; + case B.BOTTOM: + A.el.setY(A.resizingEl.getTop() - A.el.getHeight()); + break + } + } +}; +Ext.SplitBar.VERTICAL = 1; +Ext.SplitBar.HORIZONTAL = 2; +Ext.SplitBar.LEFT = 1; +Ext.SplitBar.RIGHT = 2; +Ext.SplitBar.TOP = 3; +Ext.SplitBar.BOTTOM = 4; +Ext.Container = Ext.extend(Ext.BoxComponent, { + autoDestroy: true, + defaultType: "panel", + initComponent: function() { + Ext.Container.superclass.initComponent.call(this); + this.addEvents("afterlayout", "beforeadd", "beforeremove", "add", "remove"); + var A = this.items; + if (A) { + delete this.items; + if (Ext.isArray(A)) { + this.add.apply(this, A) + } else { + this.add(A) + } + } + }, + initItems: function() { + if (!this.items) { + this.items = new Ext.util.MixedCollection(false, this.getComponentId); + this.getLayout() + } + }, + setLayout: function(A) { + if (this.layout && this.layout != A) { + this.layout.setContainer(null) + } + this.initItems(); + this.layout = A; + A.setContainer(this) + }, + render: function() { + Ext.Container.superclass.render.apply(this, arguments); + if (this.layout) { + if (typeof this.layout == "string") { + this.layout = new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig) + } + this.setLayout(this.layout); + if (this.activeItem !== undefined) { + var A = this.activeItem; + delete this.activeItem; + this.layout.setActiveItem(A); + return + } + } + if (!this.ownerCt) { + this.doLayout() + } + if (this.monitorResize === true) { + Ext.EventManager.onWindowResize(this.doLayout, this, [false]) + } + }, + getLayoutTarget: function() { + return this.el + }, + getComponentId: function(A) { + return A.itemId || A.id + }, + add: function(C) { + if (!this.items) { + this.initItems() + } + var B = arguments, + A = B.length; + if (A > 1) { + for (var D = 0; D < A; D++) { + this.add(B[D]) + } + return + } + var F = this.lookupComponent(this.applyDefaults(C)); + var E = this.items.length; + if (this.fireEvent("beforeadd", this, F, E) !== false && this.onBeforeAdd(F) !== false) { + this.items.add(F); + F.ownerCt = this; + this.fireEvent("add", this, F, E) + } + return F + }, + insert: function(D, C) { + if (!this.items) { + this.initItems() + } + var B = arguments, + A = B.length; + if (A > 2) { + for (var E = A - 1; E >= 1; --E) { + this.insert(D, B[E]) + } + return + } + var F = this.lookupComponent(this.applyDefaults(C)); + if (F.ownerCt == this && this.items.indexOf(F) < D) { + --D + } + if (this.fireEvent("beforeadd", this, F, D) !== false && this.onBeforeAdd(F) !== false) { + this.items.insert(D, F); + F.ownerCt = this; + this.fireEvent("add", this, F, D) + } + return F + }, + applyDefaults: function(A) { + if (this.defaults) { + if (typeof A == "string") { + A = Ext.ComponentMgr.get(A); + Ext.apply(A, this.defaults) + } else { + if (!A.events) { + Ext.applyIf(A, this.defaults) + } else { + Ext.apply(A, this.defaults) + } + } + } + return A + }, + onBeforeAdd: function(A) { + if (A.ownerCt) { + A.ownerCt.remove(A, false) + } + if (this.hideBorders === true) { + A.border = (A.border === true) + } + }, + remove: function(A, B) { + var C = this.getComponent(A); + if (C && this.fireEvent("beforeremove", this, C) !== false) { + this.items.remove(C); + delete C.ownerCt; + if (B === true || (B !== false && this.autoDestroy)) { + C.destroy() + } + if (this.layout && this.layout.activeItem == C) { + delete this.layout.activeItem + } + this.fireEvent("remove", this, C) + } + return C + }, + getComponent: function(A) { + if (typeof A == "object") { + return A + } + return this.items.get(A) + }, + lookupComponent: function(A) { + if (typeof A == "string") { + return Ext.ComponentMgr.get(A) + } else { + if (!A.events) { + return this.createComponent(A) + } + } + return A + }, + createComponent: function(A) { + return Ext.ComponentMgr.create(A, this.defaultType) + }, + doLayout: function(D) { + if (this.rendered && this.layout) { + this.layout.layout() + } + if (D !== false && this.items) { + var C = this.items.items; + for (var B = 0, A = C.length; B < A; B++) { + var E = C[B]; + if (E.doLayout) { + E.doLayout() + } + } + } + }, + getLayout: function() { + if (!this.layout) { + var A = new Ext.layout.ContainerLayout(this.layoutConfig); + this.setLayout(A) + } + return this.layout + }, + onDestroy: function() { + if (this.items) { + var C = this.items.items; + for (var B = 0, A = C.length; B < A; B++) { + Ext.destroy(C[B]) + } + } + if (this.monitorResize) { + Ext.EventManager.removeResizeListener(this.doLayout, this) + } + Ext.Container.superclass.onDestroy.call(this) + }, + bubble: function(C, B, A) { + var D = this; + while (D) { + if (C.apply(B || D, A || [D]) === false) { + break + } + D = D.ownerCt + } + }, + cascade: function(F, E, B) { + if (F.apply(E || this, B || [this]) !== false) { + if (this.items) { + var D = this.items.items; + for (var C = 0, A = D.length; C < A; C++) { + if (D[C].cascade) { + D[C].cascade(F, E, B) + } else { + F.apply(E || this, B || [D[C]]) + } + } + } + } + }, + findById: function(C) { + var A, B = this; + this.cascade(function(D) { + if (B != D && D.id === C) { + A = D; + return false + } + }); + return A || null + }, + findByType: function(A) { + return typeof A == "function" ? this.findBy(function(B) { + return B.constructor === A + }) : this.findBy(function(B) { + return B.constructor.xtype === A + }) + }, + find: function(B, A) { + return this.findBy(function(C) { + return C[B] === A + }) + }, + findBy: function(D, C) { + var A = [], + B = this; + this.cascade(function(E) { + if (B != E && D.call(C || E, E, B) === true) { + A.push(E) + } + }); + return A + } +}); +Ext.Container.LAYOUTS = {}; +Ext.reg("container", Ext.Container); +Ext.layout.ContainerLayout = function(A) { + Ext.apply(this, A) +}; +Ext.layout.ContainerLayout.prototype = { + monitorResize: false, + activeItem: null, + layout: function() { + var A = this.container.getLayoutTarget(); + this.onLayout(this.container, A); + this.container.fireEvent("afterlayout", this.container, this) + }, + onLayout: function(A, B) { + this.renderAll(A, B) + }, + isValidParent: function(C, B) { + var A = C.getPositionEl ? C.getPositionEl() : C.getEl(); + return A.dom.parentNode == B.dom + }, + renderAll: function(D, E) { + var B = D.items.items; + for (var C = 0, A = B.length; C < A; C++) { + var F = B[C]; + if (F && (!F.rendered || !this.isValidParent(F, E))) { + this.renderItem(F, C, E) + } + } + }, + renderItem: function(D, A, C) { + if (D && !D.rendered) { + D.render(C, A); + if (this.extraCls) { + var B = D.getPositionEl ? D.getPositionEl() : D; + B.addClass(this.extraCls) + } + if (this.renderHidden && D != this.activeItem) { + D.hide() + } + } else { + if (D && !this.isValidParent(D, C)) { + if (this.extraCls) { + D.addClass(this.extraCls) + } + if (typeof A == "number") { + A = C.dom.childNodes[A] + } + C.dom.insertBefore(D.getEl().dom, A || null); + if (this.renderHidden && D != this.activeItem) { + D.hide() + } + } + } + }, + onResize: function() { + if (this.container.collapsed) { + return + } + var A = this.container.bufferResize; + if (A) { + if (!this.resizeTask) { + this.resizeTask = new Ext.util.DelayedTask(this.layout, this); + this.resizeBuffer = typeof A == "number" ? A : 100 + } + this.resizeTask.delay(this.resizeBuffer) + } else { + this.layout() + } + }, + setContainer: function(A) { + if (this.monitorResize && A != this.container) { + if (this.container) { + this.container.un("resize", this.onResize, this) + } + if (A) { + A.on("resize", this.onResize, this) + } + } + this.container = A + }, + parseMargins: function(B) { + var C = B.split(" "); + var A = C.length; + if (A == 1) { + C[1] = C[0]; + C[2] = C[0]; + C[3] = C[0] + } + if (A == 2) { + C[2] = C[0]; + C[3] = C[1] + } + return { + top: parseInt(C[0], 10) || 0, + right: parseInt(C[1], 10) || 0, + bottom: parseInt(C[2], 10) || 0, + left: parseInt(C[3], 10) || 0 + } + } +}; +Ext.Container.LAYOUTS["auto"] = Ext.layout.ContainerLayout; +Ext.layout.FitLayout = Ext.extend(Ext.layout.ContainerLayout, { + monitorResize: true, + onLayout: function(A, B) { + Ext.layout.FitLayout.superclass.onLayout.call(this, A, B); + if (!this.container.collapsed) { + this.setItemSize(this.activeItem || A.items.itemAt(0), B.getStyleSize()) + } + }, + setItemSize: function(B, A) { + if (B && A.height > 0) { + B.setSize(A) + } + } +}); +Ext.Container.LAYOUTS["fit"] = Ext.layout.FitLayout; +Ext.layout.CardLayout = Ext.extend(Ext.layout.FitLayout, { + deferredRender: false, + renderHidden: true, + setActiveItem: function(A) { + A = this.container.getComponent(A); + if (this.activeItem != A) { + if (this.activeItem) { + this.activeItem.hide() + } + this.activeItem = A; + A.show(); + this.layout() + } + }, + renderAll: function(A, B) { + if (this.deferredRender) { + this.renderItem(this.activeItem, undefined, B) + } else { + Ext.layout.CardLayout.superclass.renderAll.call(this, A, B) + } + } +}); +Ext.Container.LAYOUTS["card"] = Ext.layout.CardLayout; +Ext.layout.AnchorLayout = Ext.extend(Ext.layout.ContainerLayout, { + monitorResize: true, + getAnchorViewSize: function(A, B) { + return B.dom == document.body ? B.getViewSize() : B.getStyleSize() + }, + onLayout: function(F, I) { + Ext.layout.AnchorLayout.superclass.onLayout.call(this, F, I); + var O = this.getAnchorViewSize(F, I); + var M = O.width, + E = O.height; + if (M < 20 || E < 20) { + return + } + var B, K; + if (F.anchorSize) { + if (typeof F.anchorSize == "number") { + B = F.anchorSize + } else { + B = F.anchorSize.width; + K = F.anchorSize.height + } + } else { + B = F.initialConfig.width; + K = F.initialConfig.height + } + var H = F.items.items, + G = H.length, + D, J, L, C, A; + for (D = 0; D < G; D++) { + J = H[D]; + if (J.anchor) { + L = J.anchorSpec; + if (!L) { + var N = J.anchor.split(" "); + J.anchorSpec = L = { + right: this.parseAnchor(N[0], J.initialConfig.width, B), + bottom: this.parseAnchor(N[1], J.initialConfig.height, K) + } + } + C = L.right ? this.adjustWidthAnchor(L.right(M), J) : undefined; + A = L.bottom ? this.adjustHeightAnchor(L.bottom(E), J) : undefined; + if (C || A) { + J.setSize(C || undefined, A || undefined) + } + } + } + }, + parseAnchor: function(B, F, A) { + if (B && B != "none") { + var D; + if (/^(r|right|b|bottom)$/i.test(B)) { + var E = A - F; + return function(G) { + if (G !== D) { + D = G; + return G - E + } + } + } else { + if (B.indexOf("%") != -1) { + var C = parseFloat(B.replace("%", "")) * 0.01; + return function(G) { + if (G !== D) { + D = G; + return Math.floor(G * C) + } + } + } else { + B = parseInt(B, 10); + if (!isNaN(B)) { + return function(G) { + if (G !== D) { + D = G; + return G + B + } + } + } + } + } + } + return false + }, + adjustWidthAnchor: function(B, A) { + return B + }, + adjustHeightAnchor: function(B, A) { + return B + } +}); +Ext.Container.LAYOUTS["anchor"] = Ext.layout.AnchorLayout; +Ext.layout.ColumnLayout = Ext.extend(Ext.layout.ContainerLayout, { + monitorResize: true, + extraCls: "x-column", + scrollOffset: 0, + isValidParent: function(B, A) { + return B.getEl().dom.parentNode == this.innerCt.dom + }, + onLayout: function(C, F) { + var D = C.items.items, + E = D.length, + G, A; + if (!this.innerCt) { + F.addClass("x-column-layout-ct"); + this.innerCt = F.createChild({ + cls: "x-column-inner" + }); + this.innerCt.createChild({ + cls: "x-clear" + }) + } + this.renderAll(C, this.innerCt); + var J = F.getViewSize(); + if (J.width < 1 && J.height < 1) { + return + } + var H = J.width - F.getPadding("lr") - this.scrollOffset, + B = J.height - F.getPadding("tb"), + I = H; + this.innerCt.setWidth(H); + for (A = 0; A < E; A++) { + G = D[A]; + if (!G.columnWidth) { + I -= (G.getSize().width + G.getEl().getMargins("lr")) + } + } + I = I < 0 ? 0 : I; + for (A = 0; A < E; A++) { + G = D[A]; + if (G.columnWidth) { + G.setSize(Math.floor(G.columnWidth * I) - G.getEl().getMargins("lr")) + } + } + } +}); +Ext.Container.LAYOUTS["column"] = Ext.layout.ColumnLayout; +Ext.layout.BorderLayout = Ext.extend(Ext.layout.ContainerLayout, { + monitorResize: true, + rendered: false, + onLayout: function(B, X) { + var C; + if (!this.rendered) { + X.position(); + X.addClass("x-border-layout-ct"); + var M = B.items.items; + C = []; + for (var Q = 0, R = M.length; Q < R; Q++) { + var U = M[Q]; + var F = U.region; + if (U.collapsed) { + C.push(U) + } + U.collapsed = false; + if (!U.rendered) { + U.cls = U.cls ? U.cls + " x-border-panel" : "x-border-panel"; + U.render(X, Q) + } + this[F] = F != "center" && U.split ? new Ext.layout.BorderLayout.SplitRegion(this, U.initialConfig, F) : new Ext.layout.BorderLayout.Region(this, U.initialConfig, F); + this[F].render(X, U) + } + this.rendered = true + } + var L = X.getViewSize(); + if (L.width < 20 || L.height < 20) { + if (C) { + this.restoreCollapsed = C + } + return + } else { + if (this.restoreCollapsed) { + C = this.restoreCollapsed; + delete this.restoreCollapsed + } + } + var J = L.width, + S = L.height; + var I = J, + P = S, + G = 0, + H = 0; + var N = this.north, + K = this.south, + E = this.west, + T = this.east, + U = this.center; + if (!U) { + throw "No center region defined in BorderLayout " + B.id + } + if (N && N.isVisible()) { + var W = N.getSize(); + var O = N.getMargins(); + W.width = J - (O.left + O.right); + W.x = O.left; + W.y = O.top; + G = W.height + W.y + O.bottom; + P -= G; + N.applyLayout(W) + } + if (K && K.isVisible()) { + var W = K.getSize(); + var O = K.getMargins(); + W.width = J - (O.left + O.right); + W.x = O.left; + var V = (W.height + O.top + O.bottom); + W.y = S - V + O.top; + P -= V; + K.applyLayout(W) + } + if (E && E.isVisible()) { + var W = E.getSize(); + var O = E.getMargins(); + W.height = P - (O.top + O.bottom); + W.x = O.left; + W.y = G + O.top; + var A = (W.width + O.left + O.right); + H += A; + I -= A; + E.applyLayout(W) + } + if (T && T.isVisible()) { + var W = T.getSize(); + var O = T.getMargins(); + W.height = P - (O.top + O.bottom); + var A = (W.width + O.left + O.right); + W.x = J - A + O.left; + W.y = G + O.top; + I -= A; + T.applyLayout(W) + } + var O = U.getMargins(); + var D = { + x: H + O.left, + y: G + O.top, + width: I - (O.left + O.right), + height: P - (O.top + O.bottom) + }; + U.applyLayout(D); + if (C) { + for (var Q = 0, R = C.length; Q < R; Q++) { + C[Q].collapse(false) + } + } + if (Ext.isIE && Ext.isStrict) { + X.repaint() + } + } +}); +Ext.layout.BorderLayout.Region = function(B, A, C) { + Ext.apply(this, A); + this.layout = B; + this.position = C; + this.state = {}; + if (typeof this.margins == "string") { + this.margins = this.layout.parseMargins(this.margins) + } + this.margins = Ext.applyIf(this.margins || {}, this.defaultMargins); + if (this.collapsible) { + if (typeof this.cmargins == "string") { + this.cmargins = this.layout.parseMargins(this.cmargins) + } + if (this.collapseMode == "mini" && !this.cmargins) { + this.cmargins = { + left: 0, + top: 0, + right: 0, + bottom: 0 + } + } else { + this.cmargins = Ext.applyIf(this.cmargins || {}, C == "north" || C == "south" ? this.defaultNSCMargins : this.defaultEWCMargins) + } + } +}; +Ext.layout.BorderLayout.Region.prototype = { + collapsible: false, + split: false, + floatable: true, + minWidth: 50, + minHeight: 50, + defaultMargins: { + left: 0, + top: 0, + right: 0, + bottom: 0 + }, + defaultNSCMargins: { + left: 5, + top: 5, + right: 5, + bottom: 5 + }, + defaultEWCMargins: { + left: 5, + top: 0, + right: 5, + bottom: 0 + }, + isCollapsed: false, + render: function(B, C) { + this.panel = C; + C.el.enableDisplayMode(); + this.targetEl = B; + this.el = C.el; + var A = C.getState, + D = this.position; + C.getState = function() { + return Ext.apply(A.call(C) || {}, this.state) + }.createDelegate(this); + if (D != "center") { + C.allowQueuedExpand = false; + C.on({ + beforecollapse: this.beforeCollapse, + collapse: this.onCollapse, + beforeexpand: this.beforeExpand, + expand: this.onExpand, + hide: this.onHide, + show: this.onShow, + scope: this + }); + if (this.collapsible) { + C.collapseEl = "el"; + C.slideAnchor = this.getSlideAnchor() + } + if (C.tools && C.tools.toggle) { + C.tools.toggle.addClass("x-tool-collapse-" + D); + C.tools.toggle.addClassOnOver("x-tool-collapse-" + D + "-over") + } + } + }, + getCollapsedEl: function() { + if (!this.collapsedEl) { + if (!this.toolTemplate) { + var B = new Ext.Template("
     
    "); + B.disableFormats = true; + B.compile(); + Ext.layout.BorderLayout.Region.prototype.toolTemplate = B + } + this.collapsedEl = this.targetEl.createChild({ + cls: "x-layout-collapsed x-layout-collapsed-" + this.position, + id: this.panel.id + "-xcollapsed" + }); + this.collapsedEl.enableDisplayMode("block"); + if (this.collapseMode == "mini") { + this.collapsedEl.addClass("x-layout-cmini-" + this.position); + this.miniCollapsedEl = this.collapsedEl.createChild({ + cls: "x-layout-mini x-layout-mini-" + this.position, + html: " " + }); + this.miniCollapsedEl.addClassOnOver("x-layout-mini-over"); + this.collapsedEl.addClassOnOver("x-layout-collapsed-over"); + this.collapsedEl.on("click", this.onExpandClick, this, { + stopEvent: true + }) + } else { + var A = this.toolTemplate.append(this.collapsedEl.dom, { + id: "expand-" + this.position + }, true); + A.addClassOnOver("x-tool-expand-" + this.position + "-over"); + A.on("click", this.onExpandClick, this, { + stopEvent: true + }); + if (this.floatable !== false) { + this.collapsedEl.addClassOnOver("x-layout-collapsed-over"); + this.collapsedEl.on("click", this.collapseClick, this) + } + } + } + return this.collapsedEl + }, + onExpandClick: function(A) { + if (this.isSlid) { + this.afterSlideIn(); + this.panel.expand(false) + } else { + this.panel.expand() + } + }, + onCollapseClick: function(A) { + this.panel.collapse() + }, + beforeCollapse: function(B, A) { + this.lastAnim = A; + if (this.splitEl) { + this.splitEl.hide() + } + this.getCollapsedEl().show(); + this.panel.el.setStyle("z-index", 100); + this.isCollapsed = true; + this.layout.layout() + }, + onCollapse: function(A) { + this.panel.el.setStyle("z-index", 1); + if (this.lastAnim === false || this.panel.animCollapse === false) { + this.getCollapsedEl().dom.style.visibility = "visible" + } else { + this.getCollapsedEl().slideIn(this.panel.slideAnchor, { + duration: 0.2 + }) + } + this.state.collapsed = true; + this.panel.saveState() + }, + beforeExpand: function(A) { + var B = this.getCollapsedEl(); + this.el.show(); + if (this.position == "east" || this.position == "west") { + this.panel.setSize(undefined, B.getHeight()) + } else { + this.panel.setSize(B.getWidth(), undefined) + } + B.hide(); + B.dom.style.visibility = "hidden"; + this.panel.el.setStyle("z-index", 100) + }, + onExpand: function() { + this.isCollapsed = false; + if (this.splitEl) { + this.splitEl.show() + } + this.layout.layout(); + this.panel.el.setStyle("z-index", 1); + this.state.collapsed = false; + this.panel.saveState() + }, + collapseClick: function(A) { + if (this.isSlid) { + A.stopPropagation(); + this.slideIn() + } else { + A.stopPropagation(); + this.slideOut() + } + }, + onHide: function() { + if (this.isCollapsed) { + this.getCollapsedEl().hide() + } else { + if (this.splitEl) { + this.splitEl.hide() + } + } + }, + onShow: function() { + if (this.isCollapsed) { + this.getCollapsedEl().show() + } else { + if (this.splitEl) { + this.splitEl.show() + } + } + }, + isVisible: function() { + return !this.panel.hidden + }, + getMargins: function() { + return this.isCollapsed && this.cmargins ? this.cmargins : this.margins + }, + getSize: function() { + return this.isCollapsed ? this.getCollapsedEl().getSize() : this.panel.getSize() + }, + setPanel: function(A) { + this.panel = A + }, + getMinWidth: function() { + return this.minWidth + }, + getMinHeight: function() { + return this.minHeight + }, + applyLayoutCollapsed: function(A) { + var B = this.getCollapsedEl(); + B.setLeftTop(A.x, A.y); + B.setSize(A.width, A.height) + }, + applyLayout: function(A) { + if (this.isCollapsed) { + this.applyLayoutCollapsed(A) + } else { + this.panel.setPosition(A.x, A.y); + this.panel.setSize(A.width, A.height) + } + }, + beforeSlide: function() { + this.panel.beforeEffect() + }, + afterSlide: function() { + this.panel.afterEffect() + }, + initAutoHide: function() { + if (this.autoHide !== false) { + if (!this.autoHideHd) { + var A = new Ext.util.DelayedTask(this.slideIn, this); + this.autoHideHd = { + "mouseout": function(B) { + if (!B.within(this.el, true)) { + A.delay(500) + } + }, + "mouseover": function(B) { + A.cancel() + }, + scope: this + } + } + this.el.on(this.autoHideHd) + } + }, + clearAutoHide: function() { + if (this.autoHide !== false) { + this.el.un("mouseout", this.autoHideHd.mouseout); + this.el.un("mouseover", this.autoHideHd.mouseover) + } + }, + clearMonitor: function() { + Ext.getDoc().un("click", this.slideInIf, this) + }, + slideOut: function() { + if (this.isSlid || this.el.hasActiveFx()) { + return + } + this.isSlid = true; + var A = this.panel.tools; + if (A && A.toggle) { + A.toggle.hide() + } + this.el.show(); + if (this.position == "east" || this.position == "west") { + this.panel.setSize(undefined, this.collapsedEl.getHeight()) + } else { + this.panel.setSize(this.collapsedEl.getWidth(), undefined) + } + this.restoreLT = [this.el.dom.style.left, this.el.dom.style.top]; + this.el.alignTo(this.collapsedEl, this.getCollapseAnchor()); + this.el.setStyle("z-index", 102); + if (this.animFloat !== false) { + this.beforeSlide(); + this.el.slideIn(this.getSlideAnchor(), { + callback: function() { + this.afterSlide(); + this.initAutoHide(); + Ext.getDoc().on("click", this.slideInIf, this) + }, + scope: this, + block: true + }) + } else { + this.initAutoHide(); + Ext.getDoc().on("click", this.slideInIf, this) + } + }, + afterSlideIn: function() { + this.clearAutoHide(); + this.isSlid = false; + this.clearMonitor(); + this.el.setStyle("z-index", ""); + this.el.dom.style.left = this.restoreLT[0]; + this.el.dom.style.top = this.restoreLT[1]; + var A = this.panel.tools; + if (A && A.toggle) { + A.toggle.show() + } + }, + slideIn: function(A) { + if (!this.isSlid || this.el.hasActiveFx()) { + Ext.callback(A); + return + } + this.isSlid = false; + if (this.animFloat !== false) { + this.beforeSlide(); + this.el.slideOut(this.getSlideAnchor(), { + callback: function() { + this.el.hide(); + this.afterSlide(); + this.afterSlideIn(); + Ext.callback(A) + }, + scope: this, + block: true + }) + } else { + this.el.hide(); + this.afterSlideIn() + } + }, + slideInIf: function(A) { + if (!A.within(this.el)) { + this.slideIn() + } + }, + anchors: { + "west": "left", + "east": "right", + "north": "top", + "south": "bottom" + }, + sanchors: { + "west": "l", + "east": "r", + "north": "t", + "south": "b" + }, + canchors: { + "west": "tl-tr", + "east": "tr-tl", + "north": "tl-bl", + "south": "bl-tl" + }, + getAnchor: function() { + return this.anchors[this.position] + }, + getCollapseAnchor: function() { + return this.canchors[this.position] + }, + getSlideAnchor: function() { + return this.sanchors[this.position] + }, + getAlignAdj: function() { + var A = this.cmargins; + switch (this.position) { + case "west": + return [0, 0]; + break; + case "east": + return [0, 0]; + break; + case "north": + return [0, 0]; + break; + case "south": + return [0, 0]; + break + } + }, + getExpandAdj: function() { + var B = this.collapsedEl, + A = this.cmargins; + switch (this.position) { + case "west": + return [-(A.right + B.getWidth() + A.left), 0]; + break; + case "east": + return [A.right + B.getWidth() + A.left, 0]; + break; + case "north": + return [0, -(A.top + A.bottom + B.getHeight())]; + break; + case "south": + return [0, A.top + A.bottom + B.getHeight()]; + break + } + } +}; +Ext.layout.BorderLayout.SplitRegion = function(B, A, C) { + Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this, B, A, C); + this.applyLayout = this.applyFns[C] +}; +Ext.extend(Ext.layout.BorderLayout.SplitRegion, Ext.layout.BorderLayout.Region, { + splitTip: "Drag to resize.", + collapsibleSplitTip: "Drag to resize. Double click to hide.", + useSplitTips: false, + splitSettings: { + north: { + orientation: Ext.SplitBar.VERTICAL, + placement: Ext.SplitBar.TOP, + maxFn: "getVMaxSize", + minProp: "minHeight", + maxProp: "maxHeight" + }, + south: { + orientation: Ext.SplitBar.VERTICAL, + placement: Ext.SplitBar.BOTTOM, + maxFn: "getVMaxSize", + minProp: "minHeight", + maxProp: "maxHeight" + }, + east: { + orientation: Ext.SplitBar.HORIZONTAL, + placement: Ext.SplitBar.RIGHT, + maxFn: "getHMaxSize", + minProp: "minWidth", + maxProp: "maxWidth" + }, + west: { + orientation: Ext.SplitBar.HORIZONTAL, + placement: Ext.SplitBar.LEFT, + maxFn: "getHMaxSize", + minProp: "minWidth", + maxProp: "maxWidth" + } + }, + applyFns: { + west: function(C) { + if (this.isCollapsed) { + return this.applyLayoutCollapsed(C) + } + var D = this.splitEl.dom, + B = D.style; + this.panel.setPosition(C.x, C.y); + var A = D.offsetWidth; + B.left = (C.x + C.width - A) + "px"; + B.top = (C.y) + "px"; + B.height = Math.max(0, C.height) + "px"; + this.panel.setSize(C.width - A, C.height) + }, + east: function(C) { + if (this.isCollapsed) { + return this.applyLayoutCollapsed(C) + } + var D = this.splitEl.dom, + B = D.style; + var A = D.offsetWidth; + this.panel.setPosition(C.x + A, C.y); + B.left = (C.x) + "px"; + B.top = (C.y) + "px"; + B.height = Math.max(0, C.height) + "px"; + this.panel.setSize(C.width - A, C.height) + }, + north: function(C) { + if (this.isCollapsed) { + return this.applyLayoutCollapsed(C) + } + var D = this.splitEl.dom, + B = D.style; + var A = D.offsetHeight; + this.panel.setPosition(C.x, C.y); + B.left = (C.x) + "px"; + B.top = (C.y + C.height - A) + "px"; + B.width = Math.max(0, C.width) + "px"; + this.panel.setSize(C.width, C.height - A) + }, + south: function(C) { + if (this.isCollapsed) { + return this.applyLayoutCollapsed(C) + } + var D = this.splitEl.dom, + B = D.style; + var A = D.offsetHeight; + this.panel.setPosition(C.x, C.y + A); + B.left = (C.x) + "px"; + B.top = (C.y) + "px"; + B.width = Math.max(0, C.width) + "px"; + this.panel.setSize(C.width, C.height - A) + } + }, + render: function(A, C) { + Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this, A, C); + var D = this.position; + this.splitEl = A.createChild({ + cls: "x-layout-split x-layout-split-" + D, + html: " ", + id: this.panel.id + "-xsplit" + }); + if (this.collapseMode == "mini") { + this.miniSplitEl = this.splitEl.createChild({ + cls: "x-layout-mini x-layout-mini-" + D, + html: " " + }); + this.miniSplitEl.addClassOnOver("x-layout-mini-over"); + this.miniSplitEl.on("click", this.onCollapseClick, this, { + stopEvent: true + }) + } + var B = this.splitSettings[D]; + this.split = new Ext.SplitBar(this.splitEl.dom, C.el, B.orientation); + this.split.placement = B.placement; + this.split.getMaximumSize = this[B.maxFn].createDelegate(this); + this.split.minSize = this.minSize || this[B.minProp]; + this.split.on("beforeapply", this.onSplitMove, this); + this.split.useShim = this.useShim === true; + this.maxSize = this.maxSize || this[B.maxProp]; + if (C.hidden) { + this.splitEl.hide() + } + if (this.useSplitTips) { + this.splitEl.dom.title = this.collapsible ? this.collapsibleSplitTip : this.splitTip + } + if (this.collapsible) { + this.splitEl.on("dblclick", this.onCollapseClick, this) + } + }, + getSize: function() { + if (this.isCollapsed) { + return this.collapsedEl.getSize() + } + var A = this.panel.getSize(); + if (this.position == "north" || this.position == "south") { + A.height += this.splitEl.dom.offsetHeight + } else { + A.width += this.splitEl.dom.offsetWidth + } + return A + }, + getHMaxSize: function() { + var B = this.maxSize || 10000; + var A = this.layout.center; + return Math.min(B, (this.el.getWidth() + A.el.getWidth()) - A.getMinWidth()) + }, + getVMaxSize: function() { + var B = this.maxSize || 10000; + var A = this.layout.center; + return Math.min(B, (this.el.getHeight() + A.el.getHeight()) - A.getMinHeight()) + }, + onSplitMove: function(B, A) { + var C = this.panel.getSize(); + this.lastSplitSize = A; + if (this.position == "north" || this.position == "south") { + this.panel.setSize(C.width, A); + this.state.height = A + } else { + this.panel.setSize(A, C.height); + this.state.width = A + } + this.layout.layout(); + this.panel.saveState(); + return false + }, + getSplitBar: function() { + return this.split + } +}); +Ext.Container.LAYOUTS["border"] = Ext.layout.BorderLayout; +Ext.layout.FormLayout = Ext.extend(Ext.layout.AnchorLayout, { + labelSeparator: ":", + getAnchorViewSize: function(A, B) { + return A.body.getStyleSize() + }, + setContainer: function(B) { + Ext.layout.FormLayout.superclass.setContainer.call(this, B); + if (B.labelAlign) { + B.addClass("x-form-label-" + B.labelAlign) + } + if (B.hideLabels) { + this.labelStyle = "display:none"; + this.elementStyle = "padding-left:0;"; + this.labelAdjust = 0 + } else { + this.labelSeparator = B.labelSeparator || this.labelSeparator; + B.labelWidth = B.labelWidth || 100; + if (typeof B.labelWidth == "number") { + var C = (typeof B.labelPad == "number" ? B.labelPad : 5); + this.labelAdjust = B.labelWidth + C; + this.labelStyle = "width:" + B.labelWidth + "px;"; + this.elementStyle = "padding-left:" + (B.labelWidth + C) + "px" + } + if (B.labelAlign == "top") { + this.labelStyle = "width:auto;"; + this.labelAdjust = 0; + this.elementStyle = "padding-left:0;" + } + } + if (!this.fieldTpl) { + var A = new Ext.Template("
    ", "", "
    ", "
    ", "
    "); + A.disableFormats = true; + A.compile(); + Ext.layout.FormLayout.prototype.fieldTpl = A + } + }, + renderItem: function(D, A, C) { + if (D && !D.rendered && D.isFormField && D.inputType != "hidden") { + var B = [D.id, D.fieldLabel, D.labelStyle || this.labelStyle || "", this.elementStyle || "", typeof D.labelSeparator == "undefined" ? this.labelSeparator : D.labelSeparator, (D.itemCls || this.container.itemCls || "") + (D.hideLabel ? " x-hide-label" : ""), D.clearCls || "x-form-clear-left"]; + if (typeof A == "number") { + A = C.dom.childNodes[A] || null + } + if (A) { + this.fieldTpl.insertBefore(A, B) + } else { + this.fieldTpl.append(C, B) + } + D.render("x-form-el-" + D.id) + } else { + Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments) + } + }, + adjustWidthAnchor: function(B, A) { + return B - (A.isFormField ? (A.hideLabel ? 0 : this.labelAdjust) : 0) + }, + isValidParent: function(B, A) { + return true + } +}); +Ext.Container.LAYOUTS["form"] = Ext.layout.FormLayout; +Ext.layout.Accordion = Ext.extend(Ext.layout.FitLayout, { + fill: true, + autoWidth: true, + titleCollapse: true, + hideCollapseTool: false, + collapseFirst: false, + animate: false, + sequence: false, + activeOnTop: false, + renderItem: function(A) { + if (this.animate === false) { + A.animCollapse = false + } + A.collapsible = true; + if (this.autoWidth) { + A.autoWidth = true + } + if (this.titleCollapse) { + A.titleCollapse = true + } + if (this.hideCollapseTool) { + A.hideCollapseTool = true + } + if (this.collapseFirst !== undefined) { + A.collapseFirst = this.collapseFirst + } + if (!this.activeItem && !A.collapsed) { + this.activeItem = A + } else { + if (this.activeItem) { + A.collapsed = true + } + } + Ext.layout.Accordion.superclass.renderItem.apply(this, arguments); + A.header.addClass("x-accordion-hd"); + A.on("beforeexpand", this.beforeExpand, this) + }, + beforeExpand: function(C, B) { + var A = this.activeItem; + if (A) { + if (this.sequence) { + delete this.activeItem; + A.collapse({ + callback: function() { + C.expand(B || true) + }, + scope: this + }); + return false + } else { + A.collapse(this.animate) + } + } + this.activeItem = C; + if (this.activeOnTop) { + C.el.dom.parentNode.insertBefore(C.el.dom, C.el.dom.parentNode.firstChild) + } + this.layout() + }, + setItemSize: function(F, E) { + if (this.fill && F) { + var B = this.container.items.items; + var D = 0; + for (var C = 0, A = B.length; C < A; C++) { + var G = B[C]; + if (G != F) { + D += (G.getSize().height - G.bwrap.getHeight()) + } + } + E.height -= D; + F.setSize(E) + } + } +}); +Ext.Container.LAYOUTS["accordion"] = Ext.layout.Accordion; +Ext.layout.TableLayout = Ext.extend(Ext.layout.ContainerLayout, { + monitorResize: false, + setContainer: function(A) { + Ext.layout.TableLayout.superclass.setContainer.call(this, A); + this.currentRow = 0; + this.currentColumn = 0; + this.cells = [] + }, + onLayout: function(C, E) { + var D = C.items.items, + A = D.length, + F, B; + if (!this.table) { + E.addClass("x-table-layout-ct"); + this.table = E.createChild({ + tag: "table", + cls: "x-table-layout", + cellspacing: 0, + cn: { + tag: "tbody" + } + }, null, true); + this.renderAll(C, E) + } + }, + getRow: function(A) { + var B = this.table.tBodies[0].childNodes[A]; + if (!B) { + B = document.createElement("tr"); + this.table.tBodies[0].appendChild(B) + } + return B + }, + getNextCell: function(H) { + var A = this.getNextNonSpan(this.currentColumn, this.currentRow); + var E = this.currentColumn = A[0], + D = this.currentRow = A[1]; + for (var G = D; G < D + (H.rowspan || 1); G++) { + if (!this.cells[G]) { + this.cells[G] = [] + } + for (var C = E; C < E + (H.colspan || 1); C++) { + this.cells[G][C] = true + } + } + var F = document.createElement("td"); + if (H.cellId) { + F.id = H.cellId + } + var B = "x-table-layout-cell"; + if (H.cellCls) { + B += " " + H.cellCls + } + F.className = B; + if (H.colspan) { + F.colSpan = H.colspan + } + if (H.rowspan) { + F.rowSpan = H.rowspan + } + this.getRow(D).appendChild(F); + return F + }, + getNextNonSpan: function(A, C) { + var B = this.columns; + while ((B && A >= B) || (this.cells[C] && this.cells[C][A])) { + if (B && A >= B) { + C++; + A = 0 + } else { + A++ + } + } + return [A, C] + }, + renderItem: function(C, A, B) { + if (C && !C.rendered) { + C.render(this.getNextCell(C)) + } + }, + isValidParent: function(B, A) { + return true + } +}); +Ext.Container.LAYOUTS["table"] = Ext.layout.TableLayout; +Ext.layout.AbsoluteLayout = Ext.extend(Ext.layout.AnchorLayout, { + extraCls: "x-abs-layout-item", + isForm: false, + setContainer: function(A) { + Ext.layout.AbsoluteLayout.superclass.setContainer.call(this, A); + if (A.isXType("form")) { + this.isForm = true + } + }, + onLayout: function(A, B) { + if (this.isForm) { + A.body.position() + } else { + B.position() + } + Ext.layout.AbsoluteLayout.superclass.onLayout.call(this, A, B) + }, + getAnchorViewSize: function(A, B) { + return this.isForm ? A.body.getStyleSize() : Ext.layout.AbsoluteLayout.superclass.getAnchorViewSize.call(this, A, B) + }, + isValidParent: function(B, A) { + return this.isForm ? true : Ext.layout.AbsoluteLayout.superclass.isValidParent.call(this, B, A) + }, + adjustWidthAnchor: function(B, A) { + return B ? B - A.getPosition(true)[0] : B + }, + adjustHeightAnchor: function(B, A) { + return B ? B - A.getPosition(true)[1] : B + } +}); +Ext.Container.LAYOUTS["absolute"] = Ext.layout.AbsoluteLayout; +Ext.Viewport = Ext.extend(Ext.Container, { + initComponent: function() { + Ext.Viewport.superclass.initComponent.call(this); + document.getElementsByTagName("html")[0].className += " x-viewport"; + this.el = Ext.getBody(); + this.el.setHeight = Ext.emptyFn; + this.el.setWidth = Ext.emptyFn; + this.el.setSize = Ext.emptyFn; + this.el.dom.scroll = "no"; + this.allowDomMove = false; + this.autoWidth = true; + this.autoHeight = true; + Ext.EventManager.onWindowResize(this.fireResize, this); + this.renderTo = this.el + }, + fireResize: function(A, B) { + this.fireEvent("resize", this, A, B, A, B) + } +}); +Ext.reg("viewport", Ext.Viewport); +Ext.Panel = Ext.extend(Ext.Container, { + baseCls: "x-panel", + collapsedCls: "x-panel-collapsed", + maskDisabled: true, + animCollapse: Ext.enableFx, + headerAsText: true, + buttonAlign: "right", + collapsed: false, + collapseFirst: true, + minButtonWidth: 75, + elements: "body", + toolTarget: "header", + collapseEl: "bwrap", + slideAnchor: "t", + deferHeight: true, + expandDefaults: { + duration: 0.25 + }, + collapseDefaults: { + duration: 0.25 + }, + initComponent: function() { + Ext.Panel.superclass.initComponent.call(this); + this.addEvents("bodyresize", "titlechange", "collapse", "expand", "beforecollapse", "beforeexpand", "beforeclose", "close", "activate", "deactivate"); + if (this.tbar) { + this.elements += ",tbar"; + if (typeof this.tbar == "object") { + this.topToolbar = this.tbar + } + delete this.tbar + } + if (this.bbar) { + this.elements += ",bbar"; + if (typeof this.bbar == "object") { + this.bottomToolbar = this.bbar + } + delete this.bbar + } + if (this.header === true) { + this.elements += ",header"; + delete this.header + } else { + if (this.title && this.header !== false) { + this.elements += ",header" + } + } + if (this.footer === true) { + this.elements += ",footer"; + delete this.footer + } + if (this.buttons) { + var C = this.buttons; + this.buttons = []; + for (var B = 0, A = C.length; B < A; B++) { + if (C[B].render) { + this.buttons.push(C[B]) + } else { + this.addButton(C[B]) + } + } + } + if (this.autoLoad) { + this.on("render", this.doAutoLoad, this, { + delay: 10 + }) + } + }, + createElement: function(A, C) { + if (this[A]) { + C.appendChild(this[A].dom); + return + } + if (A === "bwrap" || this.elements.indexOf(A) != -1) { + if (this[A + "Cfg"]) { + this[A] = Ext.fly(C).createChild(this[A + "Cfg"]) + } else { + var B = document.createElement("div"); + B.className = this[A + "Cls"]; + this[A] = Ext.get(C.appendChild(B)) + } + } + }, + onRender: function(H, G) { + Ext.Panel.superclass.onRender.call(this, H, G); + this.createClasses(); + if (this.el) { + this.el.addClass(this.baseCls); + this.header = this.el.down("." + this.headerCls); + this.bwrap = this.el.down("." + this.bwrapCls); + var M = this.bwrap ? this.bwrap : this.el; + this.tbar = M.down("." + this.tbarCls); + this.body = M.down("." + this.bodyCls); + this.bbar = M.down("." + this.bbarCls); + this.footer = M.down("." + this.footerCls); + this.fromMarkup = true + } else { + this.el = H.createChild({ + id: this.id, + cls: this.baseCls + }, G) + } + var A = this.el, + K = A.dom; + if (this.cls) { + this.el.addClass(this.cls) + } + if (this.buttons) { + this.elements += ",footer" + } + if (this.frame) { + A.insertHtml("afterBegin", String.format(Ext.Element.boxMarkup, this.baseCls)); + this.createElement("header", K.firstChild.firstChild.firstChild); + this.createElement("bwrap", K); + var O = this.bwrap.dom; + var E = K.childNodes[1], + B = K.childNodes[2]; + O.appendChild(E); + O.appendChild(B); + var P = O.firstChild.firstChild.firstChild; + this.createElement("tbar", P); + this.createElement("body", P); + this.createElement("bbar", P); + this.createElement("footer", O.lastChild.firstChild.firstChild); + if (!this.footer) { + this.bwrap.dom.lastChild.className += " x-panel-nofooter" + } + } else { + this.createElement("header", K); + this.createElement("bwrap", K); + var O = this.bwrap.dom; + this.createElement("tbar", O); + this.createElement("body", O); + this.createElement("bbar", O); + this.createElement("footer", O); + if (!this.header) { + this.body.addClass(this.bodyCls + "-noheader"); + if (this.tbar) { + this.tbar.addClass(this.tbarCls + "-noheader") + } + } + } + if (this.border === false) { + this.el.addClass(this.baseCls + "-noborder"); + this.body.addClass(this.bodyCls + "-noborder"); + if (this.header) { + this.header.addClass(this.headerCls + "-noborder") + } + if (this.footer) { + this.footer.addClass(this.footerCls + "-noborder") + } + if (this.tbar) { + this.tbar.addClass(this.tbarCls + "-noborder") + } + if (this.bbar) { + this.bbar.addClass(this.bbarCls + "-noborder") + } + } + if (this.bodyBorder === false) { + this.body.addClass(this.bodyCls + "-noborder") + } + if (this.bodyStyle) { + this.body.applyStyles(this.bodyStyle) + } + this.bwrap.enableDisplayMode("block"); + if (this.header) { + this.header.unselectable(); + if (this.headerAsText) { + this.header.dom.innerHTML = "" + this.header.dom.innerHTML + ""; + if (this.iconCls) { + this.setIconClass(this.iconCls) + } + } + } + if (this.floating) { + this.makeFloating(this.floating) + } + if (this.collapsible) { + this.tools = this.tools ? this.tools.slice(0) : []; + if (!this.hideCollapseTool) { + this.tools[this.collapseFirst ? "unshift" : "push"]({ + id: "toggle", + handler: this.toggleCollapse, + scope: this + }) + } + if (this.titleCollapse && this.header) { + this.header.on("click", this.toggleCollapse, this); + this.header.setStyle("cursor", "pointer") + } + } + if (this.tools) { + var J = this.tools; + this.tools = {}; + this.addTool.apply(this, J) + } else { + this.tools = {} + } + if (this.buttons && this.buttons.length > 0) { + var D = this.footer.createChild({ + cls: "x-panel-btns-ct", + cn: { + cls: "x-panel-btns x-panel-btns-" + this.buttonAlign, + html: "
    " + } + }, null, true); + var L = D.getElementsByTagName("tr")[0]; + for (var F = 0, I = this.buttons.length; F < I; F++) { + var N = this.buttons[F]; + var C = document.createElement("td"); + C.className = "x-panel-btn-td"; + N.render(L.appendChild(C)) + } + } + if (this.tbar && this.topToolbar) { + if (Ext.isArray(this.topToolbar)) { + this.topToolbar = new Ext.Toolbar(this.topToolbar) + } + this.topToolbar.render(this.tbar) + } + if (this.bbar && this.bottomToolbar) { + if (Ext.isArray(this.bottomToolbar)) { + this.bottomToolbar = new Ext.Toolbar(this.bottomToolbar) + } + this.bottomToolbar.render(this.bbar) + } + }, + setIconClass: function(B) { + var A = this.iconCls; + this.iconCls = B; + if (this.rendered && this.header) { + if (this.frame) { + this.header.addClass("x-panel-icon"); + this.header.replaceClass(A, this.iconCls) + } else { + var D = this.header.dom; + var C = D.firstChild && String(D.firstChild.tagName).toLowerCase() == "img" ? D.firstChild : null; + if (C) { + Ext.fly(C).replaceClass(A, this.iconCls) + } else { + Ext.DomHelper.insertBefore(D.firstChild, { + tag: "img", + src: Ext.BLANK_IMAGE_URL, + cls: "x-panel-inline-icon " + this.iconCls + }) + } + } + } + }, + makeFloating: function(A) { + this.floating = true; + this.el = new Ext.Layer(typeof A == "object" ? A : { + shadow: this.shadow !== undefined ? this.shadow : "sides", + shadowOffset: this.shadowOffset, + constrain: false, + shim: this.shim === false ? false : undefined + }, this.el) + }, + getTopToolbar: function() { + return this.topToolbar + }, + getBottomToolbar: function() { + return this.bottomToolbar + }, + addButton: function(A, D, C) { + var E = { + handler: D, + scope: C, + minWidth: this.minButtonWidth, + hideParent: true + }; + if (typeof A == "string") { + E.text = A + } else { + Ext.apply(E, A) + } + var B = new Ext.Button(E); + B.ownerCt = this; + if (!this.buttons) { + this.buttons = [] + } + this.buttons.push(B); + return B + }, + addTool: function() { + if (!this[this.toolTarget]) { + return + } + if (!this.toolTemplate) { + var F = new Ext.Template("
     
    "); + F.disableFormats = true; + F.compile(); + Ext.Panel.prototype.toolTemplate = F + } + for (var E = 0, C = arguments, B = C.length; E < B; E++) { + var A = C[E], + G = "x-tool-" + A.id + "-over"; + var D = this.toolTemplate.insertFirst(this[this.toolTarget], A, true); + this.tools[A.id] = D; + D.enableDisplayMode("block"); + D.on("click", this.createToolHandler(D, A, G, this)); + if (A.on) { + D.on(A.on) + } + if (A.hidden) { + D.hide() + } + if (A.qtip) { + if (typeof A.qtip == "object") { + Ext.QuickTips.register(Ext.apply({ + target: D.id + }, A.qtip)) + } else { + D.dom.qtip = A.qtip + } + } + D.addClassOnOver(G) + } + }, + onShow: function() { + if (this.floating) { + return this.el.show() + } + Ext.Panel.superclass.onShow.call(this) + }, + onHide: function() { + if (this.floating) { + return this.el.hide() + } + Ext.Panel.superclass.onHide.call(this) + }, + createToolHandler: function(C, A, D, B) { + return function(E) { + C.removeClass(D); + E.stopEvent(); + if (A.handler) { + A.handler.call(A.scope || C, E, C, B) + } + } + }, + afterRender: function() { + if (this.fromMarkup && this.height === undefined && !this.autoHeight) { + this.height = this.el.getHeight() + } + if (this.floating && !this.hidden && !this.initHidden) { + this.el.show() + } + if (this.title) { + this.setTitle(this.title) + } + this.setAutoScroll(); + if (this.html) { + this.body.update(typeof this.html == "object" ? Ext.DomHelper.markup(this.html) : this.html); + delete this.html + } + if (this.contentEl) { + var A = Ext.getDom(this.contentEl); + Ext.fly(A).removeClass(["x-hidden", "x-hide-display"]); + this.body.dom.appendChild(A) + } + if (this.collapsed) { + this.collapsed = false; + this.collapse(false) + } + Ext.Panel.superclass.afterRender.call(this); + this.initEvents() + }, + setAutoScroll: function() { + if (this.rendered && this.autoScroll) { + this.body.setOverflow("auto") + } + }, + getKeyMap: function() { + if (!this.keyMap) { + this.keyMap = new Ext.KeyMap(this.el, this.keys) + } + return this.keyMap + }, + initEvents: function() { + if (this.keys) { + this.getKeyMap() + } + if (this.draggable) { + this.initDraggable() + } + }, + initDraggable: function() { + this.dd = new Ext.Panel.DD(this, typeof this.draggable == "boolean" ? null : this.draggable) + }, + beforeEffect: function() { + if (this.floating) { + this.el.beforeAction() + } + this.el.addClass("x-panel-animated") + }, + afterEffect: function() { + this.syncShadow(); + this.el.removeClass("x-panel-animated") + }, + createEffect: function(B, A, C) { + var D = { + scope: C, + block: true + }; + if (B === true) { + D.callback = A; + return D + } else { + if (!B.callback) { + D.callback = A + } else { + D.callback = function() { + A.call(C); + Ext.callback(B.callback, B.scope) + } + } + } + return Ext.applyIf(D, B) + }, + collapse: function(B) { + if (this.collapsed || this.el.hasFxBlock() || this.fireEvent("beforecollapse", this, B) === false) { + return + } + var A = B === true || (B !== false && this.animCollapse); + this.beforeEffect(); + this.onCollapse(A, B); + return this + }, + onCollapse: function(A, B) { + if (A) { + this[this.collapseEl].slideOut(this.slideAnchor, Ext.apply(this.createEffect(B || true, this.afterCollapse, this), this.collapseDefaults)) + } else { + this[this.collapseEl].hide(); + this.afterCollapse() + } + }, + afterCollapse: function() { + this.collapsed = true; + this.el.addClass(this.collapsedCls); + this.afterEffect(); + this.fireEvent("collapse", this) + }, + expand: function(B) { + if (!this.collapsed || this.el.hasFxBlock() || this.fireEvent("beforeexpand", this, B) === false) { + return + } + var A = B === true || (B !== false && this.animCollapse); + this.el.removeClass(this.collapsedCls); + this.beforeEffect(); + this.onExpand(A, B); + return this + }, + onExpand: function(A, B) { + if (A) { + this[this.collapseEl].slideIn(this.slideAnchor, Ext.apply(this.createEffect(B || true, this.afterExpand, this), this.expandDefaults)) + } else { + this[this.collapseEl].show(); + this.afterExpand() + } + }, + afterExpand: function() { + this.collapsed = false; + this.afterEffect(); + this.fireEvent("expand", this) + }, + toggleCollapse: function(A) { + this[this.collapsed ? "expand" : "collapse"](A); + return this + }, + onDisable: function() { + if (this.rendered && this.maskDisabled) { + this.el.mask() + } + Ext.Panel.superclass.onDisable.call(this) + }, + onEnable: function() { + if (this.rendered && this.maskDisabled) { + this.el.unmask() + } + Ext.Panel.superclass.onEnable.call(this) + }, + onResize: function(A, B) { + if (A !== undefined || B !== undefined) { + if (!this.collapsed) { + if (typeof A == "number") { + this.body.setWidth(this.adjustBodyWidth(A - this.getFrameWidth())) + } else { + if (A == "auto") { + this.body.setWidth(A) + } + } + if (typeof B == "number") { + this.body.setHeight(this.adjustBodyHeight(B - this.getFrameHeight())) + } else { + if (B == "auto") { + this.body.setHeight(B) + } + } + } else { + this.queuedBodySize = { + width: A, + height: B + }; + if (!this.queuedExpand && this.allowQueuedExpand !== false) { + this.queuedExpand = true; + this.on("expand", function() { + delete this.queuedExpand; + this.onResize(this.queuedBodySize.width, this.queuedBodySize.height); + this.doLayout() + }, this, { + single: true + }) + } + } + this.fireEvent("bodyresize", this, A, B) + } + this.syncShadow() + }, + adjustBodyHeight: function(A) { + return A + }, + adjustBodyWidth: function(A) { + return A + }, + onPosition: function() { + this.syncShadow() + }, + onDestroy: function() { + if (this.tools) { + for (var B in this.tools) { + Ext.destroy(this.tools[B]) + } + } + if (this.buttons) { + for (var A in this.buttons) { + Ext.destroy(this.buttons[A]) + } + } + Ext.destroy(this.topToolbar, this.bottomToolbar); + Ext.Panel.superclass.onDestroy.call(this) + }, + getFrameWidth: function() { + var B = this.el.getFrameWidth("lr"); + if (this.frame) { + var A = this.bwrap.dom.firstChild; + B += (Ext.fly(A).getFrameWidth("l") + Ext.fly(A.firstChild).getFrameWidth("r")); + var C = this.bwrap.dom.firstChild.firstChild.firstChild; + B += Ext.fly(C).getFrameWidth("lr") + } + return B + }, + getFrameHeight: function() { + var A = this.el.getFrameWidth("tb"); + A += (this.tbar ? this.tbar.getHeight() : 0) + (this.bbar ? this.bbar.getHeight() : 0); + if (this.frame) { + var C = this.el.dom.firstChild; + var D = this.bwrap.dom.lastChild; + A += (C.offsetHeight + D.offsetHeight); + var B = this.bwrap.dom.firstChild.firstChild.firstChild; + A += Ext.fly(B).getFrameWidth("tb") + } else { + A += (this.header ? this.header.getHeight() : 0) + (this.footer ? this.footer.getHeight() : 0) + } + return A + }, + getInnerWidth: function() { + return this.getSize().width - this.getFrameWidth() + }, + getInnerHeight: function() { + return this.getSize().height - this.getFrameHeight() + }, + syncShadow: function() { + if (this.floating) { + this.el.sync(true) + } + }, + getLayoutTarget: function() { + return this.body + }, + setTitle: function(B, A) { + this.title = B; + if (this.header && this.headerAsText) { + this.header.child("span").update(B) + } + if (A) { + this.setIconClass(A) + } + this.fireEvent("titlechange", this, B); + return this + }, + getUpdater: function() { + return this.body.getUpdater() + }, + load: function() { + var A = this.body.getUpdater(); + A.update.apply(A, arguments); + return this + }, + beforeDestroy: function() { + Ext.Element.uncache(this.header, this.tbar, this.bbar, this.footer, this.body) + }, + createClasses: function() { + this.headerCls = this.baseCls + "-header"; + this.headerTextCls = this.baseCls + "-header-text"; + this.bwrapCls = this.baseCls + "-bwrap"; + this.tbarCls = this.baseCls + "-tbar"; + this.bodyCls = this.baseCls + "-body"; + this.bbarCls = this.baseCls + "-bbar"; + this.footerCls = this.baseCls + "-footer" + }, + createGhost: function(A, E, B) { + var D = document.createElement("div"); + D.className = "x-panel-ghost " + (A ? A : ""); + if (this.header) { + D.appendChild(this.el.dom.firstChild.cloneNode(true)) + } + Ext.fly(D.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight()); + D.style.width = this.el.dom.offsetWidth + "px"; + if (!B) { + this.container.dom.appendChild(D) + } else { + Ext.getDom(B).appendChild(D) + } + if (E !== false && this.el.useShim !== false) { + var C = new Ext.Layer({ + shadow: false, + useDisplay: true, + constrain: false + }, D); + C.show(); + return C + } else { + return new Ext.Element(D) + } + }, + doAutoLoad: function() { + this.body.load(typeof this.autoLoad == "object" ? this.autoLoad : { + url: this.autoLoad + }) + } +}); +Ext.reg("panel", Ext.Panel); +Ext.Window = Ext.extend(Ext.Panel, { + baseCls: "x-window", + resizable: true, + draggable: true, + closable: true, + constrain: false, + constrainHeader: false, + plain: false, + minimizable: false, + maximizable: false, + minHeight: 100, + minWidth: 200, + expandOnShow: true, + closeAction: "close", + collapsible: false, + initHidden: true, + monitorResize: true, + elements: "header,body", + frame: true, + floating: true, + initComponent: function() { + Ext.Window.superclass.initComponent.call(this); + this.addEvents("resize", "maximize", "minimize", "restore") + }, + getState: function() { + return Ext.apply(Ext.Window.superclass.getState.call(this) || {}, this.getBox()) + }, + onRender: function(B, A) { + Ext.Window.superclass.onRender.call(this, B, A); + if (this.plain) { + this.el.addClass("x-window-plain") + } + this.focusEl = this.el.createChild({ + tag: "a", + href: "#", + cls: "x-dlg-focus", + tabIndex: "-1", + html: " " + }); + this.focusEl.swallowEvent("click", true); + this.proxy = this.el.createProxy("x-window-proxy"); + this.proxy.enableDisplayMode("block"); + if (this.modal) { + this.mask = this.container.createChild({ + cls: "ext-el-mask" + }, this.el.dom); + this.mask.enableDisplayMode("block"); + this.mask.hide() + } + }, + initEvents: function() { + Ext.Window.superclass.initEvents.call(this); + if (this.animateTarget) { + this.setAnimateTarget(this.animateTarget) + } + if (this.resizable) { + this.resizer = new Ext.Resizable(this.el, { + minWidth: this.minWidth, + minHeight: this.minHeight, + handles: this.resizeHandles || "all", + pinned: true, + resizeElement: this.resizerAction + }); + this.resizer.window = this; + this.resizer.on("beforeresize", this.beforeResize, this) + } + if (this.draggable) { + this.header.addClass("x-window-draggable") + } + this.initTools(); + this.el.on("mousedown", this.toFront, this); + this.manager = this.manager || Ext.WindowMgr; + this.manager.register(this); + this.hidden = true; + if (this.maximized) { + this.maximized = false; + this.maximize() + } + if (this.closable) { + var A = this.getKeyMap(); + A.on(27, this.onEsc, this); + A.disable() + } + }, + initDraggable: function() { + this.dd = new Ext.Window.DD(this) + }, + onEsc: function() { + this[this.closeAction]() + }, + beforeDestroy: function() { + Ext.destroy(this.resizer, this.dd, this.proxy, this.mask); + Ext.Window.superclass.beforeDestroy.call(this) + }, + onDestroy: function() { + if (this.manager) { + this.manager.unregister(this) + } + Ext.Window.superclass.onDestroy.call(this) + }, + initTools: function() { + if (this.minimizable) { + this.addTool({ + id: "minimize", + handler: this.minimize.createDelegate(this, []) + }) + } + if (this.maximizable) { + this.addTool({ + id: "maximize", + handler: this.maximize.createDelegate(this, []) + }); + this.addTool({ + id: "restore", + handler: this.restore.createDelegate(this, []), + hidden: true + }); + this.header.on("dblclick", this.toggleMaximize, this) + } + if (this.closable) { + this.addTool({ + id: "close", + handler: this[this.closeAction].createDelegate(this, []) + }) + } + }, + resizerAction: function() { + var A = this.proxy.getBox(); + this.proxy.hide(); + this.window.handleResize(A); + return A + }, + beforeResize: function() { + this.resizer.minHeight = Math.max(this.minHeight, this.getFrameHeight() + 40); + this.resizer.minWidth = Math.max(this.minWidth, this.getFrameWidth() + 40); + this.resizeBox = this.el.getBox() + }, + updateHandles: function() { + if (Ext.isIE && this.resizer) { + this.resizer.syncHandleHeight(); + this.el.repaint() + } + }, + handleResize: function(B) { + var A = this.resizeBox; + if (A.x != B.x || A.y != B.y) { + this.updateBox(B) + } else { + this.setSize(B) + } + this.focus(); + this.updateHandles(); + this.saveState(); + this.fireEvent("resize", this, B.width, B.height) + }, + focus: function() { + var C = this.focusEl, + A = this.defaultButton, + B = typeof A; + if (B != "undefined") { + if (B == "number") { + C = this.buttons[A] + } else { + if (B == "string") { + C = Ext.getCmp(A) + } else { + C = A + } + } + } + C.focus.defer(10, C) + }, + setAnimateTarget: function(A) { + A = Ext.get(A); + this.animateTarget = A + }, + beforeShow: function() { + delete this.el.lastXY; + delete this.el.lastLT; + if (this.x === undefined || this.y === undefined) { + var A = this.el.getAlignToXY(this.container, "c-c"); + var B = this.el.translatePoints(A[0], A[1]); + this.x = this.x === undefined ? B.left : this.x; + this.y = this.y === undefined ? B.top : this.y + } + this.el.setLeftTop(this.x, this.y); + if (this.expandOnShow) { + this.expand(false) + } + if (this.modal) { + Ext.getBody().addClass("x-body-masked"); + this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); + this.mask.show() + } + }, + show: function(C, A, B) { + if (!this.rendered) { + this.render(Ext.getBody()) + } + if (this.hidden === false) { + this.toFront(); + return + } + if (this.fireEvent("beforeshow", this) === false) { + return + } + if (A) { + this.on("show", A, B, { + single: true + }) + } + this.hidden = false; + if (C !== undefined) { + this.setAnimateTarget(C) + } + this.beforeShow(); + if (this.animateTarget) { + this.animShow() + } else { + this.afterShow() + } + }, + afterShow: function() { + this.proxy.hide(); + this.el.setStyle("display", "block"); + this.el.show(); + if (this.maximized) { + this.fitContainer() + } + if (Ext.isMac && Ext.isGecko) { + this.cascade(this.setAutoScroll) + } + if (this.monitorResize || this.modal || this.constrain || this.constrainHeader) { + Ext.EventManager.onWindowResize(this.onWindowResize, this) + } + this.doConstrain(); + if (this.layout) { + this.doLayout() + } + if (this.keyMap) { + this.keyMap.enable() + } + this.toFront(); + this.updateHandles(); + this.fireEvent("show", this) + }, + animShow: function() { + this.proxy.show(); + this.proxy.setBox(this.animateTarget.getBox()); + this.proxy.setOpacity(0); + var A = this.getBox(false); + A.callback = this.afterShow; + A.scope = this; + A.duration = 0.25; + A.easing = "easeNone"; + A.opacity = 0.5; + A.block = true; + this.el.setStyle("display", "none"); + this.proxy.shift(A) + }, + hide: function(C, A, B) { + if (this.hidden || this.fireEvent("beforehide", this) === false) { + return + } + if (A) { + this.on("hide", A, B, { + single: true + }) + } + this.hidden = true; + if (C !== undefined) { + this.setAnimateTarget(C) + } + if (this.animateTarget) { + this.animHide() + } else { + this.el.hide(); + this.afterHide() + } + }, + afterHide: function() { + this.proxy.hide(); + if (this.monitorResize || this.modal || this.constrain || this.constrainHeader) { + Ext.EventManager.removeResizeListener(this.onWindowResize, this) + } + if (this.modal) { + this.mask.hide(); + Ext.getBody().removeClass("x-body-masked") + } + if (this.keyMap) { + this.keyMap.disable() + } + this.fireEvent("hide", this) + }, + animHide: function() { + this.proxy.setOpacity(0.5); + this.proxy.show(); + var B = this.getBox(false); + this.proxy.setBox(B); + this.el.hide(); + var A = this.animateTarget.getBox(); + A.callback = this.afterHide; + A.scope = this; + A.duration = 0.25; + A.easing = "easeNone"; + A.block = true; + A.opacity = 0; + this.proxy.shift(A) + }, + onWindowResize: function() { + if (this.maximized) { + this.fitContainer() + } + if (this.modal) { + this.mask.setSize("100%", "100%"); + var A = this.mask.dom.offsetHeight; + this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)) + } + this.doConstrain() + }, + doConstrain: function() { + if (this.constrain || this.constrainHeader) { + var B; + if (this.constrain) { + B = { + right: this.el.shadowOffset, + left: this.el.shadowOffset, + bottom: this.el.shadowOffset + } + } else { + var A = this.getSize(); + B = { + right: -(A.width - 100), + bottom: -(A.height - 25) + } + } + var C = this.el.getConstrainToXY(this.container, true, B); + if (C) { + this.setPosition(C[0], C[1]) + } + } + }, + ghost: function(A) { + var C = this.createGhost(A); + var B = this.getBox(true); + C.setLeftTop(B.x, B.y); + C.setWidth(B.width); + this.el.hide(); + this.activeGhost = C; + return C + }, + unghost: function(B, A) { + if (B !== false) { + this.el.show(); + this.focus(); + if (Ext.isMac && Ext.isGecko) { + this.cascade(this.setAutoScroll) + } + } + if (A !== false) { + this.setPosition(this.activeGhost.getLeft(true), this.activeGhost.getTop(true)) + } + this.activeGhost.hide(); + this.activeGhost.remove(); + delete this.activeGhost + }, + minimize: function() { + this.fireEvent("minimize", this) + }, + close: function() { + if (this.fireEvent("beforeclose", this) !== false) { + this.hide(null, function() { + this.fireEvent("close", this); + this.destroy() + }, this) + } + }, + maximize: function() { + if (!this.maximized) { + this.expand(false); + this.restoreSize = this.getSize(); + this.restorePos = this.getPosition(true); + this.tools.maximize.hide(); + this.tools.restore.show(); + this.maximized = true; + this.el.disableShadow(); + if (this.dd) { + this.dd.lock() + } + if (this.collapsible) { + this.tools.toggle.hide() + } + this.el.addClass("x-window-maximized"); + this.container.addClass("x-window-maximized-ct"); + this.setPosition(0, 0); + this.fitContainer(); + this.fireEvent("maximize", this) + } + }, + restore: function() { + if (this.maximized) { + this.el.removeClass("x-window-maximized"); + this.tools.restore.hide(); + this.tools.maximize.show(); + this.setPosition(this.restorePos[0], this.restorePos[1]); + this.setSize(this.restoreSize.width, this.restoreSize.height); + delete this.restorePos; + delete this.restoreSize; + this.maximized = false; + this.el.enableShadow(true); + if (this.dd) { + this.dd.unlock() + } + if (this.collapsible) { + this.tools.toggle.show() + } + this.container.removeClass("x-window-maximized-ct"); + this.doConstrain(); + this.fireEvent("restore", this) + } + }, + toggleMaximize: function() { + this[this.maximized ? "restore" : "maximize"]() + }, + fitContainer: function() { + var A = this.container.getViewSize(); + this.setSize(A.width, A.height) + }, + setZIndex: function(A) { + if (this.modal) { + this.mask.setStyle("z-index", A) + } + this.el.setZIndex(++A); + A += 5; + if (this.resizer) { + this.resizer.proxy.setStyle("z-index", ++A) + } + this.lastZIndex = A + }, + alignTo: function(B, A, C) { + var D = this.el.getAlignToXY(B, A, C); + this.setPagePosition(D[0], D[1]); + return this + }, + anchorTo: function(C, G, D, B, F) { + var E = function() { + this.alignTo(C, G, D) + }; + Ext.EventManager.onWindowResize(E, this); + var A = typeof B; + if (A != "undefined") { + Ext.EventManager.on(window, "scroll", E, this, { + buffer: A == "number" ? B : 50 + }) + } + E.call(this); + this[F] = E; + return this + }, + toFront: function() { + if (this.manager.bringToFront(this)) { + this.focus() + } + return this + }, + setActive: function(A) { + if (A) { + if (!this.maximized) { + this.el.enableShadow(true) + } + this.fireEvent("activate", this) + } else { + this.el.disableShadow(); + this.fireEvent("deactivate", this) + } + }, + toBack: function() { + this.manager.sendToBack(this); + return this + }, + center: function() { + var A = this.el.getAlignToXY(this.container, "c-c"); + this.setPagePosition(A[0], A[1]); + return this + } +}); +Ext.reg("window", Ext.Window); +Ext.Window.DD = function(A) { + this.win = A; + Ext.Window.DD.superclass.constructor.call(this, A.el.id, "WindowDD-" + A.id); + this.setHandleElId(A.header.id); + this.scroll = false +}; +Ext.extend(Ext.Window.DD, Ext.dd.DD, { + moveOnly: true, + headerOffsets: [100, 25], + startDrag: function() { + var A = this.win; + this.proxy = A.ghost(); + if (A.constrain !== false) { + var C = A.el.shadowOffset; + this.constrainTo(A.container, { + right: C, + left: C, + bottom: C + }) + } else { + if (A.constrainHeader !== false) { + var B = this.proxy.getSize(); + this.constrainTo(A.container, { + right: -(B.width - this.headerOffsets[0]), + bottom: -(B.height - this.headerOffsets[1]) + }) + } + } + }, + b4Drag: Ext.emptyFn, + onDrag: function(A) { + this.alignElWithMouse(this.proxy, A.getPageX(), A.getPageY()) + }, + endDrag: function(A) { + this.win.unghost(); + this.win.saveState() + } +}); +Ext.WindowGroup = function() { + var F = {}; + var D = []; + var E = null; + var C = function(I, H) { + return (!I._lastAccess || I._lastAccess < H._lastAccess) ? -1 : 1 + }; + var G = function() { + var J = D, + H = J.length; + if (H > 0) { + J.sort(C); + var I = J[0].manager.zseed; + for (var K = 0; K < H; K++) { + var L = J[K]; + if (L && !L.hidden) { + L.setZIndex(I + (K * 10)) + } + } + } + A() + }; + var B = function(H) { + if (H != E) { + if (E) { + E.setActive(false) + } + E = H; + if (H) { + H.setActive(true) + } + } + }; + var A = function() { + for (var H = D.length - 1; H >= 0; --H) { + if (!D[H].hidden) { + B(D[H]); + return + } + } + B(null) + }; + return { + zseed: 9000, + register: function(H) { + F[H.id] = H; + D.push(H); + H.on("hide", A) + }, + unregister: function(H) { + delete F[H.id]; + H.un("hide", A); + D.remove(H) + }, + get: function(H) { + return typeof H == "object" ? H : F[H] + }, + bringToFront: function(H) { + H = this.get(H); + if (H != E) { + H._lastAccess = new Date().getTime(); + G(); + return true + } + return false + }, + sendToBack: function(H) { + H = this.get(H); + H._lastAccess = -(new Date().getTime()); + G(); + return H + }, + hideAll: function() { + for (var H in F) { + if (F[H] && typeof F[H] != "function" && F[H].isVisible()) { + F[H].hide() + } + } + }, + getActive: function() { + return E + }, + getBy: function(J, I) { + var K = []; + for (var H = D.length - 1; H >= 0; --H) { + var L = D[H]; + if (J.call(I || L, L) !== false) { + K.push(L) + } + } + return K + }, + each: function(I, H) { + for (var J in F) { + if (F[J] && typeof F[J] != "function") { + if (I.call(H || F[J], F[J]) === false) { + return + } + } + } + } + } +}; +Ext.WindowMgr = new Ext.WindowGroup(); +Ext.dd.PanelProxy = function(A, B) { + this.panel = A; + this.id = this.panel.id + "-ddproxy"; + Ext.apply(this, B) +}; +Ext.dd.PanelProxy.prototype = { + insertProxy: true, + setStatus: Ext.emptyFn, + reset: Ext.emptyFn, + update: Ext.emptyFn, + stop: Ext.emptyFn, + sync: Ext.emptyFn, + getEl: function() { + return this.ghost + }, + getGhost: function() { + return this.ghost + }, + getProxy: function() { + return this.proxy + }, + hide: function() { + if (this.ghost) { + if (this.proxy) { + this.proxy.remove(); + delete this.proxy + } + this.panel.el.dom.style.display = ""; + this.ghost.remove(); + delete this.ghost + } + }, + show: function() { + if (!this.ghost) { + this.ghost = this.panel.createGhost(undefined, undefined, Ext.getBody()); + this.ghost.setXY(this.panel.el.getXY()); + if (this.insertProxy) { + this.proxy = this.panel.el.insertSibling({ + cls: "x-panel-dd-spacer" + }); + this.proxy.setSize(this.panel.getSize()) + } + this.panel.el.dom.style.display = "none" + } + }, + repair: function(B, C, A) { + this.hide(); + if (typeof C == "function") { + C.call(A || this) + } + }, + moveProxy: function(A, B) { + if (this.proxy) { + A.insertBefore(this.proxy.dom, B) + } + } +}; +Ext.Panel.DD = function(B, A) { + this.panel = B; + this.dragData = { + panel: B + }; + this.proxy = new Ext.dd.PanelProxy(B, A); + Ext.Panel.DD.superclass.constructor.call(this, B.el, A); + this.setHandleElId(B.header.id); + B.header.setStyle("cursor", "move"); + this.scroll = false +}; +Ext.extend(Ext.Panel.DD, Ext.dd.DragSource, { + showFrame: Ext.emptyFn, + startDrag: Ext.emptyFn, + b4StartDrag: function(A, B) { + this.proxy.show() + }, + b4MouseDown: function(B) { + var A = B.getPageX(); + var C = B.getPageY(); + this.autoOffset(A, C) + }, + onInitDrag: function(A, B) { + this.onStartDrag(A, B); + return true + }, + createFrame: Ext.emptyFn, + getDragEl: function(A) { + return this.proxy.ghost.dom + }, + endDrag: function(A) { + this.proxy.hide(); + this.panel.saveState() + }, + autoOffset: function(A, B) { + A -= this.startPageX; + B -= this.startPageY; + this.setDelta(A, B) + } +}); +Ext.state.Provider = function() { + this.addEvents("statechange"); + this.state = {}; + Ext.state.Provider.superclass.constructor.call(this) +}; +Ext.extend(Ext.state.Provider, Ext.util.Observable, { + get: function(B, A) { + return typeof this.state[B] == "undefined" ? A : this.state[B] + }, + clear: function(A) { + delete this.state[A]; + this.fireEvent("statechange", this, A, null) + }, + set: function(A, B) { + this.state[A] = B; + this.fireEvent("statechange", this, A, B) + }, + decodeValue: function(A) { + var J = /^(a|n|d|b|s|o)\:(.*)$/; + var C = J.exec(unescape(A)); + if (!C || !C[1]) { + return + } + var F = C[1]; + var H = C[2]; + switch (F) { + case "n": + return parseFloat(H); + case "d": + return new Date(Date.parse(H)); + case "b": + return (H == "1"); + case "a": + var G = []; + var I = H.split("^"); + for (var B = 0, D = I.length; B < D; B++) { + G.push(this.decodeValue(I[B])) + } + return G; + case "o": + var G = {}; + var I = H.split("^"); + for (var B = 0, D = I.length; B < D; B++) { + var E = I[B].split("="); + G[E[0]] = this.decodeValue(E[1]) + } + return G; + default: + return H + } + }, + encodeValue: function(C) { + var B; + if (typeof C == "number") { + B = "n:" + C + } else { + if (typeof C == "boolean") { + B = "b:" + (C ? "1" : "0") + } else { + if (Ext.isDate(C)) { + B = "d:" + C.toGMTString() + } else { + if (Ext.isArray(C)) { + var F = ""; + for (var E = 0, A = C.length; E < A; E++) { + F += this.encodeValue(C[E]); + if (E != A - 1) { + F += "^" + } + } + B = "a:" + F + } else { + if (typeof C == "object") { + var F = ""; + for (var D in C) { + if (typeof C[D] != "function" && C[D] !== undefined) { + F += D + "=" + this.encodeValue(C[D]) + "^" + } + } + B = "o:" + F.substring(0, F.length - 1) + } else { + B = "s:" + C + } + } + } + } + } + return escape(B) + } +}); +Ext.state.Manager = function() { + var A = new Ext.state.Provider(); + return { + setProvider: function(B) { + A = B + }, + get: function(C, B) { + return A.get(C, B) + }, + set: function(B, C) { + A.set(B, C) + }, + clear: function(B) { + A.clear(B) + }, + getProvider: function() { + return A + } + } +}(); +Ext.state.CookieProvider = function(A) { + Ext.state.CookieProvider.superclass.constructor.call(this); + this.path = "/"; + this.expires = new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 7)); + this.domain = null; + this.secure = false; + Ext.apply(this, A); + this.state = this.readCookies() +}; +Ext.extend(Ext.state.CookieProvider, Ext.state.Provider, { + set: function(A, B) { + if (typeof B == "undefined" || B === null) { + this.clear(A); + return + } + this.setCookie(A, B); + Ext.state.CookieProvider.superclass.set.call(this, A, B) + }, + clear: function(A) { + this.clearCookie(A); + Ext.state.CookieProvider.superclass.clear.call(this, A) + }, + readCookies: function() { + var C = {}; + var F = document.cookie + ";"; + var B = /\s?(.*?)=(.*?);/g; + var E; + while ((E = B.exec(F)) != null) { + var A = E[1]; + var D = E[2]; + if (A && A.substring(0, 3) == "ys-") { + C[A.substr(3)] = this.decodeValue(D) + } + } + return C + }, + setCookie: function(A, B) { + document.cookie = "ys-" + A + "=" + this.encodeValue(B) + ((this.expires == null) ? "" : ("; expires=" + this.expires.toGMTString())) + ((this.path == null) ? "" : ("; path=" + this.path)) + ((this.domain == null) ? "" : ("; domain=" + this.domain)) + ((this.secure == true) ? "; secure" : "") + }, + clearCookie: function(A) { + document.cookie = "ys-" + A + "=null; expires=Thu, 01-Jan-70 00:00:01 GMT" + ((this.path == null) ? "" : ("; path=" + this.path)) + ((this.domain == null) ? "" : ("; domain=" + this.domain)) + ((this.secure == true) ? "; secure" : "") + } +}); +Ext.DataView = Ext.extend(Ext.BoxComponent, { + selectedClass: "x-view-selected", + emptyText: "", + last: false, + initComponent: function() { + Ext.DataView.superclass.initComponent.call(this); + if (typeof this.tpl == "string") { + this.tpl = new Ext.XTemplate(this.tpl) + } + this.addEvents("beforeclick", "click", "containerclick", "dblclick", "contextmenu", "selectionchange", "beforeselect"); + this.all = new Ext.CompositeElementLite(); + this.selected = new Ext.CompositeElementLite() + }, + onRender: function() { + if (!this.el) { + this.el = document.createElement("div") + } + Ext.DataView.superclass.onRender.apply(this, arguments) + }, + afterRender: function() { + Ext.DataView.superclass.afterRender.call(this); + this.el.on({ + "click": this.onClick, + "dblclick": this.onDblClick, + "contextmenu": this.onContextMenu, + scope: this + }); + if (this.overClass) { + this.el.on({ + "mouseover": this.onMouseOver, + "mouseout": this.onMouseOut, + scope: this + }) + } + if (this.store) { + this.setStore(this.store, true) + } + }, + refresh: function() { + this.clearSelections(false, true); + this.el.update(""); + var B = []; + var A = this.store.getRange(); + if (A.length < 1) { + this.el.update(this.emptyText); + this.all.clear(); + return + } + this.tpl.overwrite(this.el, this.collectData(A, 0)); + this.all.fill(Ext.query(this.itemSelector, this.el.dom)); + this.updateIndexes(0) + }, + prepareData: function(A) { + return A + }, + collectData: function(B, E) { + var D = []; + for (var C = 0, A = B.length; C < A; C++) { + D[D.length] = this.prepareData(B[C].data, E + C, B[C]) + } + return D + }, + bufferRender: function(A) { + var B = document.createElement("div"); + this.tpl.overwrite(B, this.collectData(A)); + return Ext.query(this.itemSelector, B) + }, + onUpdate: function(F, A) { + var B = this.store.indexOf(A); + var E = this.isSelected(B); + var C = this.all.elements[B]; + var D = this.bufferRender([A], B)[0]; + this.all.replaceElement(B, D, true); + if (E) { + this.selected.replaceElement(C, D); + this.all.item(B).addClass(this.selectedClass) + } + this.updateIndexes(B, B) + }, + onAdd: function(D, B, C) { + if (this.all.getCount() == 0) { + this.refresh(); + return + } + var A = this.bufferRender(B, C), + E; + if (C < this.all.getCount()) { + E = this.all.item(C).insertSibling(A, "before", true); + this.all.elements.splice(C, 0, E) + } else { + E = this.all.last().insertSibling(A, "after", true); + this.all.elements.push(E) + } + this.updateIndexes(C) + }, + onRemove: function(C, A, B) { + this.deselect(B); + this.all.removeElement(B, true); + this.updateIndexes(B) + }, + refreshNode: function(A) { + this.onUpdate(this.store, this.store.getAt(A)) + }, + updateIndexes: function(D, C) { + var B = this.all.elements; + D = D || 0; + C = C || ((C === 0) ? 0 : (B.length - 1)); + for (var A = D; A <= C; A++) { + B[A].viewIndex = A + } + }, + setStore: function(A, B) { + if (!B && this.store) { + this.store.un("beforeload", this.onBeforeLoad, this); + this.store.un("datachanged", this.refresh, this); + this.store.un("add", this.onAdd, this); + this.store.un("remove", this.onRemove, this); + this.store.un("update", this.onUpdate, this); + this.store.un("clear", this.refresh, this) + } + if (A) { + A = Ext.StoreMgr.lookup(A); + A.on("beforeload", this.onBeforeLoad, this); + A.on("datachanged", this.refresh, this); + A.on("add", this.onAdd, this); + A.on("remove", this.onRemove, this); + A.on("update", this.onUpdate, this); + A.on("clear", this.refresh, this) + } + this.store = A; + if (A) { + this.refresh() + } + }, + findItemFromChild: function(A) { + return Ext.fly(A).findParent(this.itemSelector, this.el) + }, + onClick: function(C) { + var B = C.getTarget(this.itemSelector, this.el); + if (B) { + var A = this.indexOf(B); + if (this.onItemClick(B, A, C) !== false) { + this.fireEvent("click", this, A, B, C) + } + } else { + if (this.fireEvent("containerclick", this, C) !== false) { + this.clearSelections() + } + } + }, + onContextMenu: function(B) { + var A = B.getTarget(this.itemSelector, this.el); + if (A) { + this.fireEvent("contextmenu", this, this.indexOf(A), A, B) + } + }, + onDblClick: function(B) { + var A = B.getTarget(this.itemSelector, this.el); + if (A) { + this.fireEvent("dblclick", this, this.indexOf(A), A, B) + } + }, + onMouseOver: function(B) { + var A = B.getTarget(this.itemSelector, this.el); + if (A && A !== this.lastItem) { + this.lastItem = A; + Ext.fly(A).addClass(this.overClass) + } + }, + onMouseOut: function(A) { + if (this.lastItem) { + if (!A.within(this.lastItem, true)) { + Ext.fly(this.lastItem).removeClass(this.overClass); + delete this.lastItem + } + } + }, + onItemClick: function(B, A, C) { + if (this.fireEvent("beforeclick", this, A, B, C) === false) { + return false + } + if (this.multiSelect) { + this.doMultiSelection(B, A, C); + C.preventDefault() + } else { + if (this.singleSelect) { + this.doSingleSelection(B, A, C); + C.preventDefault() + } + } + return true + }, + doSingleSelection: function(B, A, C) { + if (C.ctrlKey && this.isSelected(A)) { + this.deselect(A) + } else { + this.select(A, false) + } + }, + doMultiSelection: function(C, A, D) { + if (D.shiftKey && this.last !== false) { + var B = this.last; + this.selectRange(B, A, D.ctrlKey); + this.last = B + } else { + if ((D.ctrlKey || this.simpleSelect) && this.isSelected(A)) { + this.deselect(A) + } else { + this.select(A, D.ctrlKey || D.shiftKey || this.simpleSelect) + } + } + }, + getSelectionCount: function() { + return this.selected.getCount() + }, + getSelectedNodes: function() { + return this.selected.elements + }, + getSelectedIndexes: function() { + var B = [], + D = this.selected.elements; + for (var C = 0, A = D.length; C < A; C++) { + B.push(D[C].viewIndex) + } + return B + }, + getSelectedRecords: function() { + var D = [], + C = this.selected.elements; + for (var B = 0, A = C.length; B < A; B++) { + D[D.length] = this.store.getAt(C[B].viewIndex) + } + return D + }, + getRecords: function(B) { + var E = [], + D = B; + for (var C = 0, A = D.length; C < A; C++) { + E[E.length] = this.store.getAt(D[C].viewIndex) + } + return E + }, + getRecord: function(A) { + return this.store.getAt(A.viewIndex) + }, + clearSelections: function(A, B) { + if (this.multiSelect || this.singleSelect) { + if (!B) { + this.selected.removeClass(this.selectedClass) + } + this.selected.clear(); + this.last = false; + if (!A) { + this.fireEvent("selectionchange", this, this.selected.elements) + } + } + }, + isSelected: function(A) { + return this.selected.contains(this.getNode(A)) + }, + deselect: function(A) { + if (this.isSelected(A)) { + var A = this.getNode(A); + this.selected.removeElement(A); + if (this.last == A.viewIndex) { + this.last = false + } + Ext.fly(A).removeClass(this.selectedClass); + this.fireEvent("selectionchange", this, this.selected.elements) + } + }, + select: function(D, F, B) { + if (Ext.isArray(D)) { + if (!F) { + this.clearSelections(true) + } + for (var C = 0, A = D.length; C < A; C++) { + this.select(D[C], true, true) + } + } else { + var E = this.getNode(D); + if (!F) { + this.clearSelections(true) + } + if (E && !this.isSelected(E)) { + if (this.fireEvent("beforeselect", this, E, this.selected.elements) !== false) { + Ext.fly(E).addClass(this.selectedClass); + this.selected.add(E); + this.last = E.viewIndex; + if (!B) { + this.fireEvent("selectionchange", this, this.selected.elements) + } + } + } + } + }, + selectRange: function(C, A, B) { + if (!B) { + this.clearSelections(true) + } + this.select(this.getNodes(C, A), true) + }, + getNode: function(A) { + if (typeof A == "string") { + return document.getElementById(A) + } else { + if (typeof A == "number") { + return this.all.elements[A] + } + } + return A + }, + getNodes: function(E, A) { + var D = this.all.elements; + E = E || 0; + A = typeof A == "undefined" ? D.length - 1 : A; + var B = [], + C; + if (E <= A) { + for (C = E; C <= A; C++) { + B.push(D[C]) + } + } else { + for (C = E; C >= A; C--) { + B.push(D[C]) + } + } + return B + }, + indexOf: function(A) { + A = this.getNode(A); + if (typeof A.viewIndex == "number") { + return A.viewIndex + } + return this.all.indexOf(A) + }, + onBeforeLoad: function() { + if (this.loadingText) { + this.clearSelections(false, true); + this.el.update("
    " + this.loadingText + "
    "); + this.all.clear() + } + } +}); +Ext.reg("dataview", Ext.DataView); +Ext.ColorPalette = function(A) { + Ext.ColorPalette.superclass.constructor.call(this, A); + this.addEvents("select"); + if (this.handler) { + this.on("select", this.handler, this.scope, true) + } +}; +Ext.extend(Ext.ColorPalette, Ext.Component, { + itemCls: "x-color-palette", + value: null, + clickEvent: "click", + ctype: "Ext.ColorPalette", + allowReselect: false, + colors: ["000000", "993300", "333300", "003300", "003366", "000080", "333399", "333333", "800000", "FF6600", "808000", "008000", "008080", "0000FF", "666699", "808080", "FF0000", "FF9900", "99CC00", "339966", "33CCCC", "3366FF", "800080", "969696", "FF00FF", "FFCC00", "FFFF00", "00FF00", "00FFFF", "00CCFF", "993366", "C0C0C0", "FF99CC", "FFCC99", "FFFF99", "CCFFCC", "CCFFFF", "99CCFF", "CC99FF", "FFFFFF"], + onRender: function(B, A) { + var C = this.tpl || new Ext.XTemplate(" "); + var D = document.createElement("div"); + D.className = this.itemCls; + C.overwrite(D, this.colors); + B.dom.insertBefore(D, A); + this.el = Ext.get(D); + this.el.on(this.clickEvent, this.handleClick, this, { + delegate: "a" + }); + if (this.clickEvent != "click") { + this.el.on("click", Ext.emptyFn, this, { + delegate: "a", + preventDefault: true + }) + } + }, + afterRender: function() { + Ext.ColorPalette.superclass.afterRender.call(this); + if (this.value) { + var A = this.value; + this.value = null; + this.select(A) + } + }, + handleClick: function(B, A) { + B.preventDefault(); + if (!this.disabled) { + var C = A.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1]; + this.select(C.toUpperCase()) + } + }, + select: function(A) { + A = A.replace("#", ""); + if (A != this.value || this.allowReselect) { + var B = this.el; + if (this.value) { + B.child("a.color-" + this.value).removeClass("x-color-palette-sel") + } + B.child("a.color-" + A).addClass("x-color-palette-sel"); + this.value = A; + this.fireEvent("select", this, A) + } + } +}); +Ext.reg("colorpalette", Ext.ColorPalette); +Ext.DatePicker = Ext.extend(Ext.Component, { + todayText: "Today", + okText: " OK ", + cancelText: "Cancel", + todayTip: "{0} (Spacebar)", + minDate: null, + maxDate: null, + minText: "This date is before the minimum date", + maxText: "This date is after the maximum date", + format: "m/d/y", + disabledDays: null, + disabledDaysText: "", + disabledDatesRE: null, + disabledDatesText: "", + constrainToViewport: true, + monthNames: Date.monthNames, + dayNames: Date.dayNames, + nextText: "Next Month (Control+Right)", + prevText: "Previous Month (Control+Left)", + monthYearText: "Choose a month (Control+Up/Down to move years)", + startDay: 0, + initComponent: function() { + Ext.DatePicker.superclass.initComponent.call(this); + this.value = this.value ? this.value.clearTime() : new Date().clearTime(); + this.addEvents("select"); + if (this.handler) { + this.on("select", this.handler, this.scope || this) + } + this.initDisabledDays() + }, + initDisabledDays: function() { + if (!this.disabledDatesRE && this.disabledDates) { + var A = this.disabledDates; + var C = "(?:"; + for (var B = 0; B < A.length; B++) { + C += A[B]; + if (B != A.length - 1) { + C += "|" + } + } + this.disabledDatesRE = new RegExp(C + ")") + } + }, + setValue: function(B) { + var A = this.value; + this.value = B.clearTime(true); + if (this.el) { + this.update(this.value) + } + }, + getValue: function() { + return this.value + }, + focus: function() { + if (this.el) { + this.update(this.activeDate) + } + }, + onRender: function(A, F) { + var C = ["", "", "
      
    "]; + var E = this.dayNames; + for (var D = 0; D < 7; D++) { + var G = this.startDay + D; + if (G > 6) { + G = G - 7 + } + C.push("") + } + C[C.length] = ""; + for (var D = 0; D < 42; D++) { + if (D % 7 == 0 && D != 0) { + C[C.length] = "" + } + C[C.length] = "" + } + C[C.length] = "
    ", E[G].substr(0, 1), "
    "; + var B = document.createElement("div"); + B.className = "x-date-picker"; + B.innerHTML = C.join(""); + A.dom.insertBefore(B, F); + this.el = Ext.get(B); + this.eventEl = Ext.get(B.firstChild); + new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"), { + handler: this.showPrevMonth, + scope: this, + preventDefault: true, + stopDefault: true + }); + new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"), { + handler: this.showNextMonth, + scope: this, + preventDefault: true, + stopDefault: true + }); + this.eventEl.on("mousewheel", this.handleMouseWheel, this); + this.monthPicker = this.el.down("div.x-date-mp"); + this.monthPicker.enableDisplayMode("block"); + var I = new Ext.KeyNav(this.eventEl, { + "left": function(J) { + J.ctrlKey ? this.showPrevMonth() : this.update(this.activeDate.add("d", -1)) + }, + "right": function(J) { + J.ctrlKey ? this.showNextMonth() : this.update(this.activeDate.add("d", 1)) + }, + "up": function(J) { + J.ctrlKey ? this.showNextYear() : this.update(this.activeDate.add("d", -7)) + }, + "down": function(J) { + J.ctrlKey ? this.showPrevYear() : this.update(this.activeDate.add("d", 7)) + }, + "pageUp": function(J) { + this.showNextMonth() + }, + "pageDown": function(J) { + this.showPrevMonth() + }, + "enter": function(J) { + J.stopPropagation(); + return true + }, + scope: this + }); + this.eventEl.on("click", this.handleDateClick, this, { + delegate: "a.x-date-date" + }); + this.eventEl.addKeyListener(Ext.EventObject.SPACE, this.selectToday, this); + this.el.unselectable(); + this.cells = this.el.select("table.x-date-inner tbody td"); + this.textNodes = this.el.query("table.x-date-inner tbody span"); + this.mbtn = new Ext.Button({ + text: " ", + tooltip: this.monthYearText, + renderTo: this.el.child("td.x-date-middle", true) + }); + this.mbtn.on("click", this.showMonthPicker, this); + this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu"); + var H = (new Date()).dateFormat(this.format); + this.todayBtn = new Ext.Button({ + renderTo: this.el.child("td.x-date-bottom", true), + text: String.format(this.todayText, H), + tooltip: String.format(this.todayTip, H), + handler: this.selectToday, + scope: this + }); + if (Ext.isIE) { + this.el.repaint() + } + this.update(this.value) + }, + createMonthPicker: function() { + if (!this.monthPicker.dom.firstChild) { + var A = [""]; + for (var B = 0; B < 6; B++) { + A.push("", "", B == 0 ? "" : "") + } + A.push("", "
    ", this.monthNames[B].substr(0, 3), "", this.monthNames[B + 6].substr(0, 3), "
    "); + this.monthPicker.update(A.join("")); + this.monthPicker.on("click", this.onMonthClick, this); + this.monthPicker.on("dblclick", this.onMonthDblClick, this); + this.mpMonths = this.monthPicker.select("td.x-date-mp-month"); + this.mpYears = this.monthPicker.select("td.x-date-mp-year"); + this.mpMonths.each(function(C, D, E) { + E += 1; + if ((E % 2) == 0) { + C.dom.xmonth = 5 + Math.round(E * 0.5) + } else { + C.dom.xmonth = Math.round((E - 1) * 0.5) + } + }) + } + }, + showMonthPicker: function() { + this.createMonthPicker(); + var A = this.el.getSize(); + this.monthPicker.setSize(A); + this.monthPicker.child("table").setSize(A); + this.mpSelMonth = (this.activeDate || this.value).getMonth(); + this.updateMPMonth(this.mpSelMonth); + this.mpSelYear = (this.activeDate || this.value).getFullYear(); + this.updateMPYear(this.mpSelYear); + this.monthPicker.slideIn("t", { + duration: 0.2 + }) + }, + updateMPYear: function(E) { + this.mpyear = E; + var C = this.mpYears.elements; + for (var B = 1; B <= 10; B++) { + var D = C[B - 1], + A; + if ((B % 2) == 0) { + A = E + Math.round(B * 0.5); + D.firstChild.innerHTML = A; + D.xyear = A + } else { + A = E - (5 - Math.round(B * 0.5)); + D.firstChild.innerHTML = A; + D.xyear = A + } + this.mpYears.item(B - 1)[A == this.mpSelYear ? "addClass" : "removeClass"]("x-date-mp-sel") + } + }, + updateMPMonth: function(A) { + this.mpMonths.each(function(B, C, D) { + B[B.dom.xmonth == A ? "addClass" : "removeClass"]("x-date-mp-sel") + }) + }, + selectMPMonth: function(A) {}, + onMonthClick: function(D, B) { + D.stopEvent(); + var C = new Ext.Element(B), + A; + if (C.is("button.x-date-mp-cancel")) { + this.hideMonthPicker() + } else { + if (C.is("button.x-date-mp-ok")) { + this.update(new Date(this.mpSelYear, this.mpSelMonth, (this.activeDate || this.value).getDate())); + this.hideMonthPicker() + } else { + if (A = C.up("td.x-date-mp-month", 2)) { + this.mpMonths.removeClass("x-date-mp-sel"); + A.addClass("x-date-mp-sel"); + this.mpSelMonth = A.dom.xmonth + } else { + if (A = C.up("td.x-date-mp-year", 2)) { + this.mpYears.removeClass("x-date-mp-sel"); + A.addClass("x-date-mp-sel"); + this.mpSelYear = A.dom.xyear + } else { + if (C.is("a.x-date-mp-prev")) { + this.updateMPYear(this.mpyear - 10) + } else { + if (C.is("a.x-date-mp-next")) { + this.updateMPYear(this.mpyear + 10) + } + } + } + } + } + } + }, + onMonthDblClick: function(D, B) { + D.stopEvent(); + var C = new Ext.Element(B), + A; + if (A = C.up("td.x-date-mp-month", 2)) { + this.update(new Date(this.mpSelYear, A.dom.xmonth, (this.activeDate || this.value).getDate())); + this.hideMonthPicker() + } else { + if (A = C.up("td.x-date-mp-year", 2)) { + this.update(new Date(A.dom.xyear, this.mpSelMonth, (this.activeDate || this.value).getDate())); + this.hideMonthPicker() + } + } + }, + hideMonthPicker: function(A) { + if (this.monthPicker) { + if (A === true) { + this.monthPicker.hide() + } else { + this.monthPicker.slideOut("t", { + duration: 0.2 + }) + } + } + }, + showPrevMonth: function(A) { + this.update(this.activeDate.add("mo", -1)) + }, + showNextMonth: function(A) { + this.update(this.activeDate.add("mo", 1)) + }, + showPrevYear: function() { + this.update(this.activeDate.add("y", -1)) + }, + showNextYear: function() { + this.update(this.activeDate.add("y", 1)) + }, + handleMouseWheel: function(A) { + var B = A.getWheelDelta(); + if (B > 0) { + this.showPrevMonth(); + A.stopEvent() + } else { + if (B < 0) { + this.showNextMonth(); + A.stopEvent() + } + } + }, + handleDateClick: function(B, A) { + B.stopEvent(); + if (A.dateValue && !Ext.fly(A.parentNode).hasClass("x-date-disabled")) { + this.setValue(new Date(A.dateValue)); + this.fireEvent("select", this, this.value) + } + }, + selectToday: function() { + this.setValue(new Date().clearTime()); + this.fireEvent("select", this, this.value) + }, + update: function(W) { + var A = this.activeDate; + this.activeDate = W; + if (A && this.el) { + var I = W.getTime(); + if (A.getMonth() == W.getMonth() && A.getFullYear() == W.getFullYear()) { + this.cells.removeClass("x-date-selected"); + this.cells.each(function(a) { + if (a.dom.firstChild.dateValue == I) { + a.addClass("x-date-selected"); + setTimeout(function() { + try { + a.dom.firstChild.focus() + } catch (b) {} + }, 50); + return false + } + }); + return + } + } + var F = W.getDaysInMonth(); + var J = W.getFirstDateOfMonth(); + var C = J.getDay() - this.startDay; + if (C <= this.startDay) { + C += 7 + } + var S = W.add("mo", -1); + var D = S.getDaysInMonth() - C; + var B = this.cells.elements; + var K = this.textNodes; + F += C; + var P = 86400000; + var U = (new Date(S.getFullYear(), S.getMonth(), D)).clearTime(); + var T = new Date().clearTime().getTime(); + var N = W.clearTime().getTime(); + var M = this.minDate ? this.minDate.clearTime() : Number.NEGATIVE_INFINITY; + var Q = this.maxDate ? this.maxDate.clearTime() : Number.POSITIVE_INFINITY; + var X = this.disabledDatesRE; + var L = this.disabledDatesText; + var Z = this.disabledDays ? this.disabledDays.join("") : false; + var V = this.disabledDaysText; + var R = this.format; + var G = function(d, a) { + a.title = ""; + var b = U.getTime(); + a.firstChild.dateValue = b; + if (b == T) { + a.className += " x-date-today"; + a.title = d.todayText + } + if (b == N) { + a.className += " x-date-selected"; + setTimeout(function() { + try { + a.firstChild.focus() + } catch (f) {} + }, 50) + } + if (b < M) { + a.className = " x-date-disabled"; + a.title = d.minText; + return + } + if (b > Q) { + a.className = " x-date-disabled"; + a.title = d.maxText; + return + } + if (Z) { + if (Z.indexOf(U.getDay()) != -1) { + a.title = V; + a.className = " x-date-disabled" + } + } + if (X && R) { + var c = U.dateFormat(R); + if (X.test(c)) { + a.title = L.replace("%0", c); + a.className = " x-date-disabled" + } + } + }; + var O = 0; + for (; O < C; O++) { + K[O].innerHTML = (++D); + U.setDate(U.getDate() + 1); + B[O].className = "x-date-prevday"; + G(this, B[O]) + } + for (; O < F; O++) { + intDay = O - C + 1; + K[O].innerHTML = (intDay); + U.setDate(U.getDate() + 1); + B[O].className = "x-date-active"; + G(this, B[O]) + } + var Y = 0; + for (; O < 42; O++) { + K[O].innerHTML = (++Y); + U.setDate(U.getDate() + 1); + B[O].className = "x-date-nextday"; + G(this, B[O]) + } + this.mbtn.setText(this.monthNames[W.getMonth()] + " " + W.getFullYear()); + if (!this.internalRender) { + var E = this.el.dom.firstChild; + var H = E.offsetWidth; + this.el.setWidth(H + this.el.getBorderWidth("lr")); + Ext.fly(E).setWidth(H); + this.internalRender = true; + if (Ext.isOpera && !this.secondPass) { + E.rows[0].cells[1].style.width = (H - (E.rows[0].cells[0].offsetWidth + E.rows[0].cells[2].offsetWidth)) + "px"; + this.secondPass = true; + this.update.defer(10, this, [W]) + } + } + }, + beforeDestroy: function() { + this.mbtn.destroy(); + this.todayBtn.destroy() + } +}); +Ext.reg("datepicker", Ext.DatePicker); +Ext.TabPanel = Ext.extend(Ext.Panel, { + monitorResize: true, + deferredRender: true, + tabWidth: 120, + minTabWidth: 30, + resizeTabs: false, + enableTabScroll: false, + scrollIncrement: 0, + scrollRepeatInterval: 400, + scrollDuration: 0.35, + animScroll: true, + tabPosition: "top", + baseCls: "x-tab-panel", + autoTabs: false, + autoTabSelector: "div.x-tab", + activeTab: null, + tabMargin: 2, + plain: false, + wheelIncrement: 20, + idDelimiter: "__", + itemCls: "x-tab-item", + elements: "body", + headerAsText: false, + frame: false, + hideBorders: true, + initComponent: function() { + this.frame = false; + Ext.TabPanel.superclass.initComponent.call(this); + this.addEvents("beforetabchange", "tabchange", "contextmenu"); + this.setLayout(new Ext.layout.CardLayout({ + deferredRender: this.deferredRender + })); + if (this.tabPosition == "top") { + this.elements += ",header"; + this.stripTarget = "header" + } else { + this.elements += ",footer"; + this.stripTarget = "footer" + } + if (!this.stack) { + this.stack = Ext.TabPanel.AccessStack() + } + this.initItems() + }, + render: function() { + Ext.TabPanel.superclass.render.apply(this, arguments); + if (this.activeTab !== undefined) { + var A = this.activeTab; + delete this.activeTab; + this.setActiveTab(A) + } + }, + onRender: function(C, A) { + Ext.TabPanel.superclass.onRender.call(this, C, A); + if (this.plain) { + var E = this.tabPosition == "top" ? "header" : "footer"; + this[E].addClass("x-tab-panel-" + E + "-plain") + } + var B = this[this.stripTarget]; + this.stripWrap = B.createChild({ + cls: "x-tab-strip-wrap", + cn: { + tag: "ul", + cls: "x-tab-strip x-tab-strip-" + this.tabPosition + } + }); + this.stripSpacer = B.createChild({ + cls: "x-tab-strip-spacer" + }); + this.strip = new Ext.Element(this.stripWrap.dom.firstChild); + this.edge = this.strip.createChild({ + tag: "li", + cls: "x-tab-edge" + }); + this.strip.createChild({ + cls: "x-clear" + }); + this.body.addClass("x-tab-panel-body-" + this.tabPosition); + if (!this.itemTpl) { + var D = new Ext.Template("
  • ", "", "{text}", "
  • "); + D.disableFormats = true; + D.compile(); + Ext.TabPanel.prototype.itemTpl = D + } + this.items.each(this.initTab, this) + }, + afterRender: function() { + Ext.TabPanel.superclass.afterRender.call(this); + if (this.autoTabs) { + this.readTabs(false) + } + }, + initEvents: function() { + Ext.TabPanel.superclass.initEvents.call(this); + this.on("add", this.onAdd, this); + this.on("remove", this.onRemove, this); + this.strip.on("mousedown", this.onStripMouseDown, this); + this.strip.on("click", this.onStripClick, this); + this.strip.on("contextmenu", this.onStripContextMenu, this); + if (this.enableTabScroll) { + this.strip.on("mousewheel", this.onWheel, this) + } + }, + findTargets: function(C) { + var B = null; + var A = C.getTarget("li", this.strip); + if (A) { + B = this.getComponent(A.id.split(this.idDelimiter)[1]); + if (B.disabled) { + return { + close: null, + item: null, + el: null + } + } + } + return { + close: C.getTarget(".x-tab-strip-close", this.strip), + item: B, + el: A + } + }, + onStripMouseDown: function(B) { + B.preventDefault(); + if (B.button != 0) { + return + } + var A = this.findTargets(B); + if (A.close) { + this.remove(A.item); + return + } + if (A.item && A.item != this.activeTab) { + this.setActiveTab(A.item) + } + }, + onStripClick: function(B) { + var A = this.findTargets(B); + if (!A.close && A.item && A.item != this.activeTab) { + this.setActiveTab(A.item) + } + }, + onStripContextMenu: function(B) { + B.preventDefault(); + var A = this.findTargets(B); + if (A.item) { + this.fireEvent("contextmenu", this, A.item, B) + } + }, + readTabs: function(D) { + if (D === true) { + this.items.each(function(G) { + this.remove(G) + }, this) + } + var C = this.el.query(this.autoTabSelector); + for (var B = 0, A = C.length; B < A; B++) { + var E = C[B]; + var F = E.getAttribute("title"); + E.removeAttribute("title"); + this.add({ + title: F, + el: E + }) + } + }, + initTab: function(D, B) { + var E = this.strip.dom.childNodes[B]; + var A = D.closable ? "x-tab-strip-closable" : ""; + if (D.disabled) { + A += " x-item-disabled" + } + if (D.iconCls) { + A += " x-tab-with-icon" + } + if (D.tabCls) { + A += " " + D.tabCls + } + var F = { + id: this.id + this.idDelimiter + D.getItemId(), + text: D.title, + cls: A, + iconCls: D.iconCls || "" + }; + var C = E ? this.itemTpl.insertBefore(E, F) : this.itemTpl.append(this.strip, F); + Ext.fly(C).addClassOnOver("x-tab-strip-over"); + if (D.tabTip) { + Ext.fly(C).child("span.x-tab-strip-text", true).qtip = D.tabTip + } + D.on("disable", this.onItemDisabled, this); + D.on("enable", this.onItemEnabled, this); + D.on("titlechange", this.onItemTitleChanged, this); + D.on("beforeshow", this.onBeforeShowItem, this) + }, + onAdd: function(C, B, A) { + this.initTab(B, A); + if (this.items.getCount() == 1) { + this.syncSize() + } + this.delegateUpdates() + }, + onBeforeAdd: function(B) { + var A = B.events ? (this.items.containsKey(B.getItemId()) ? B : null) : this.items.get(B); + if (A) { + this.setActiveTab(B); + return false + } + Ext.TabPanel.superclass.onBeforeAdd.apply(this, arguments); + var C = B.elements; + B.elements = C ? C.replace(",header", "") : C; + B.border = (B.border === true) + }, + onRemove: function(C, B) { + Ext.removeNode(this.getTabEl(B)); + this.stack.remove(B); + if (B == this.activeTab) { + var A = this.stack.next(); + if (A) { + this.setActiveTab(A) + } else { + this.setActiveTab(0) + } + } + this.delegateUpdates() + }, + onBeforeShowItem: function(A) { + if (A != this.activeTab) { + this.setActiveTab(A); + return false + } + }, + onItemDisabled: function(B) { + var A = this.getTabEl(B); + if (A) { + Ext.fly(A).addClass("x-item-disabled") + } + this.stack.remove(B) + }, + onItemEnabled: function(B) { + var A = this.getTabEl(B); + if (A) { + Ext.fly(A).removeClass("x-item-disabled") + } + }, + onItemTitleChanged: function(B) { + var A = this.getTabEl(B); + if (A) { + Ext.fly(A).child("span.x-tab-strip-text", true).innerHTML = B.title + } + }, + getTabEl: function(A) { + var B = (typeof A === "number") ? this.items.items[A].getItemId() : A.getItemId(); + return document.getElementById(this.id + this.idDelimiter + B) + }, + onResize: function() { + Ext.TabPanel.superclass.onResize.apply(this, arguments); + this.delegateUpdates() + }, + beginUpdate: function() { + this.suspendUpdates = true + }, + endUpdate: function() { + this.suspendUpdates = false; + this.delegateUpdates() + }, + hideTabStripItem: function(B) { + B = this.getComponent(B); + var A = this.getTabEl(B); + if (A) { + A.style.display = "none"; + this.delegateUpdates() + } + }, + unhideTabStripItem: function(B) { + B = this.getComponent(B); + var A = this.getTabEl(B); + if (A) { + A.style.display = ""; + this.delegateUpdates() + } + }, + delegateUpdates: function() { + if (this.suspendUpdates) { + return + } + if (this.resizeTabs && this.rendered) { + this.autoSizeTabs() + } + if (this.enableTabScroll && this.rendered) { + this.autoScrollTabs() + } + }, + autoSizeTabs: function() { + var G = this.items.length; + var B = this.tabPosition != "bottom" ? "header" : "footer"; + var C = this[B].dom.offsetWidth; + var A = this[B].dom.clientWidth; + if (!this.resizeTabs || G < 1 || !A) { + return + } + var I = Math.max(Math.min(Math.floor((A - 4) / G) - this.tabMargin, this.tabWidth), this.minTabWidth); + this.lastTabWidth = I; + var K = this.stripWrap.dom.getElementsByTagName("li"); + for (var E = 0, H = K.length - 1; E < H; E++) { + var J = K[E]; + var L = J.childNodes[1].firstChild.firstChild; + var F = J.offsetWidth; + var D = L.offsetWidth; + L.style.width = (I - (F - D)) + "px" + } + }, + adjustBodyWidth: function(A) { + if (this.header) { + this.header.setWidth(A) + } + if (this.footer) { + this.footer.setWidth(A) + } + return A + }, + setActiveTab: function(C) { + C = this.getComponent(C); + if (!C || this.fireEvent("beforetabchange", this, C, this.activeTab) === false) { + return + } + if (!this.rendered) { + this.activeTab = C; + return + } + if (this.activeTab != C) { + if (this.activeTab) { + var A = this.getTabEl(this.activeTab); + if (A) { + Ext.fly(A).removeClass("x-tab-strip-active") + } + this.activeTab.fireEvent("deactivate", this.activeTab) + } + var B = this.getTabEl(C); + Ext.fly(B).addClass("x-tab-strip-active"); + this.activeTab = C; + this.stack.add(C); + this.layout.setActiveItem(C); + if (this.layoutOnTabChange && C.doLayout) { + C.doLayout() + } + if (this.scrolling) { + this.scrollToTab(C, this.animScroll) + } + C.fireEvent("activate", C); + this.fireEvent("tabchange", this, C) + } + }, + getActiveTab: function() { + return this.activeTab || null + }, + getItem: function(A) { + return this.getComponent(A) + }, + autoScrollTabs: function() { + var G = this.items.length; + var D = this.header.dom.offsetWidth; + var C = this.header.dom.clientWidth; + var F = this.stripWrap; + var E = F.dom; + var B = E.offsetWidth; + var H = this.getScrollPos(); + var A = this.edge.getOffsetsTo(this.stripWrap)[0] + H; + if (!this.enableTabScroll || G < 1 || B < 20) { + return + } + if (A <= C) { + E.scrollLeft = 0; + F.setWidth(C); + if (this.scrolling) { + this.scrolling = false; + this.header.removeClass("x-tab-scrolling"); + this.scrollLeft.hide(); + this.scrollRight.hide(); + if (Ext.isAir) { + E.style.marginLeft = ""; + E.style.marginRight = "" + } + } + } else { + if (!this.scrolling) { + this.header.addClass("x-tab-scrolling"); + if (Ext.isAir) { + E.style.marginLeft = "18px"; + E.style.marginRight = "18px" + } + } + C -= F.getMargins("lr"); + F.setWidth(C > 20 ? C : 20); + if (!this.scrolling) { + if (!this.scrollLeft) { + this.createScrollers() + } else { + this.scrollLeft.show(); + this.scrollRight.show() + } + } + this.scrolling = true; + if (H > (A - C)) { + E.scrollLeft = A - C + } else { + this.scrollToTab(this.activeTab, false) + } + this.updateScrollButtons() + } + }, + createScrollers: function() { + var C = this.stripWrap.dom.offsetHeight; + var A = this.header.insertFirst({ + cls: "x-tab-scroller-left" + }); + A.setHeight(C); + A.addClassOnOver("x-tab-scroller-left-over"); + this.leftRepeater = new Ext.util.ClickRepeater(A, { + interval: this.scrollRepeatInterval, + handler: this.onScrollLeft, + scope: this + }); + this.scrollLeft = A; + var B = this.header.insertFirst({ + cls: "x-tab-scroller-right" + }); + B.setHeight(C); + B.addClassOnOver("x-tab-scroller-right-over"); + this.rightRepeater = new Ext.util.ClickRepeater(B, { + interval: this.scrollRepeatInterval, + handler: this.onScrollRight, + scope: this + }); + this.scrollRight = B + }, + getScrollWidth: function() { + return this.edge.getOffsetsTo(this.stripWrap)[0] + this.getScrollPos() + }, + getScrollPos: function() { + return parseInt(this.stripWrap.dom.scrollLeft, 10) || 0 + }, + getScrollArea: function() { + return parseInt(this.stripWrap.dom.clientWidth, 10) || 0 + }, + getScrollAnim: function() { + return { + duration: this.scrollDuration, + callback: this.updateScrollButtons, + scope: this + } + }, + getScrollIncrement: function() { + return this.scrollIncrement || (this.resizeTabs ? this.lastTabWidth + 2 : 100) + }, + scrollToTab: function(E, A) { + if (!E) { + return + } + var C = this.getTabEl(E); + var G = this.getScrollPos(), + D = this.getScrollArea(); + var F = Ext.fly(C).getOffsetsTo(this.stripWrap)[0] + G; + var B = F + C.offsetWidth; + if (F < G) { + this.scrollTo(F, A) + } else { + if (B > (G + D)) { + this.scrollTo(B - D, A) + } + } + }, + scrollTo: function(B, A) { + this.stripWrap.scrollTo("left", B, A ? this.getScrollAnim() : false); + if (!A) { + this.updateScrollButtons() + } + }, + onWheel: function(D) { + var E = D.getWheelDelta() * this.wheelIncrement * -1; + D.stopEvent(); + var F = this.getScrollPos(); + var C = F + E; + var A = this.getScrollWidth() - this.getScrollArea(); + var B = Math.max(0, Math.min(A, C)); + if (B != F) { + this.scrollTo(B, false) + } + }, + onScrollRight: function() { + var A = this.getScrollWidth() - this.getScrollArea(); + var C = this.getScrollPos(); + var B = Math.min(A, C + this.getScrollIncrement()); + if (B != C) { + this.scrollTo(B, this.animScroll) + } + }, + onScrollLeft: function() { + var B = this.getScrollPos(); + var A = Math.max(0, B - this.getScrollIncrement()); + if (A != B) { + this.scrollTo(A, this.animScroll) + } + }, + updateScrollButtons: function() { + var A = this.getScrollPos(); + this.scrollLeft[A == 0 ? "addClass" : "removeClass"]("x-tab-scroller-left-disabled"); + this.scrollRight[A >= (this.getScrollWidth() - this.getScrollArea()) ? "addClass" : "removeClass"]("x-tab-scroller-right-disabled") + } +}); +Ext.reg("tabpanel", Ext.TabPanel); +Ext.TabPanel.prototype.activate = Ext.TabPanel.prototype.setActiveTab; +Ext.TabPanel.AccessStack = function() { + var A = []; + return { + add: function(B) { + A.push(B); + if (A.length > 10) { + A.shift() + } + }, + remove: function(E) { + var D = []; + for (var C = 0, B = A.length; C < B; C++) { + if (A[C] != E) { + D.push(A[C]) + } + } + A = D + }, + next: function() { + return A.pop() + } + } +}; +Ext.Button = Ext.extend(Ext.Component, { + hidden: false, + disabled: false, + pressed: false, + enableToggle: false, + menuAlign: "tl-bl?", + type: "button", + menuClassTarget: "tr", + clickEvent: "click", + handleMouseEvents: true, + tooltipType: "qtip", + buttonSelector: "button:first", + initComponent: function() { + Ext.Button.superclass.initComponent.call(this); + this.addEvents("click", "toggle", "mouseover", "mouseout", "menushow", "menuhide", "menutriggerover", "menutriggerout"); + if (this.menu) { + this.menu = Ext.menu.MenuMgr.get(this.menu) + } + if (typeof this.toggleGroup === "string") { + this.enableToggle = true + } + }, + onRender: function(C, A) { + if (!this.template) { + if (!Ext.Button.buttonTemplate) { + Ext.Button.buttonTemplate = new Ext.Template("", "", "
      
    ") + } + this.template = Ext.Button.buttonTemplate + } + var B, E = [this.text || " ", this.type]; + if (A) { + B = this.template.insertBefore(A, E, true) + } else { + B = this.template.append(C, E, true) + } + var D = B.child(this.buttonSelector); + D.on("focus", this.onFocus, this); + D.on("blur", this.onBlur, this); + this.initButtonEl(B, D); + if (this.menu) { + this.el.child(this.menuClassTarget).addClass("x-btn-with-menu") + } + Ext.ButtonToggleMgr.register(this) + }, + initButtonEl: function(B, C) { + this.el = B; + B.addClass("x-btn"); + if (this.icon) { + C.setStyle("background-image", "url(" + this.icon + ")") + } + if (this.iconCls) { + C.addClass(this.iconCls); + if (!this.cls) { + B.addClass(this.text ? "x-btn-text-icon" : "x-btn-icon") + } + } + if (this.tabIndex !== undefined) { + C.dom.tabIndex = this.tabIndex + } + if (this.tooltip) { + if (typeof this.tooltip == "object") { + Ext.QuickTips.register(Ext.apply({ + target: C.id + }, this.tooltip)) + } else { + C.dom[this.tooltipType] = this.tooltip + } + } + if (this.pressed) { + this.el.addClass("x-btn-pressed") + } + if (this.handleMouseEvents) { + B.on("mouseover", this.onMouseOver, this); + B.on("mousedown", this.onMouseDown, this) + } + if (this.menu) { + this.menu.on("show", this.onMenuShow, this); + this.menu.on("hide", this.onMenuHide, this) + } + if (this.id) { + this.el.dom.id = this.el.id = this.id + } + if (this.repeat) { + var A = new Ext.util.ClickRepeater(B, typeof this.repeat == "object" ? this.repeat : {}); + A.on("click", this.onClick, this) + } + B.on(this.clickEvent, this.onClick, this) + }, + afterRender: function() { + Ext.Button.superclass.afterRender.call(this); + if (Ext.isIE6) { + this.autoWidth.defer(1, this) + } else { + this.autoWidth() + } + }, + setIconClass: function(A) { + if (this.el) { + this.el.child(this.buttonSelector).replaceClass(this.iconCls, A) + } + this.iconCls = A + }, + beforeDestroy: function() { + if (this.rendered) { + var A = this.el.child(this.buttonSelector); + if (A) { + A.removeAllListeners() + } + } + if (this.menu) { + Ext.destroy(this.menu) + } + }, + onDestroy: function() { + if (this.rendered) { + Ext.ButtonToggleMgr.unregister(this) + } + }, + autoWidth: function() { + if (this.el) { + this.el.setWidth("auto"); + if (Ext.isIE7 && Ext.isStrict) { + var A = this.el.child(this.buttonSelector); + if (A && A.getWidth() > 20) { + A.clip(); + A.setWidth(Ext.util.TextMetrics.measure(A, this.text).width + A.getFrameWidth("lr")) + } + } + if (this.minWidth) { + if (this.el.getWidth() < this.minWidth) { + this.el.setWidth(this.minWidth) + } + } + } + }, + setHandler: function(B, A) { + this.handler = B; + this.scope = A + }, + setText: function(A) { + this.text = A; + if (this.el) { + this.el.child("td.x-btn-center " + this.buttonSelector).update(A) + } + this.autoWidth() + }, + getText: function() { + return this.text + }, + toggle: function(A) { + A = A === undefined ? !this.pressed : A; + if (A != this.pressed) { + if (A) { + this.el.addClass("x-btn-pressed"); + this.pressed = true; + this.fireEvent("toggle", this, true) + } else { + this.el.removeClass("x-btn-pressed"); + this.pressed = false; + this.fireEvent("toggle", this, false) + } + if (this.toggleHandler) { + this.toggleHandler.call(this.scope || this, this, A) + } + } + }, + focus: function() { + this.el.child(this.buttonSelector).focus() + }, + onDisable: function() { + if (this.el) { + if (!Ext.isIE6 || !this.text) { + this.el.addClass(this.disabledClass) + } + this.el.dom.disabled = true + } + this.disabled = true + }, + onEnable: function() { + if (this.el) { + if (!Ext.isIE6 || !this.text) { + this.el.removeClass(this.disabledClass) + } + this.el.dom.disabled = false + } + this.disabled = false + }, + showMenu: function() { + if (this.menu) { + this.menu.show(this.el, this.menuAlign) + } + return this + }, + hideMenu: function() { + if (this.menu) { + this.menu.hide() + } + return this + }, + hasVisibleMenu: function() { + return this.menu && this.menu.isVisible() + }, + onClick: function(A) { + if (A) { + A.preventDefault() + } + if (A.button != 0) { + return + } + if (!this.disabled) { + if (this.enableToggle && (this.allowDepress !== false || !this.pressed)) { + this.toggle() + } + if (this.menu && !this.menu.isVisible() && !this.ignoreNextClick) { + this.showMenu() + } + this.fireEvent("click", this, A); + if (this.handler) { + this.handler.call(this.scope || this, this, A) + } + } + }, + isMenuTriggerOver: function(B, A) { + return this.menu && !A + }, + isMenuTriggerOut: function(B, A) { + return this.menu && !A + }, + onMouseOver: function(B) { + if (!this.disabled) { + var A = B.within(this.el, true); + if (!A) { + this.el.addClass("x-btn-over"); + Ext.getDoc().on("mouseover", this.monitorMouseOver, this); + this.fireEvent("mouseover", this, B) + } + if (this.isMenuTriggerOver(B, A)) { + this.fireEvent("menutriggerover", this, this.menu, B) + } + } + }, + monitorMouseOver: function(A) { + if (A.target != this.el.dom && !A.within(this.el)) { + Ext.getDoc().un("mouseover", this.monitorMouseOver, this); + this.onMouseOut(A) + } + }, + onMouseOut: function(B) { + var A = B.within(this.el) && B.target != this.el.dom; + this.el.removeClass("x-btn-over"); + this.fireEvent("mouseout", this, B); + if (this.isMenuTriggerOut(B, A)) { + this.fireEvent("menutriggerout", this, this.menu, B) + } + }, + onFocus: function(A) { + if (!this.disabled) { + this.el.addClass("x-btn-focus") + } + }, + onBlur: function(A) { + this.el.removeClass("x-btn-focus") + }, + getClickEl: function(B, A) { + return this.el + }, + onMouseDown: function(A) { + if (!this.disabled && A.button == 0) { + this.getClickEl(A).addClass("x-btn-click"); + Ext.getDoc().on("mouseup", this.onMouseUp, this) + } + }, + onMouseUp: function(A) { + if (A.button == 0) { + this.getClickEl(A, true).removeClass("x-btn-click"); + Ext.getDoc().un("mouseup", this.onMouseUp, this) + } + }, + onMenuShow: function(A) { + this.ignoreNextClick = 0; + this.el.addClass("x-btn-menu-active"); + this.fireEvent("menushow", this, this.menu) + }, + onMenuHide: function(A) { + this.el.removeClass("x-btn-menu-active"); + this.ignoreNextClick = this.restoreClick.defer(250, this); + this.fireEvent("menuhide", this, this.menu) + }, + restoreClick: function() { + this.ignoreNextClick = 0 + } +}); +Ext.reg("button", Ext.Button); +Ext.ButtonToggleMgr = function() { + var A = {}; + + function B(E, G) { + if (G) { + var F = A[E.toggleGroup]; + for (var D = 0, C = F.length; D < C; D++) { + if (F[D] != E) { + F[D].toggle(false) + } + } + } + } + return { + register: function(C) { + if (!C.toggleGroup) { + return + } + var D = A[C.toggleGroup]; + if (!D) { + D = A[C.toggleGroup] = [] + } + D.push(C); + C.on("toggle", B) + }, + unregister: function(C) { + if (!C.toggleGroup) { + return + } + var D = A[C.toggleGroup]; + if (D) { + D.remove(C); + C.un("toggle", B) + } + } + } +}(); +Ext.SplitButton = Ext.extend(Ext.Button, { + arrowSelector: "button:last", + initComponent: function() { + Ext.SplitButton.superclass.initComponent.call(this); + this.addEvents("arrowclick") + }, + onRender: function(D, A) { + var B = new Ext.Template("
    ", "", "", "
     
    ", "", "", "
     
    "); + var C, F = [this.text || " ", this.type]; + if (A) { + C = B.insertBefore(A, F, true) + } else { + C = B.append(D, F, true) + } + var E = C.child(this.buttonSelector); + this.initButtonEl(C, E); + this.arrowBtnTable = C.child("table:last"); + if (this.arrowTooltip) { + C.child(this.arrowSelector).dom[this.tooltipType] = this.arrowTooltip + } + }, + autoWidth: function() { + if (this.el) { + var C = this.el.child("table:first"); + var B = this.el.child("table:last"); + this.el.setWidth("auto"); + C.setWidth("auto"); + if (Ext.isIE7 && Ext.isStrict) { + var A = this.el.child(this.buttonSelector); + if (A && A.getWidth() > 20) { + A.clip(); + A.setWidth(Ext.util.TextMetrics.measure(A, this.text).width + A.getFrameWidth("lr")) + } + } + if (this.minWidth) { + if ((C.getWidth() + B.getWidth()) < this.minWidth) { + C.setWidth(this.minWidth - B.getWidth()) + } + } + this.el.setWidth(C.getWidth() + B.getWidth()) + } + }, + setArrowHandler: function(B, A) { + this.arrowHandler = B; + this.scope = A + }, + onClick: function(A) { + A.preventDefault(); + if (!this.disabled) { + if (A.getTarget(".x-btn-menu-arrow-wrap")) { + if (this.menu && !this.menu.isVisible() && !this.ignoreNextClick) { + this.showMenu() + } + this.fireEvent("arrowclick", this, A); + if (this.arrowHandler) { + this.arrowHandler.call(this.scope || this, this, A) + } + } else { + if (this.enableToggle) { + this.toggle() + } + this.fireEvent("click", this, A); + if (this.handler) { + this.handler.call(this.scope || this, this, A) + } + } + } + }, + getClickEl: function(B, A) { + if (!A) { + return (this.lastClickEl = B.getTarget("table", 10, true)) + } + return this.lastClickEl + }, + onDisable: function() { + if (this.el) { + if (!Ext.isIE6) { + this.el.addClass("x-item-disabled") + } + this.el.child(this.buttonSelector).dom.disabled = true; + this.el.child(this.arrowSelector).dom.disabled = true + } + this.disabled = true + }, + onEnable: function() { + if (this.el) { + if (!Ext.isIE6) { + this.el.removeClass("x-item-disabled") + } + this.el.child(this.buttonSelector).dom.disabled = false; + this.el.child(this.arrowSelector).dom.disabled = false + } + this.disabled = false + }, + isMenuTriggerOver: function(A) { + return this.menu && A.within(this.arrowBtnTable) && !A.within(this.arrowBtnTable, true) + }, + isMenuTriggerOut: function(B, A) { + return this.menu && !B.within(this.arrowBtnTable) + }, + onDestroy: function() { + Ext.destroy(this.arrowBtnTable); + Ext.SplitButton.superclass.onDestroy.call(this) + } +}); +Ext.MenuButton = Ext.SplitButton; +Ext.reg("splitbutton", Ext.SplitButton); +Ext.CycleButton = Ext.extend(Ext.SplitButton, { + getItemText: function(A) { + if (A && this.showText === true) { + var B = ""; + if (this.prependText) { + B += this.prependText + } + B += A.text; + return B + } + return undefined + }, + setActiveItem: function(C, A) { + if (typeof C != "object") { + C = this.menu.items.get(C) + } + if (C) { + if (!this.rendered) { + this.text = this.getItemText(C); + this.iconCls = C.iconCls + } else { + var B = this.getItemText(C); + if (B) { + this.setText(B) + } + this.setIconClass(C.iconCls) + } + this.activeItem = C; + if (!C.checked) { + C.setChecked(true, true) + } + if (this.forceIcon) { + this.setIconClass(this.forceIcon) + } + if (!A) { + this.fireEvent("change", this, C) + } + } + }, + getActiveItem: function() { + return this.activeItem + }, + initComponent: function() { + this.addEvents("change"); + if (this.changeHandler) { + this.on("change", this.changeHandler, this.scope || this); + delete this.changeHandler + } + this.itemCount = this.items.length; + this.menu = { + cls: "x-cycle-menu", + items: [] + }; + var D; + for (var B = 0, A = this.itemCount; B < A; B++) { + var C = this.items[B]; + C.group = C.group || this.id; + C.itemIndex = B; + C.checkHandler = this.checkHandler; + C.scope = this; + C.checked = C.checked || false; + this.menu.items.push(C); + if (C.checked) { + D = C + } + } + this.setActiveItem(D, true); + Ext.CycleButton.superclass.initComponent.call(this); + this.on("click", this.toggleSelected, this) + }, + checkHandler: function(A, B) { + if (B) { + this.setActiveItem(A) + } + }, + toggleSelected: function() { + this.menu.render(); + var C, A; + for (var B = 1; B < this.itemCount; B++) { + C = (this.activeItem.itemIndex + B) % this.itemCount; + A = this.menu.items.itemAt(C); + if (!A.disabled) { + A.setChecked(true); + break + } + } + } +}); +Ext.reg("cycle", Ext.CycleButton); +Ext.Toolbar = function(A) { + if (Ext.isArray(A)) { + A = { + buttons: A + } + } + Ext.Toolbar.superclass.constructor.call(this, A) +}; +(function() { + var A = Ext.Toolbar; + Ext.extend(A, Ext.BoxComponent, { + trackMenus: true, + initComponent: function() { + A.superclass.initComponent.call(this); + if (this.items) { + this.buttons = this.items + } + this.items = new Ext.util.MixedCollection(false, function(B) { + return B.itemId || B.id || Ext.id() + }) + }, + autoCreate: { + cls: "x-toolbar x-small-editor", + html: "
    " + }, + onRender: function(C, B) { + this.el = C.createChild(Ext.apply({ + id: this.id + }, this.autoCreate), B); + this.tr = this.el.child("tr", true) + }, + afterRender: function() { + A.superclass.afterRender.call(this); + if (this.buttons) { + this.add.apply(this, this.buttons); + delete this.buttons + } + }, + add: function() { + var C = arguments, + B = C.length; + for (var D = 0; D < B; D++) { + var E = C[D]; + if (E.isFormField) { + this.addField(E) + } else { + if (E.render) { + this.addItem(E) + } else { + if (typeof E == "string") { + if (E == "separator" || E == "-") { + this.addSeparator() + } else { + if (E == " ") { + this.addSpacer() + } else { + if (E == "->") { + this.addFill() + } else { + this.addText(E) + } + } + } + } else { + if (E.tagName) { + this.addElement(E) + } else { + if (typeof E == "object") { + if (E.xtype) { + this.addField(Ext.ComponentMgr.create(E, "button")) + } else { + this.addButton(E) + } + } + } + } + } + } + } + }, + addSeparator: function() { + return this.addItem(new A.Separator()) + }, + addSpacer: function() { + return this.addItem(new A.Spacer()) + }, + addFill: function() { + return this.addItem(new A.Fill()) + }, + addElement: function(B) { + return this.addItem(new A.Item(B)) + }, + addItem: function(B) { + var C = this.nextBlock(); + this.initMenuTracking(B); + B.render(C); + this.items.add(B); + return B + }, + addButton: function(D) { + if (Ext.isArray(D)) { + var F = []; + for (var E = 0, C = D.length; E < C; E++) { + F.push(this.addButton(D[E])) + } + return F + } + var B = D; + if (!(D instanceof A.Button)) { + B = D.split ? new A.SplitButton(D) : new A.Button(D) + } + var G = this.nextBlock(); + this.initMenuTracking(B); + B.render(G); + this.items.add(B); + return B + }, + initMenuTracking: function(B) { + if (this.trackMenus && B.menu) { + B.on({ + "menutriggerover": this.onButtonTriggerOver, + "menushow": this.onButtonMenuShow, + "menuhide": this.onButtonMenuHide, + scope: this + }) + } + }, + addText: function(B) { + return this.addItem(new A.TextItem(B)) + }, + insertButton: function(C, F) { + if (Ext.isArray(F)) { + var E = []; + for (var D = 0, B = F.length; D < B; D++) { + E.push(this.insertButton(C + D, F[D])) + } + return E + } + if (!(F instanceof A.Button)) { + F = new A.Button(F) + } + var G = document.createElement("td"); + this.tr.insertBefore(G, this.tr.childNodes[C]); + this.initMenuTracking(F); + F.render(G); + this.items.insert(C, F); + return F + }, + addDom: function(C, B) { + var E = this.nextBlock(); + Ext.DomHelper.overwrite(E, C); + var D = new A.Item(E.firstChild); + D.render(E); + this.items.add(D); + return D + }, + addField: function(C) { + var D = this.nextBlock(); + C.render(D); + var B = new A.Item(D.firstChild); + B.render(D); + this.items.add(B); + return B + }, + nextBlock: function() { + var B = document.createElement("td"); + this.tr.appendChild(B); + return B + }, + onDestroy: function() { + Ext.Toolbar.superclass.onDestroy.call(this); + if (this.rendered) { + if (this.items) { + Ext.destroy.apply(Ext, this.items.items) + } + Ext.Element.uncache(this.tr) + } + }, + onDisable: function() { + this.items.each(function(B) { + if (B.disable) { + B.disable() + } + }) + }, + onEnable: function() { + this.items.each(function(B) { + if (B.enable) { + B.enable() + } + }) + }, + onButtonTriggerOver: function(B) { + if (this.activeMenuBtn && this.activeMenuBtn != B) { + this.activeMenuBtn.hideMenu(); + B.showMenu(); + this.activeMenuBtn = B + } + }, + onButtonMenuShow: function(B) { + this.activeMenuBtn = B + }, + onButtonMenuHide: function(B) { + delete this.activeMenuBtn + } + }); + Ext.reg("toolbar", Ext.Toolbar); + A.Item = function(B) { + this.el = Ext.getDom(B); + this.id = Ext.id(this.el); + this.hidden = false + }; + A.Item.prototype = { + getEl: function() { + return this.el + }, + render: function(B) { + this.td = B; + B.appendChild(this.el) + }, + destroy: function() { + if (this.td && this.td.parentNode) { + this.td.parentNode.removeChild(this.td) + } + }, + show: function() { + this.hidden = false; + this.td.style.display = "" + }, + hide: function() { + this.hidden = true; + this.td.style.display = "none" + }, + setVisible: function(B) { + if (B) { + this.show() + } else { + this.hide() + } + }, + focus: function() { + Ext.fly(this.el).focus() + }, + disable: function() { + Ext.fly(this.td).addClass("x-item-disabled"); + this.disabled = true; + this.el.disabled = true + }, + enable: function() { + Ext.fly(this.td).removeClass("x-item-disabled"); + this.disabled = false; + this.el.disabled = false + } + }; + Ext.reg("tbitem", A.Item); + A.Separator = function() { + var B = document.createElement("span"); + B.className = "ytb-sep"; + A.Separator.superclass.constructor.call(this, B) + }; + Ext.extend(A.Separator, A.Item, { + enable: Ext.emptyFn, + disable: Ext.emptyFn, + focus: Ext.emptyFn + }); + Ext.reg("tbseparator", A.Separator); + A.Spacer = function() { + var B = document.createElement("div"); + B.className = "ytb-spacer"; + A.Spacer.superclass.constructor.call(this, B) + }; + Ext.extend(A.Spacer, A.Item, { + enable: Ext.emptyFn, + disable: Ext.emptyFn, + focus: Ext.emptyFn + }); + Ext.reg("tbspacer", A.Spacer); + A.Fill = Ext.extend(A.Spacer, { + render: function(B) { + B.style.width = "100%"; + A.Fill.superclass.render.call(this, B) + } + }); + Ext.reg("tbfill", A.Fill); + A.TextItem = function(B) { + var C = document.createElement("span"); + C.className = "ytb-text"; + C.innerHTML = B.text ? B.text : B; + A.TextItem.superclass.constructor.call(this, C) + }; + Ext.extend(A.TextItem, A.Item, { + enable: Ext.emptyFn, + disable: Ext.emptyFn, + focus: Ext.emptyFn + }); + Ext.reg("tbtext", A.TextItem); + A.Button = Ext.extend(Ext.Button, { + hideParent: true, + onDestroy: function() { + A.Button.superclass.onDestroy.call(this); + if (this.container) { + this.container.remove() + } + } + }); + Ext.reg("tbbutton", A.Button); + A.SplitButton = Ext.extend(Ext.SplitButton, { + hideParent: true, + onDestroy: function() { + A.SplitButton.superclass.onDestroy.call(this); + if (this.container) { + this.container.remove() + } + } + }); + Ext.reg("tbsplit", A.SplitButton); + A.MenuButton = A.SplitButton +})(); +Ext.PagingToolbar = Ext.extend(Ext.Toolbar, { + pageSize: 20, + displayMsg: "Displaying {0} - {1} of {2}", + emptyMsg: "No data to display", + beforePageText: "Page", + afterPageText: "of {0}", + firstText: "First Page", + prevText: "Previous Page", + nextText: "Next Page", + lastText: "Last Page", + refreshText: "Refresh", + paramNames: { + start: "start", + limit: "limit" + }, + initComponent: function() { + Ext.PagingToolbar.superclass.initComponent.call(this); + this.cursor = 0; + this.bind(this.store) + }, + onRender: function(B, A) { + Ext.PagingToolbar.superclass.onRender.call(this, B, A); + this.first = this.addButton({ + tooltip: this.firstText, + iconCls: "x-tbar-page-first", + disabled: true, + handler: this.onClick.createDelegate(this, ["first"]) + }); + this.prev = this.addButton({ + tooltip: this.prevText, + iconCls: "x-tbar-page-prev", + disabled: true, + handler: this.onClick.createDelegate(this, ["prev"]) + }); + this.addSeparator(); + this.add(this.beforePageText); + this.field = Ext.get(this.addDom({ + tag: "input", + type: "text", + size: "3", + value: "1", + cls: "x-tbar-page-number" + }).el); + this.field.on("keydown", this.onPagingKeydown, this); + this.field.on("focus", function() { + this.dom.select() + }); + this.afterTextEl = this.addText(String.format(this.afterPageText, 1)); + this.field.setHeight(18); + this.addSeparator(); + this.next = this.addButton({ + tooltip: this.nextText, + iconCls: "x-tbar-page-next", + disabled: true, + handler: this.onClick.createDelegate(this, ["next"]) + }); + this.last = this.addButton({ + tooltip: this.lastText, + iconCls: "x-tbar-page-last", + disabled: true, + handler: this.onClick.createDelegate(this, ["last"]) + }); + this.addSeparator(); + this.loading = this.addButton({ + tooltip: this.refreshText, + iconCls: "x-tbar-loading", + handler: this.onClick.createDelegate(this, ["refresh"]) + }); + if (this.displayInfo) { + this.displayEl = Ext.fly(this.el.dom).createChild({ + cls: "x-paging-info" + }) + } + if (this.dsLoaded) { + this.onLoad.apply(this, this.dsLoaded) + } + }, + updateInfo: function() { + if (this.displayEl) { + var A = this.store.getCount(); + var B = A == 0 ? this.emptyMsg : String.format(this.displayMsg, this.cursor + 1, this.cursor + A, this.store.getTotalCount()); + this.displayEl.update(B) + } + }, + onLoad: function(A, C, F) { + if (!this.rendered) { + this.dsLoaded = [A, C, F]; + return + } + this.cursor = F.params ? F.params[this.paramNames.start] : 0; + var E = this.getPageData(), + B = E.activePage, + D = E.pages; + this.afterTextEl.el.innerHTML = String.format(this.afterPageText, E.pages); + this.field.dom.value = B; + this.first.setDisabled(B == 1); + this.prev.setDisabled(B == 1); + this.next.setDisabled(B == D); + this.last.setDisabled(B == D); + this.loading.enable(); + this.updateInfo() + }, + getPageData: function() { + var A = this.store.getTotalCount(); + return { + total: A, + activePage: Math.ceil((this.cursor + this.pageSize) / this.pageSize), + pages: A < this.pageSize ? 1 : Math.ceil(A / this.pageSize) + } + }, + onLoadError: function() { + if (!this.rendered) { + return + } + this.loading.enable() + }, + readPage: function(C) { + var A = this.field.dom.value, + B; + if (!A || isNaN(B = parseInt(A, 10))) { + this.field.dom.value = C.activePage; + return false + } + return B + }, + onPagingKeydown: function(D) { + var B = D.getKey(), + E = this.getPageData(), + C; + if (B == D.RETURN) { + D.stopEvent(); + if (C = this.readPage(E)) { + C = Math.min(Math.max(1, C), E.pages) - 1; + this.doLoad(C * this.pageSize) + } + } else { + if (B == D.HOME || B == D.END) { + D.stopEvent(); + C = B == D.HOME ? 1 : E.pages; + this.field.dom.value = C + } else { + if (B == D.UP || B == D.PAGEUP || B == D.DOWN || B == D.PAGEDOWN) { + D.stopEvent(); + if (C = this.readPage(E)) { + var A = D.shiftKey ? 10 : 1; + if (B == D.DOWN || B == D.PAGEDOWN) { + A *= -1 + } + C += A; + if (C >= 1 & C <= E.pages) { + this.field.dom.value = C + } + } + } + } + } + }, + beforeLoad: function() { + if (this.rendered && this.loading) { + this.loading.disable() + } + }, + doLoad: function(C) { + var B = {}, + A = this.paramNames; + B[A.start] = C; + B[A.limit] = this.pageSize; + this.store.load({ + params: B + }) + }, + onClick: function(E) { + var B = this.store; + switch (E) { + case "first": + this.doLoad(0); + break; + case "prev": + this.doLoad(Math.max(0, this.cursor - this.pageSize)); + break; + case "next": + this.doLoad(this.cursor + this.pageSize); + break; + case "last": + var D = B.getTotalCount(); + var A = D % this.pageSize; + var C = A ? (D - A) : D - this.pageSize; + this.doLoad(C); + break; + case "refresh": + this.doLoad(this.cursor); + break + } + }, + unbind: function(A) { + A = Ext.StoreMgr.lookup(A); + A.un("beforeload", this.beforeLoad, this); + A.un("load", this.onLoad, this); + A.un("loadexception", this.onLoadError, this); + this.store = undefined + }, + bind: function(A) { + A = Ext.StoreMgr.lookup(A); + A.on("beforeload", this.beforeLoad, this); + A.on("load", this.onLoad, this); + A.on("loadexception", this.onLoadError, this); + this.store = A + } +}); +Ext.reg("paging", Ext.PagingToolbar); +Ext.Resizable = function(D, E) { + this.el = Ext.get(D); + if (E && E.wrap) { + E.resizeChild = this.el; + this.el = this.el.wrap(typeof E.wrap == "object" ? E.wrap : { + cls: "xresizable-wrap" + }); + this.el.id = this.el.dom.id = E.resizeChild.id + "-rzwrap"; + this.el.setStyle("overflow", "hidden"); + this.el.setPositioning(E.resizeChild.getPositioning()); + E.resizeChild.clearPositioning(); + if (!E.width || !E.height) { + var F = E.resizeChild.getSize(); + this.el.setSize(F.width, F.height) + } + if (E.pinned && !E.adjustments) { + E.adjustments = "auto" + } + } + this.proxy = this.el.createProxy({ + tag: "div", + cls: "x-resizable-proxy", + id: this.el.id + "-rzproxy" + }); + this.proxy.unselectable(); + this.proxy.enableDisplayMode("block"); + Ext.apply(this, E); + if (this.pinned) { + this.disableTrackOver = true; + this.el.addClass("x-resizable-pinned") + } + var I = this.el.getStyle("position"); + if (I != "absolute" && I != "fixed") { + this.el.setStyle("position", "relative") + } + if (!this.handles) { + this.handles = "s,e,se"; + if (this.multiDirectional) { + this.handles += ",n,w" + } + } + if (this.handles == "all") { + this.handles = "n s e w ne nw se sw" + } + var M = this.handles.split(/\s*?[,;]\s*?| /); + var C = Ext.Resizable.positions; + for (var H = 0, J = M.length; H < J; H++) { + if (M[H] && C[M[H]]) { + var L = C[M[H]]; + this[L] = new Ext.Resizable.Handle(this, L, this.disableTrackOver, this.transparent) + } + } + this.corner = this.southeast; + if (this.handles.indexOf("n") != -1 || this.handles.indexOf("w") != -1) { + this.updateBox = true + } + this.activeHandle = null; + if (this.resizeChild) { + if (typeof this.resizeChild == "boolean") { + this.resizeChild = Ext.get(this.el.dom.firstChild, true) + } else { + this.resizeChild = Ext.get(this.resizeChild, true) + } + } + if (this.adjustments == "auto") { + var B = this.resizeChild; + var K = this.west, + G = this.east, + A = this.north, + M = this.south; + if (B && (K || A)) { + B.position("relative"); + B.setLeft(K ? K.el.getWidth() : 0); + B.setTop(A ? A.el.getHeight() : 0) + } + this.adjustments = [(G ? -G.el.getWidth() : 0) + (K ? -K.el.getWidth() : 0), (A ? -A.el.getHeight() : 0) + (M ? -M.el.getHeight() : 0) - 1] + } + if (this.draggable) { + this.dd = this.dynamic ? this.el.initDD(null) : this.el.initDDProxy(null, { + dragElId: this.proxy.id + }); + this.dd.setHandleElId(this.resizeChild ? this.resizeChild.id : this.el.id) + } + this.addEvents("beforeresize", "resize"); + if (this.width !== null && this.height !== null) { + this.resizeTo(this.width, this.height) + } else { + this.updateChildSize() + } + if (Ext.isIE) { + this.el.dom.style.zoom = 1 + } + Ext.Resizable.superclass.constructor.call(this) +}; +Ext.extend(Ext.Resizable, Ext.util.Observable, { + resizeChild: false, + adjustments: [0, 0], + minWidth: 5, + minHeight: 5, + maxWidth: 10000, + maxHeight: 10000, + enabled: true, + animate: false, + duration: 0.35, + dynamic: false, + handles: false, + multiDirectional: false, + disableTrackOver: false, + easing: "easeOutStrong", + widthIncrement: 0, + heightIncrement: 0, + pinned: false, + width: null, + height: null, + preserveRatio: false, + transparent: false, + minX: 0, + minY: 0, + draggable: false, + resizeTo: function(B, A) { + this.el.setSize(B, A); + this.updateChildSize(); + this.fireEvent("resize", this, B, A, null) + }, + startSizing: function(C, B) { + this.fireEvent("beforeresize", this, C); + if (this.enabled) { + if (!this.overlay) { + this.overlay = this.el.createProxy({ + tag: "div", + cls: "x-resizable-overlay", + html: " " + }, Ext.getBody()); + this.overlay.unselectable(); + this.overlay.enableDisplayMode("block"); + this.overlay.on("mousemove", this.onMouseMove, this); + this.overlay.on("mouseup", this.onMouseUp, this) + } + this.overlay.setStyle("cursor", B.el.getStyle("cursor")); + this.resizing = true; + this.startBox = this.el.getBox(); + this.startPoint = C.getXY(); + this.offsets = [(this.startBox.x + this.startBox.width) - this.startPoint[0], (this.startBox.y + this.startBox.height) - this.startPoint[1]]; + this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); + this.overlay.show(); + if (this.constrainTo) { + var A = Ext.get(this.constrainTo); + this.resizeRegion = A.getRegion().adjust(A.getFrameWidth("t"), A.getFrameWidth("l"), -A.getFrameWidth("b"), -A.getFrameWidth("r")) + } + this.proxy.setStyle("visibility", "hidden"); + this.proxy.show(); + this.proxy.setBox(this.startBox); + if (!this.dynamic) { + this.proxy.setStyle("visibility", "visible") + } + } + }, + onMouseDown: function(A, B) { + if (this.enabled) { + B.stopEvent(); + this.activeHandle = A; + this.startSizing(B, A) + } + }, + onMouseUp: function(B) { + var A = this.resizeElement(); + this.resizing = false; + this.handleOut(); + this.overlay.hide(); + this.proxy.hide(); + this.fireEvent("resize", this, A.width, A.height, B) + }, + updateChildSize: function() { + if (this.resizeChild) { + var C = this.el; + var D = this.resizeChild; + var B = this.adjustments; + if (C.dom.offsetWidth) { + var A = C.getSize(true); + D.setSize(A.width + B[0], A.height + B[1]) + } + if (Ext.isIE) { + setTimeout(function() { + if (C.dom.offsetWidth) { + var E = C.getSize(true); + D.setSize(E.width + B[0], E.height + B[1]) + } + }, 10) + } + } + }, + snap: function(C, E, B) { + if (!E || !C) { + return C + } + var D = C; + var A = C % E; + if (A > 0) { + if (A > (E / 2)) { + D = C + (E - A) + } else { + D = C - A + } + } + return Math.max(B, D) + }, + resizeElement: function() { + var A = this.proxy.getBox(); + if (this.updateBox) { + this.el.setBox(A, false, this.animate, this.duration, null, this.easing) + } else { + this.el.setSize(A.width, A.height, this.animate, this.duration, null, this.easing) + } + this.updateChildSize(); + if (!this.dynamic) { + this.proxy.hide() + } + return A + }, + constrain: function(B, C, A, D) { + if (B - C < A) { + C = B - A + } else { + if (B - C > D) { + C = D - B + } + } + return C + }, + onMouseMove: function(S) { + if (this.enabled) { + try { + if (this.resizeRegion && !this.resizeRegion.contains(S.getPoint())) { + return + } + var Q = this.curSize || this.startBox; + var I = this.startBox.x, + H = this.startBox.y; + var C = I, + B = H; + var J = Q.width, + R = Q.height; + var D = J, + L = R; + var K = this.minWidth, + T = this.minHeight; + var P = this.maxWidth, + W = this.maxHeight; + var F = this.widthIncrement; + var A = this.heightIncrement; + var U = S.getXY(); + var O = -(this.startPoint[0] - Math.max(this.minX, U[0])); + var M = -(this.startPoint[1] - Math.max(this.minY, U[1])); + var G = this.activeHandle.position; + switch (G) { + case "east": + J += O; + J = Math.min(Math.max(K, J), P); + break; + case "south": + R += M; + R = Math.min(Math.max(T, R), W); + break; + case "southeast": + J += O; + R += M; + J = Math.min(Math.max(K, J), P); + R = Math.min(Math.max(T, R), W); + break; + case "north": + M = this.constrain(R, M, T, W); + H += M; + R -= M; + break; + case "west": + O = this.constrain(J, O, K, P); + I += O; + J -= O; + break; + case "northeast": + J += O; + J = Math.min(Math.max(K, J), P); + M = this.constrain(R, M, T, W); + H += M; + R -= M; + break; + case "northwest": + O = this.constrain(J, O, K, P); + M = this.constrain(R, M, T, W); + H += M; + R -= M; + I += O; + J -= O; + break; + case "southwest": + O = this.constrain(J, O, K, P); + R += M; + R = Math.min(Math.max(T, R), W); + I += O; + J -= O; + break + } + var N = this.snap(J, F, K); + var V = this.snap(R, A, T); + if (N != J || V != R) { + switch (G) { + case "northeast": + H -= V - R; + break; + case "north": + H -= V - R; + break; + case "southwest": + I -= N - J; + break; + case "west": + I -= N - J; + break; + case "northwest": + I -= N - J; + H -= V - R; + break + } + J = N; + R = V + } + if (this.preserveRatio) { + switch (G) { + case "southeast": + case "east": + R = L * (J / D); + R = Math.min(Math.max(T, R), W); + J = D * (R / L); + break; + case "south": + J = D * (R / L); + J = Math.min(Math.max(K, J), P); + R = L * (J / D); + break; + case "northeast": + J = D * (R / L); + J = Math.min(Math.max(K, J), P); + R = L * (J / D); + break; + case "north": + var X = J; + J = D * (R / L); + J = Math.min(Math.max(K, J), P); + R = L * (J / D); + I += (X - J) / 2; + break; + case "southwest": + R = L * (J / D); + R = Math.min(Math.max(T, R), W); + var X = J; + J = D * (R / L); + I += X - J; + break; + case "west": + var E = R; + R = L * (J / D); + R = Math.min(Math.max(T, R), W); + H += (E - R) / 2; + var X = J; + J = D * (R / L); + I += X - J; + break; + case "northwest": + var X = J; + var E = R; + R = L * (J / D); + R = Math.min(Math.max(T, R), W); + J = D * (R / L); + H += E - R; + I += X - J; + break + } + } + this.proxy.setBounds(I, H, J, R); + if (this.dynamic) { + this.resizeElement() + } + } catch (S) {} + } + }, + handleOver: function() { + if (this.enabled) { + this.el.addClass("x-resizable-over") + } + }, + handleOut: function() { + if (!this.resizing) { + this.el.removeClass("x-resizable-over") + } + }, + getEl: function() { + return this.el + }, + getResizeChild: function() { + return this.resizeChild + }, + destroy: function(C) { + this.proxy.remove(); + if (this.overlay) { + this.overlay.removeAllListeners(); + this.overlay.remove() + } + var D = Ext.Resizable.positions; + for (var A in D) { + if (typeof D[A] != "function" && this[D[A]]) { + var B = this[D[A]]; + B.el.removeAllListeners(); + B.el.remove() + } + } + if (C) { + this.el.update(""); + this.el.remove() + } + }, + syncHandleHeight: function() { + var A = this.el.getHeight(true); + if (this.west) { + this.west.el.setHeight(A) + } + if (this.east) { + this.east.el.setHeight(A) + } + } +}); +Ext.Resizable.positions = { + n: "north", + s: "south", + e: "east", + w: "west", + se: "southeast", + sw: "southwest", + nw: "northwest", + ne: "northeast" +}; +Ext.Resizable.Handle = function(C, E, B, D) { + if (!this.tpl) { + var A = Ext.DomHelper.createTemplate({ + tag: "div", + cls: "x-resizable-handle x-resizable-handle-{0}" + }); + A.compile(); + Ext.Resizable.Handle.prototype.tpl = A + } + this.position = E; + this.rz = C; + this.el = this.tpl.append(C.el.dom, [this.position], true); + this.el.unselectable(); + if (D) { + this.el.setOpacity(0) + } + this.el.on("mousedown", this.onMouseDown, this); + if (!B) { + this.el.on("mouseover", this.onMouseOver, this); + this.el.on("mouseout", this.onMouseOut, this) + } +}; +Ext.Resizable.Handle.prototype = { + afterResize: function(A) {}, + onMouseDown: function(A) { + this.rz.onMouseDown(this, A) + }, + onMouseOver: function(A) { + this.rz.handleOver(this, A) + }, + onMouseOut: function(A) { + this.rz.handleOut(this, A) + } +}; +Ext.Editor = function(B, A) { + this.field = B; + Ext.Editor.superclass.constructor.call(this, A) +}; +Ext.extend(Ext.Editor, Ext.Component, { + value: "", + alignment: "c-c?", + shadow: "frame", + constrain: false, + swallowKeys: true, + completeOnEnter: false, + cancelOnEsc: false, + updateEl: false, + initComponent: function() { + Ext.Editor.superclass.initComponent.call(this); + this.addEvents("beforestartedit", "startedit", "beforecomplete", "complete", "specialkey") + }, + onRender: function(B, A) { + this.el = new Ext.Layer({ + shadow: this.shadow, + cls: "x-editor", + parentEl: B, + shim: this.shim, + shadowOffset: 4, + id: this.id, + constrain: this.constrain + }); + this.el.setStyle("overflow", Ext.isGecko ? "auto" : "hidden"); + if (this.field.msgTarget != "title") { + this.field.msgTarget = "qtip" + } + this.field.inEditor = true; + this.field.render(this.el); + if (Ext.isGecko) { + this.field.el.dom.setAttribute("autocomplete", "off") + } + this.field.on("specialkey", this.onSpecialKey, this); + if (this.swallowKeys) { + this.field.el.swallowEvent(["keydown", "keypress"]) + } + this.field.show(); + this.field.on("blur", this.onBlur, this); + if (this.field.grow) { + this.field.on("autosize", this.el.sync, this.el, { + delay: 1 + }) + } + }, + onSpecialKey: function(B, A) { + if (this.completeOnEnter && A.getKey() == A.ENTER) { + A.stopEvent(); + this.completeEdit() + } else { + if (this.cancelOnEsc && A.getKey() == A.ESC) { + this.cancelEdit() + } else { + this.fireEvent("specialkey", B, A) + } + } + }, + startEdit: function(B, C) { + if (this.editing) { + this.completeEdit() + } + this.boundEl = Ext.get(B); + var A = C !== undefined ? C : this.boundEl.dom.innerHTML; + if (!this.rendered) { + this.render(this.parentEl || document.body) + } + if (this.fireEvent("beforestartedit", this, this.boundEl, A) === false) { + return + } + this.startValue = A; + this.field.setValue(A); + this.doAutoSize(); + this.el.alignTo(this.boundEl, this.alignment); + this.editing = true; + this.show() + }, + doAutoSize: function() { + if (this.autoSize) { + var A = this.boundEl.getSize(); + switch (this.autoSize) { + case "width": + this.setSize(A.width, ""); + break; + case "height": + this.setSize("", A.height); + break; + default: + this.setSize(A.width, A.height) + } + } + }, + setSize: function(A, B) { + delete this.field.lastSize; + this.field.setSize(A, B); + if (this.el) { + this.el.sync() + } + }, + realign: function() { + this.el.alignTo(this.boundEl, this.alignment) + }, + completeEdit: function(A) { + if (!this.editing) { + return + } + var B = this.getValue(); + if (this.revertInvalid !== false && !this.field.isValid()) { + B = this.startValue; + this.cancelEdit(true) + } + if (String(B) === String(this.startValue) && this.ignoreNoChange) { + this.editing = false; + this.hide(); + return + } + if (this.fireEvent("beforecomplete", this, B, this.startValue) !== false) { + this.editing = false; + if (this.updateEl && this.boundEl) { + this.boundEl.update(B) + } + if (A !== true) { + this.hide() + } + this.fireEvent("complete", this, B, this.startValue) + } + }, + onShow: function() { + this.el.show(); + if (this.hideEl !== false) { + this.boundEl.hide() + } + this.field.show(); + if (Ext.isIE && !this.fixIEFocus) { + this.fixIEFocus = true; + this.deferredFocus.defer(50, this) + } else { + this.field.focus() + } + this.fireEvent("startedit", this.boundEl, this.startValue) + }, + deferredFocus: function() { + if (this.editing) { + this.field.focus() + } + }, + cancelEdit: function(A) { + if (this.editing) { + this.setValue(this.startValue); + if (A !== true) { + this.hide() + } + } + }, + onBlur: function() { + if (this.allowBlur !== true && this.editing) { + this.completeEdit() + } + }, + onHide: function() { + if (this.editing) { + this.completeEdit(); + return + } + this.field.blur(); + if (this.field.collapse) { + this.field.collapse() + } + this.el.hide(); + if (this.hideEl !== false) { + this.boundEl.show() + } + }, + setValue: function(A) { + this.field.setValue(A) + }, + getValue: function() { + return this.field.getValue() + }, + beforeDestroy: function() { + this.field.destroy(); + this.field = null + } +}); +Ext.reg("editor", Ext.Editor); +Ext.MessageBox = function() { + var R, B, N, Q; + var G, J, P, A, K, M, H, F; + var O, S, L, C = ""; + var D = function(U) { + R.hide(); + Ext.callback(B.fn, B.scope || window, [U, S.dom.value], 1) + }; + var T = function() { + if (B && B.cls) { + R.el.removeClass(B.cls) + } + K.reset() + }; + var E = function(W, U, V) { + if (B && B.closable !== false) { + R.hide() + } + if (V) { + V.stopEvent() + } + }; + var I = function(U) { + var W = 0; + if (!U) { + O["ok"].hide(); + O["cancel"].hide(); + O["yes"].hide(); + O["no"].hide(); + return W + } + R.footer.dom.style.display = ""; + for (var V in O) { + if (typeof O[V] != "function") { + if (U[V]) { + O[V].show(); + O[V].setText(typeof U[V] == "string" ? U[V] : Ext.MessageBox.buttonText[V]); + W += O[V].el.getWidth() + 15 + } else { + O[V].hide() + } + } + } + return W + }; + return { + getDialog: function(U) { + if (!R) { + R = new Ext.Window({ + autoCreate: true, + title: U, + resizable: false, + constrain: true, + constrainHeader: true, + minimizable: false, + maximizable: false, + stateful: false, + modal: true, + shim: true, + buttonAlign: "center", + width: 400, + height: 100, + minHeight: 80, + plain: true, + footer: true, + closable: true, + close: function() { + if (B && B.buttons && B.buttons.no && !B.buttons.cancel) { + D("no") + } else { + D("cancel") + } + } + }); + O = {}; + var V = this.buttonText; + O["ok"] = R.addButton(V["ok"], D.createCallback("ok")); + O["yes"] = R.addButton(V["yes"], D.createCallback("yes")); + O["no"] = R.addButton(V["no"], D.createCallback("no")); + O["cancel"] = R.addButton(V["cancel"], D.createCallback("cancel")); + O["ok"].hideMode = O["yes"].hideMode = O["no"].hideMode = O["cancel"].hideMode = "offsets"; + R.render(document.body); + R.getEl().addClass("x-window-dlg"); + N = R.mask; + G = R.body.createChild({ + html: "

    " + }); + H = Ext.get(G.dom.firstChild); + var W = G.dom.childNodes[1]; + J = Ext.get(W.firstChild); + P = Ext.get(W.childNodes[2]); + P.enableDisplayMode(); + P.addKeyListener([10, 13], function() { + if (R.isVisible() && B && B.buttons) { + if (B.buttons.ok) { + D("ok") + } else { + if (B.buttons.yes) { + D("yes") + } + } + } + }); + A = Ext.get(W.childNodes[3]); + A.enableDisplayMode(); + K = new Ext.ProgressBar({ + renderTo: G + }); + G.createChild({ + cls: "x-clear" + }) + } + return R + }, + updateText: function(X) { + if (!R.isVisible() && !B.width) { + R.setSize(this.maxWidth, 100) + } + J.update(X || " "); + var V = C != "" ? (H.getWidth() + H.getMargins("lr")) : 0; + var Z = J.getWidth() + J.getMargins("lr"); + var W = R.getFrameWidth("lr"); + var Y = R.body.getFrameWidth("lr"); + if (Ext.isIE && V > 0) { + V += 3 + } + var U = Math.max(Math.min(B.width || V + Z + W + Y, this.maxWidth), Math.max(B.minWidth || this.minWidth, L || 0)); + if (B.prompt === true) { + S.setWidth(U - V - W - Y) + } + if (B.progress === true || B.wait === true) { + K.setSize(U - V - W - Y) + } + R.setSize(U, "auto").center(); + return this + }, + updateProgress: function(V, U, W) { + K.updateProgress(V, U); + if (W) { + this.updateText(W) + } + return this + }, + isVisible: function() { + return R && R.isVisible() + }, + hide: function() { + if (this.isVisible()) { + R.hide(); + T() + } + return this + }, + show: function(X) { + if (this.isVisible()) { + this.hide() + } + B = X; + var Y = this.getDialog(B.title || " "); + Y.setTitle(B.title || " "); + var U = (B.closable !== false && B.progress !== true && B.wait !== true); + Y.tools.close.setDisplayed(U); + S = P; + B.prompt = B.prompt || (B.multiline ? true : false); + if (B.prompt) { + if (B.multiline) { + P.hide(); + A.show(); + A.setHeight(typeof B.multiline == "number" ? B.multiline : this.defaultTextHeight); + S = A + } else { + P.show(); + A.hide() + } + } else { + P.hide(); + A.hide() + } + S.dom.value = B.value || ""; + if (B.prompt) { + Y.focusEl = S + } else { + var W = B.buttons; + var V = null; + if (W && W.ok) { + V = O["ok"] + } else { + if (W && W.yes) { + V = O["yes"] + } + } + if (V) { + Y.focusEl = V + } + } + this.setIcon(B.icon); + L = I(B.buttons); + K.setVisible(B.progress === true || B.wait === true); + this.updateProgress(0, B.progressText); + this.updateText(B.msg); + if (B.cls) { + Y.el.addClass(B.cls) + } + Y.proxyDrag = B.proxyDrag === true; + Y.modal = B.modal !== false; + Y.mask = B.modal !== false ? N : false; + if (!Y.isVisible()) { + document.body.appendChild(R.el.dom); + Y.setAnimateTarget(B.animEl); + Y.show(B.animEl) + } + Y.on("show", function() { + if (U === true) { + Y.keyMap.enable() + } else { + Y.keyMap.disable() + } + }, this, { + single: true + }); + if (B.wait === true) { + K.wait(B.waitConfig) + } + return this + }, + setIcon: function(U) { + if (U && U != "") { + H.removeClass("x-hidden"); + H.replaceClass(C, U); + C = U + } else { + H.replaceClass(C, "x-hidden"); + C = "" + } + return this + }, + progress: function(W, V, U) { + this.show({ + title: W, + msg: V, + buttons: false, + progress: true, + closable: false, + minWidth: this.minProgressWidth, + progressText: U + }); + return this + }, + wait: function(W, V, U) { + this.show({ + title: V, + msg: W, + buttons: false, + closable: false, + wait: true, + modal: true, + minWidth: this.minProgressWidth, + waitConfig: U + }); + return this + }, + alert: function(X, W, V, U) { + this.show({ + title: X, + msg: W, + buttons: this.OK, + fn: V, + scope: U + }); + return this + }, + confirm: function(X, W, V, U) { + this.show({ + title: X, + msg: W, + buttons: this.YESNO, + fn: V, + scope: U, + icon: this.QUESTION + }); + return this + }, + prompt: function(Y, X, W, V, U) { + this.show({ + title: Y, + msg: X, + buttons: this.OKCANCEL, + fn: W, + minWidth: 250, + scope: V, + prompt: true, + multiline: U + }); + return this + }, + OK: { + ok: true + }, + CANCEL: { + cancel: true + }, + OKCANCEL: { + ok: true, + cancel: true + }, + YESNO: { + yes: true, + no: true + }, + YESNOCANCEL: { + yes: true, + no: true, + cancel: true + }, + INFO: "ext-mb-info", + WARNING: "ext-mb-warning", + QUESTION: "ext-mb-question", + ERROR: "ext-mb-error", + defaultTextHeight: 75, + maxWidth: 600, + minWidth: 100, + minProgressWidth: 250, + buttonText: { + ok: "OK", + cancel: "Cancel", + yes: "Yes", + no: "No" + } + } +}(); +Ext.Msg = Ext.MessageBox; +Ext.Tip = Ext.extend(Ext.Panel, { + minWidth: 40, + maxWidth: 300, + shadow: "sides", + defaultAlign: "tl-bl?", + autoRender: true, + quickShowInterval: 250, + frame: true, + hidden: true, + baseCls: "x-tip", + floating: { + shadow: true, + shim: true, + useDisplay: true, + constrain: false + }, + autoHeight: true, + initComponent: function() { + Ext.Tip.superclass.initComponent.call(this); + if (this.closable && !this.title) { + this.elements += ",header" + } + }, + afterRender: function() { + Ext.Tip.superclass.afterRender.call(this); + if (this.closable) { + this.addTool({ + id: "close", + handler: this.hide, + scope: this + }) + } + }, + showAt: function(A) { + Ext.Tip.superclass.show.call(this); + if (this.measureWidth !== false && (!this.initialConfig || typeof this.initialConfig.width != "number")) { + var B = this.body.getTextWidth(); + if (this.title) { + B = Math.max(B, this.header.child("span").getTextWidth(this.title)) + } + B += this.getFrameWidth() + (this.closable ? 20 : 0) + this.body.getPadding("lr"); + this.setWidth(B.constrain(this.minWidth, this.maxWidth)) + } + if (this.constrainPosition) { + A = this.el.adjustForConstraints(A) + } + this.setPagePosition(A[0], A[1]) + }, + showBy: function(A, B) { + if (!this.rendered) { + this.render(Ext.getBody()) + } + this.showAt(this.el.getAlignToXY(A, B || this.defaultAlign)) + }, + initDraggable: function() { + this.dd = new Ext.Tip.DD(this, typeof this.draggable == "boolean" ? null : this.draggable); + this.header.addClass("x-tip-draggable") + } +}); +Ext.Tip.DD = function(B, A) { + Ext.apply(this, A); + this.tip = B; + Ext.Tip.DD.superclass.constructor.call(this, B.el.id, "WindowDD-" + B.id); + this.setHandleElId(B.header.id); + this.scroll = false +}; +Ext.extend(Ext.Tip.DD, Ext.dd.DD, { + moveOnly: true, + scroll: false, + headerOffsets: [100, 25], + startDrag: function() { + this.tip.el.disableShadow() + }, + endDrag: function(A) { + this.tip.el.enableShadow(true) + } +}); +Ext.ToolTip = Ext.extend(Ext.Tip, { + showDelay: 500, + hideDelay: 200, + dismissDelay: 5000, + mouseOffset: [15, 18], + trackMouse: false, + constrainPosition: true, + initComponent: function() { + Ext.ToolTip.superclass.initComponent.call(this); + this.lastActive = new Date(); + this.initTarget() + }, + initTarget: function() { + if (this.target) { + this.target = Ext.get(this.target); + this.target.on("mouseover", this.onTargetOver, this); + this.target.on("mouseout", this.onTargetOut, this); + this.target.on("mousemove", this.onMouseMove, this) + } + }, + onMouseMove: function(A) { + this.targetXY = A.getXY(); + if (!this.hidden && this.trackMouse) { + this.setPagePosition(this.getTargetXY()) + } + }, + getTargetXY: function() { + return [this.targetXY[0] + this.mouseOffset[0], this.targetXY[1] + this.mouseOffset[1]] + }, + onTargetOver: function(A) { + if (this.disabled || A.within(this.target.dom, true)) { + return + } + this.clearTimer("hide"); + this.targetXY = A.getXY(); + this.delayShow() + }, + delayShow: function() { + if (this.hidden && !this.showTimer) { + if (this.lastActive.getElapsed() < this.quickShowInterval) { + this.show() + } else { + this.showTimer = this.show.defer(this.showDelay, this) + } + } else { + if (!this.hidden && this.autoHide !== false) { + this.show() + } + } + }, + onTargetOut: function(A) { + if (this.disabled || A.within(this.target.dom, true)) { + return + } + this.clearTimer("show"); + if (this.autoHide !== false) { + this.delayHide() + } + }, + delayHide: function() { + if (!this.hidden && !this.hideTimer) { + this.hideTimer = this.hide.defer(this.hideDelay, this) + } + }, + hide: function() { + this.clearTimer("dismiss"); + this.lastActive = new Date(); + Ext.ToolTip.superclass.hide.call(this) + }, + show: function() { + this.showAt(this.getTargetXY()) + }, + showAt: function(A) { + this.lastActive = new Date(); + this.clearTimers(); + Ext.ToolTip.superclass.showAt.call(this, A); + if (this.dismissDelay && this.autoHide !== false) { + this.dismissTimer = this.hide.defer(this.dismissDelay, this) + } + }, + clearTimer: function(A) { + A = A + "Timer"; + clearTimeout(this[A]); + delete this[A] + }, + clearTimers: function() { + this.clearTimer("show"); + this.clearTimer("dismiss"); + this.clearTimer("hide") + }, + onShow: function() { + Ext.ToolTip.superclass.onShow.call(this); + Ext.getDoc().on("mousedown", this.onDocMouseDown, this) + }, + onHide: function() { + Ext.ToolTip.superclass.onHide.call(this); + Ext.getDoc().un("mousedown", this.onDocMouseDown, this) + }, + onDocMouseDown: function(A) { + if (this.autoHide !== false && !A.within(this.el.dom)) { + this.disable(); + this.enable.defer(100, this) + } + }, + onDisable: function() { + this.clearTimers(); + this.hide() + }, + adjustPosition: function(A, D) { + var C = this.targetXY[1], + B = this.getSize().height; + if (this.constrainPosition && D <= C && (D + B) >= C) { + D = C - B - 5 + } + return { + x: A, + y: D + } + }, + onDestroy: function() { + Ext.ToolTip.superclass.onDestroy.call(this); + if (this.target) { + this.target.un("mouseover", this.onTargetOver, this); + this.target.un("mouseout", this.onTargetOut, this); + this.target.un("mousemove", this.onMouseMove, this) + } + } +}); +Ext.QuickTip = Ext.extend(Ext.ToolTip, { + interceptTitles: false, + tagConfig: { + namespace: "ext", + attribute: "qtip", + width: "qwidth", + target: "target", + title: "qtitle", + hide: "hide", + cls: "qclass", + align: "qalign" + }, + initComponent: function() { + this.target = this.target || Ext.getDoc(); + this.targets = this.targets || {}; + Ext.QuickTip.superclass.initComponent.call(this) + }, + register: function(D) { + var F = Ext.isArray(D) ? D : arguments; + for (var E = 0, A = F.length; E < A; E++) { + var H = F[E]; + var G = H.target; + if (G) { + if (Ext.isArray(G)) { + for (var C = 0, B = G.length; C < B; C++) { + this.targets[Ext.id(G[C])] = H + } + } else { + this.targets[Ext.id(G)] = H + } + } + } + }, + unregister: function(A) { + delete this.targets[Ext.id(A)] + }, + onTargetOver: function(G) { + if (this.disabled) { + return + } + this.targetXY = G.getXY(); + var C = G.getTarget(); + if (!C || C.nodeType !== 1 || C == document || C == document.body) { + return + } + if (this.activeTarget && C == this.activeTarget.el) { + this.clearTimer("hide"); + this.show(); + return + } + if (C && this.targets[C.id]) { + this.activeTarget = this.targets[C.id]; + this.activeTarget.el = C; + this.delayShow(); + return + } + var E, F = Ext.fly(C), + B = this.tagConfig; + var D = B.namespace; + if (this.interceptTitles && C.title) { + E = C.title; + C.qtip = E; + C.removeAttribute("title"); + G.preventDefault() + } else { + E = C.qtip || F.getAttributeNS(D, B.attribute) + } + if (E) { + var A = F.getAttributeNS(D, B.hide); + this.activeTarget = { + el: C, + text: E, + width: F.getAttributeNS(D, B.width), + autoHide: A != "user" && A !== "false", + title: F.getAttributeNS(D, B.title), + cls: F.getAttributeNS(D, B.cls), + align: F.getAttributeNS(D, B.align) + }; + this.delayShow() + } + }, + onTargetOut: function(A) { + this.clearTimer("show"); + if (this.autoHide !== false) { + this.delayHide() + } + }, + showAt: function(B) { + var A = this.activeTarget; + if (A) { + if (!this.rendered) { + this.render(Ext.getBody()); + this.activeTarget = A + } + if (A.width) { + this.setWidth(A.width); + this.body.setWidth(this.adjustBodyWidth(A.width - this.getFrameWidth())); + this.measureWidth = false + } else { + this.measureWidth = true + } + this.setTitle(A.title || ""); + this.body.update(A.text); + this.autoHide = A.autoHide; + this.dismissDelay = A.dismissDelay || this.dismissDelay; + if (this.lastCls) { + this.el.removeClass(this.lastCls); + delete this.lastCls + } + if (A.cls) { + this.el.addClass(A.cls); + this.lastCls = A.cls + } + if (A.align) { + B = this.el.getAlignToXY(A.el, A.align); + this.constrainPosition = false + } else { + this.constrainPosition = true + } + } + Ext.QuickTip.superclass.showAt.call(this, B) + }, + hide: function() { + delete this.activeTarget; + Ext.QuickTip.superclass.hide.call(this) + } +}); +Ext.QuickTips = function() { + var B, A = []; + return { + init: function() { + if (!B) { + B = new Ext.QuickTip({ + elements: "header,body" + }) + } + }, + enable: function() { + if (B) { + A.pop(); + if (A.length < 1) { + B.enable() + } + } + }, + disable: function() { + if (B) { + B.disable() + } + A.push(1) + }, + isEnabled: function() { + return B && !B.disabled + }, + getQuickTip: function() { + return B + }, + register: function() { + B.register.apply(B, arguments) + }, + unregister: function() { + B.unregister.apply(B, arguments) + }, + tips: function() { + B.register.apply(B, arguments) + } + } +}(); +Ext.tree.TreePanel = Ext.extend(Ext.Panel, { + rootVisible: true, + animate: Ext.enableFx, + lines: true, + enableDD: false, + hlDrop: Ext.enableFx, + pathSeparator: "/", + initComponent: function() { + Ext.tree.TreePanel.superclass.initComponent.call(this); + if (!this.eventModel) { + this.eventModel = new Ext.tree.TreeEventModel(this) + } + this.nodeHash = {}; + if (this.root) { + this.setRootNode(this.root) + } + this.addEvents("append", "remove", "movenode", "insert", "beforeappend", "beforeremove", "beforemovenode", "beforeinsert", "beforeload", "load", "textchange", "beforeexpandnode", "beforecollapsenode", "expandnode", "disabledchange", "collapsenode", "beforeclick", "click", "checkchange", "dblclick", "contextmenu", "beforechildrenrendered", "startdrag", "enddrag", "dragdrop", "beforenodedrop", "nodedrop", "nodedragover"); + if (this.singleExpand) { + this.on("beforeexpandnode", this.restrictExpand, this) + } + }, + proxyNodeEvent: function(C, B, A, G, F, E, D) { + if (C == "collapse" || C == "expand" || C == "beforecollapse" || C == "beforeexpand" || C == "move" || C == "beforemove") { + C = C + "node" + } + return this.fireEvent(C, B, A, G, F, E, D) + }, + getRootNode: function() { + return this.root + }, + setRootNode: function(B) { + this.root = B; + B.ownerTree = this; + B.isRoot = true; + this.registerNode(B); + if (!this.rootVisible) { + var A = B.attributes.uiProvider; + B.ui = A ? new A(B) : new Ext.tree.RootTreeNodeUI(B) + } + return B + }, + getNodeById: function(A) { + return this.nodeHash[A] + }, + registerNode: function(A) { + this.nodeHash[A.id] = A + }, + unregisterNode: function(A) { + delete this.nodeHash[A.id] + }, + toString: function() { + return "[Tree" + (this.id ? " " + this.id : "") + "]" + }, + restrictExpand: function(A) { + var B = A.parentNode; + if (B) { + if (B.expandedChild && B.expandedChild.parentNode == B) { + B.expandedChild.collapse() + } + B.expandedChild = A + } + }, + getChecked: function(A, B) { + B = B || this.root; + var C = []; + var D = function() { + if (this.attributes.checked) { + C.push(!A ? this : (A == "id" ? this.id : this.attributes[A])) + } + }; + B.cascade(D); + return C + }, + getEl: function() { + return this.el + }, + getLoader: function() { + return this.loader + }, + expandAll: function() { + this.root.expand(true) + }, + collapseAll: function() { + this.root.collapse(true) + }, + getSelectionModel: function() { + if (!this.selModel) { + this.selModel = new Ext.tree.DefaultSelectionModel() + } + return this.selModel + }, + expandPath: function(F, A, G) { + A = A || "id"; + var D = F.split(this.pathSeparator); + var C = this.root; + if (C.attributes[A] != D[1]) { + if (G) { + G(false, null) + } + return + } + var B = 1; + var E = function() { + if (++B == D.length) { + if (G) { + G(true, C) + } + return + } + var H = C.findChild(A, D[B]); + if (!H) { + if (G) { + G(false, C) + } + return + } + C = H; + H.expand(false, false, E) + }; + C.expand(false, false, E) + }, + selectPath: function(E, A, F) { + A = A || "id"; + var C = E.split(this.pathSeparator); + var B = C.pop(); + if (C.length > 0) { + var D = function(H, G) { + if (H && G) { + var I = G.findChild(A, B); + if (I) { + I.select(); + if (F) { + F(true, I) + } + } else { + if (F) { + F(false, I) + } + } + } else { + if (F) { + F(false, I) + } + } + }; + this.expandPath(C.join(this.pathSeparator), A, D) + } else { + this.root.select(); + if (F) { + F(true, this.root) + } + } + }, + getTreeEl: function() { + return this.body + }, + onRender: function(B, A) { + Ext.tree.TreePanel.superclass.onRender.call(this, B, A); + this.el.addClass("x-tree"); + this.innerCt = this.body.createChild({ + tag: "ul", + cls: "x-tree-root-ct " + (this.useArrows ? "x-tree-arrows" : this.lines ? "x-tree-lines" : "x-tree-no-lines") + }) + }, + initEvents: function() { + Ext.tree.TreePanel.superclass.initEvents.call(this); + if (this.containerScroll) { + Ext.dd.ScrollManager.register(this.body) + } + if ((this.enableDD || this.enableDrop) && !this.dropZone) { + this.dropZone = new Ext.tree.TreeDropZone(this, this.dropConfig || { + ddGroup: this.ddGroup || "TreeDD", + appendOnly: this.ddAppendOnly === true + }) + } + if ((this.enableDD || this.enableDrag) && !this.dragZone) { + this.dragZone = new Ext.tree.TreeDragZone(this, this.dragConfig || { + ddGroup: this.ddGroup || "TreeDD", + scroll: this.ddScroll + }) + } + this.getSelectionModel().init(this) + }, + afterRender: function() { + Ext.tree.TreePanel.superclass.afterRender.call(this); + this.root.render(); + if (!this.rootVisible) { + this.root.renderChildren() + } + }, + onDestroy: function() { + if (this.rendered) { + this.body.removeAllListeners(); + Ext.dd.ScrollManager.unregister(this.body); + if (this.dropZone) { + this.dropZone.unreg() + } + if (this.dragZone) { + this.dragZone.unreg() + } + } + this.root.destroy(); + this.nodeHash = null; + Ext.tree.TreePanel.superclass.onDestroy.call(this) + } +}); +Ext.reg("treepanel", Ext.tree.TreePanel); +Ext.tree.TreeEventModel = function(A) { + this.tree = A; + this.tree.on("render", this.initEvents, this) +}; +Ext.tree.TreeEventModel.prototype = { + initEvents: function() { + var A = this.tree.getTreeEl(); + A.on("click", this.delegateClick, this); + if (this.tree.trackMouseOver !== false) { + A.on("mouseover", this.delegateOver, this); + A.on("mouseout", this.delegateOut, this) + } + A.on("dblclick", this.delegateDblClick, this); + A.on("contextmenu", this.delegateContextMenu, this) + }, + getNode: function(B) { + var A; + if (A = B.getTarget(".x-tree-node-el", 10)) { + var C = Ext.fly(A, "_treeEvents").getAttributeNS("ext", "tree-node-id"); + if (C) { + return this.tree.getNodeById(C) + } + } + return null + }, + getNodeTarget: function(B) { + var A = B.getTarget(".x-tree-node-icon", 1); + if (!A) { + A = B.getTarget(".x-tree-node-el", 6) + } + return A + }, + delegateOut: function(B, A) { + if (!this.beforeEvent(B)) { + return + } + if (B.getTarget(".x-tree-ec-icon", 1)) { + var C = this.getNode(B); + this.onIconOut(B, C); + if (C == this.lastEcOver) { + delete this.lastEcOver + } + } + if ((A = this.getNodeTarget(B)) && !B.within(A, true)) { + this.onNodeOut(B, this.getNode(B)) + } + }, + delegateOver: function(B, A) { + if (!this.beforeEvent(B)) { + return + } + if (this.lastEcOver) { + this.onIconOut(B, this.lastEcOver); + delete this.lastEcOver + } + if (B.getTarget(".x-tree-ec-icon", 1)) { + this.lastEcOver = this.getNode(B); + this.onIconOver(B, this.lastEcOver) + } + if (A = this.getNodeTarget(B)) { + this.onNodeOver(B, this.getNode(B)) + } + }, + delegateClick: function(B, A) { + if (!this.beforeEvent(B)) { + return + } + if (B.getTarget("input[type=checkbox]", 1)) { + this.onCheckboxClick(B, this.getNode(B)) + } else { + if (B.getTarget(".x-tree-ec-icon", 1)) { + this.onIconClick(B, this.getNode(B)) + } else { + if (this.getNodeTarget(B)) { + this.onNodeClick(B, this.getNode(B)) + } + } + } + }, + delegateDblClick: function(B, A) { + if (this.beforeEvent(B) && this.getNodeTarget(B)) { + this.onNodeDblClick(B, this.getNode(B)) + } + }, + delegateContextMenu: function(B, A) { + if (this.beforeEvent(B) && this.getNodeTarget(B)) { + this.onNodeContextMenu(B, this.getNode(B)) + } + }, + onNodeClick: function(B, A) { + A.ui.onClick(B) + }, + onNodeOver: function(B, A) { + A.ui.onOver(B) + }, + onNodeOut: function(B, A) { + A.ui.onOut(B) + }, + onIconOver: function(B, A) { + A.ui.addClass("x-tree-ec-over") + }, + onIconOut: function(B, A) { + A.ui.removeClass("x-tree-ec-over") + }, + onIconClick: function(B, A) { + A.ui.ecClick(B) + }, + onCheckboxClick: function(B, A) { + A.ui.onCheckChange(B) + }, + onNodeDblClick: function(B, A) { + A.ui.onDblClick(B) + }, + onNodeContextMenu: function(B, A) { + A.ui.onContextMenu(B) + }, + beforeEvent: function(A) { + if (this.disabled) { + A.stopEvent(); + return false + } + return true + }, + disable: function() { + this.disabled = true + }, + enable: function() { + this.disabled = false + } +}; +Ext.tree.DefaultSelectionModel = function(A) { + this.selNode = null; + this.addEvents("selectionchange", "beforeselect"); + Ext.apply(this, A); + Ext.tree.DefaultSelectionModel.superclass.constructor.call(this) +}; +Ext.extend(Ext.tree.DefaultSelectionModel, Ext.util.Observable, { + init: function(A) { + this.tree = A; + A.getTreeEl().on("keydown", this.onKeyDown, this); + A.on("click", this.onNodeClick, this) + }, + onNodeClick: function(A, B) { + this.select(A) + }, + select: function(B) { + var A = this.selNode; + if (multiSelectMap && multiSelectMap[B.ownerTree.ownerCt.title]) { + if (this.fireEvent("beforeselect", this, B, A) !== false) { + if (!B.parentNode.attributes.objName) { + if (B.attributes.checked) { + B.ui.onSelectedChange(false); + B.attributes.checked = false + } else { + B.ui.onSelectedChange(true); + B.attributes.checked = true + } + this.selNode = B; + this.fireEvent("selectionchange", this, B, A) + } + } + }else { + if (A != B && this.fireEvent("beforeselect", this, B, A) !== false) { + if (A) { + A.ui.onSelectedChange(false) + } + this.selNode = B; + B.ui.onSelectedChange(true); + this.fireEvent("selectionchange", this, B, A) + } + } + return B + }, + unselect: function(A) { + if (this.selNode == A) { + this.clearSelections() + } + }, + clearSelections: function() { + var A = this.selNode; + if (A) { + A.ui.onSelectedChange(false); + this.selNode = null; + this.fireEvent("selectionchange", this, null) + } + return A + }, + getSelectedNode: function() { + return this.selNode + }, + isSelected: function(A) { + return this.selNode == A + }, + selectPrevious: function() { + var A = this.selNode || this.lastSelNode; + if (!A) { + return null + } + var C = A.previousSibling; + if (C) { + if (!C.isExpanded() || C.childNodes.length < 1) { + return this.select(C) + } else { + var B = C.lastChild; + while (B && B.isExpanded() && B.childNodes.length > 0) { + B = B.lastChild + } + return this.select(B) + } + } else { + if (A.parentNode && (this.tree.rootVisible || !A.parentNode.isRoot)) { + return this.select(A.parentNode) + } + } + return null + }, + selectNext: function() { + var B = this.selNode || this.lastSelNode; + if (!B) { + return null + } + if (B.firstChild && B.isExpanded()) { + return this.select(B.firstChild) + } else { + if (B.nextSibling) { + return this.select(B.nextSibling) + } else { + if (B.parentNode) { + var A = null; + B.parentNode.bubble(function() { + if (this.nextSibling) { + A = this.getOwnerTree().selModel.select(this.nextSibling); + return false + } + }); + return A + } + } + } + return null + }, + onKeyDown: function(C) { + var B = this.selNode || this.lastSelNode; + var D = this; + if (!B) { + return + } + var A = C.getKey(); + switch (A) { + case C.DOWN: + C.stopEvent(); + this.selectNext(); + break; + case C.UP: + C.stopEvent(); + this.selectPrevious(); + break; + case C.RIGHT: + C.preventDefault(); + if (B.hasChildNodes()) { + if (!B.isExpanded()) { + B.expand() + } else { + if (B.firstChild) { + this.select(B.firstChild, C) + } + } + } + break; + case C.LEFT: + C.preventDefault(); + if (B.hasChildNodes() && B.isExpanded()) { + B.collapse() + } else { + if (B.parentNode && (this.tree.rootVisible || B.parentNode != this.tree.getRootNode())) { + this.select(B.parentNode, C) + } + } + break + } + } +}); +Ext.tree.MultiSelectionModel = function(A) { + this.selNodes = []; + this.selMap = {}; + this.addEvents("selectionchange"); + Ext.apply(this, A); + Ext.tree.MultiSelectionModel.superclass.constructor.call(this) +}; +Ext.extend(Ext.tree.MultiSelectionModel, Ext.util.Observable, { + init: function(A) { + this.tree = A; + A.getTreeEl().on("keydown", this.onKeyDown, this); + A.on("click", this.onNodeClick, this) + }, + onNodeClick: function(A, B) { + this.select(A, B, B.ctrlKey) + }, + select: function(A, C, B) { + if (B !== true) { + this.clearSelections(true) + } + if (this.isSelected(A)) { + this.lastSelNode = A; + return A + } + this.selNodes.push(A); + this.selMap[A.id] = A; + this.lastSelNode = A; + A.ui.onSelectedChange(true); + this.fireEvent("selectionchange", this, this.selNodes); + return A + }, + unselect: function(B) { + if (this.selMap[B.id]) { + B.ui.onSelectedChange(false); + var C = this.selNodes; + var A = C.indexOf(B); + if (A != -1) { + this.selNodes.splice(A, 1) + } + delete this.selMap[B.id]; + this.fireEvent("selectionchange", this, this.selNodes) + } + }, + clearSelections: function(B) { + var D = this.selNodes; + if (D.length > 0) { + for (var C = 0, A = D.length; C < A; C++) { + D[C].ui.onSelectedChange(false) + } + this.selNodes = []; + this.selMap = {}; + if (B !== true) { + this.fireEvent("selectionchange", this, this.selNodes) + } + } + }, + isSelected: function(A) { + return this.selMap[A.id] ? true : false + }, + getSelectedNodes: function() { + return this.selNodes + }, + onKeyDown: Ext.tree.DefaultSelectionModel.prototype.onKeyDown, + selectNext: Ext.tree.DefaultSelectionModel.prototype.selectNext, + selectPrevious: Ext.tree.DefaultSelectionModel.prototype.selectPrevious +}); +Ext.tree.TreeNode = function(A) { + A = A || {}; + if (typeof A == "string") { + A = { + text: A + } + } + this.childrenRendered = false; + this.rendered = false; + Ext.tree.TreeNode.superclass.constructor.call(this, A); + this.expanded = A.expanded === true; + this.isTarget = A.isTarget !== false; + this.hidden = A.hidden === true; + this.draggable = A.draggable !== false && A.allowDrag !== false; + this.allowChildren = A.allowChildren !== false && A.allowDrop !== false; + this.text = A.text; + this.disabled = A.disabled === true; + this.addEvents("textchange", "beforeexpand", "beforecollapse", "expand", "disabledchange", "collapse", "beforeclick", "click", "checkchange", "dblclick", "contextmenu", "beforechildrenrendered"); + var B = this.attributes.uiProvider || this.defaultUI || Ext.tree.TreeNodeUI; + this.ui = new B(this) +}; +Ext.extend(Ext.tree.TreeNode, Ext.data.Node, { + preventHScroll: true, + isExpanded: function() { + return this.expanded + }, + getUI: function() { + return this.ui + }, + setFirstChild: function(A) { + var B = this.firstChild; + Ext.tree.TreeNode.superclass.setFirstChild.call(this, A); + if (this.childrenRendered && B && A != B) { + B.renderIndent(true, true) + } + if (this.rendered) { + this.renderIndent(true, true) + } + }, + setLastChild: function(B) { + var A = this.lastChild; + Ext.tree.TreeNode.superclass.setLastChild.call(this, B); + if (this.childrenRendered && A && B != A) { + A.renderIndent(true, true) + } + if (this.rendered) { + this.renderIndent(true, true) + } + }, + appendChild: function() { + var A = Ext.tree.TreeNode.superclass.appendChild.apply(this, arguments); + if (A && this.childrenRendered) { + A.render() + } + this.ui.updateExpandIcon(); + return A + }, + removeChild: function(A) { + this.ownerTree.getSelectionModel().unselect(A); + Ext.tree.TreeNode.superclass.removeChild.apply(this, arguments); + if (this.childrenRendered) { + A.ui.remove() + } + if (this.childNodes.length < 1) { + this.collapse(false, false) + } else { + this.ui.updateExpandIcon() + } + if (!this.firstChild && !this.isHiddenRoot()) { + this.childrenRendered = false + } + return A + }, + insertBefore: function(C, A) { + var B = Ext.tree.TreeNode.superclass.insertBefore.apply(this, arguments); + if (B && A && this.childrenRendered) { + C.render() + } + this.ui.updateExpandIcon(); + return B + }, + setText: function(B) { + var A = this.text; + this.text = B; + this.attributes.text = B; + if (this.rendered) { + this.ui.onTextChange(this, B, A) + } + this.fireEvent("textchange", this, B, A) + }, + select: function() { + this.getOwnerTree().getSelectionModel().select(this) + }, + unselect: function() { + this.getOwnerTree().getSelectionModel().unselect(this) + }, + isSelected: function() { + return this.getOwnerTree().getSelectionModel().isSelected(this) + }, + expand: function(A, B, C) { + if (!this.expanded) { + if (this.fireEvent("beforeexpand", this, A, B) === false) { + return + } + if (!this.childrenRendered) { + this.renderChildren() + } + this.expanded = true; + if (!this.isHiddenRoot() && (this.getOwnerTree().animate && B !== false) || B) { + this.ui.animExpand(function() { + this.fireEvent("expand", this); + if (typeof C == "function") { + C(this) + } + if (A === true) { + this.expandChildNodes(true) + } + }.createDelegate(this)); + return + } else { + this.ui.expand(); + this.fireEvent("expand", this); + if (typeof C == "function") { + C(this) + } + } + } else { + if (typeof C == "function") { + C(this) + } + } + if (A === true) { + this.expandChildNodes(true) + } + }, + isHiddenRoot: function() { + return this.isRoot && !this.getOwnerTree().rootVisible + }, + collapse: function(B, E) { + if (this.expanded && !this.isHiddenRoot()) { + if (this.fireEvent("beforecollapse", this, B, E) === false) { + return + } + this.expanded = false; + if ((this.getOwnerTree().animate && E !== false) || E) { + this.ui.animCollapse(function() { + this.fireEvent("collapse", this); + if (B === true) { + this.collapseChildNodes(true) + } + }.createDelegate(this)); + return + } else { + this.ui.collapse(); + this.fireEvent("collapse", this) + } + } + if (B === true) { + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + D[C].collapse(true, false) + } + } + }, + delayedExpand: function(A) { + if (!this.expandProcId) { + this.expandProcId = this.expand.defer(A, this) + } + }, + cancelExpand: function() { + if (this.expandProcId) { + clearTimeout(this.expandProcId) + } + this.expandProcId = false + }, + toggle: function() { + if (this.expanded) { + this.collapse() + } else { + this.expand() + } + }, + ensureVisible: function(B) { + var A = this.getOwnerTree(); + A.expandPath(this.parentNode.getPath(), false, function() { + var C = A.getNodeById(this.id); + A.getTreeEl().scrollChildIntoView(C.ui.anchor); + Ext.callback(B) + }.createDelegate(this)) + }, + expandChildNodes: function(B) { + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + D[C].expand(B) + } + }, + collapseChildNodes: function(B) { + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + D[C].collapse(B) + } + }, + disable: function() { + this.disabled = true; + this.unselect(); + if (this.rendered && this.ui.onDisableChange) { + this.ui.onDisableChange(this, true) + } + this.fireEvent("disabledchange", this, true) + }, + enable: function() { + this.disabled = false; + if (this.rendered && this.ui.onDisableChange) { + this.ui.onDisableChange(this, false) + } + this.fireEvent("disabledchange", this, false) + }, + renderChildren: function(B) { + if (B !== false) { + this.fireEvent("beforechildrenrendered", this) + } + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + D[C].render(true) + } + this.childrenRendered = true + }, + sort: function(E, D) { + Ext.tree.TreeNode.superclass.sort.apply(this, arguments); + if (this.childrenRendered) { + var C = this.childNodes; + for (var B = 0, A = C.length; B < A; B++) { + C[B].render(true) + } + } + }, + render: function(A) { + this.ui.render(A); + if (!this.rendered) { + this.getOwnerTree().registerNode(this); + this.rendered = true; + if (this.expanded) { + this.expanded = false; + this.expand(false, false) + } + } + }, + renderIndent: function(B, E) { + if (E) { + this.ui.childIndent = null + } + this.ui.renderIndent(); + if (B === true && this.childrenRendered) { + var D = this.childNodes; + for (var C = 0, A = D.length; C < A; C++) { + D[C].renderIndent(true, E) + } + } + }, + beginUpdate: function() { + this.childrenRendered = false + }, + endUpdate: function() { + if (this.expanded) { + this.renderChildren() + } + }, + destroy: function() { + for (var B = 0, A = this.childNodes.length; B < A; B++) { + this.childNodes[B].destroy() + } + this.childNodes = null; + if (this.ui.destroy) { + this.ui.destroy() + } + } +}); +var multiSelectMap = {}; +Ext.tree.AsyncTreeNode = function(A) { + this.loaded = false; + this.loading = false; + if (A.multiSelectTree) { + multiSelectMap[A.text] = A.multiSelectTree + } + Ext.tree.AsyncTreeNode.superclass.constructor.apply(this, arguments); + this.addEvents("beforeload", "load") +}; +Ext.extend(Ext.tree.AsyncTreeNode, Ext.tree.TreeNode, { + expand: function(B, D, F) { + if (this.loading) { + var E; + var C = function() { + if (!this.loading) { + clearInterval(E); + this.expand(B, D, F) + } + }.createDelegate(this); + E = setInterval(C, 200); + return + } + if (!this.loaded) { + if (this.fireEvent("beforeload", this) === false) { + return + } + this.loading = true; + this.ui.beforeLoad(this); + var A = this.loader || this.attributes.loader || this.getOwnerTree().getLoader(); + if (A) { + A.load(this, this.loadComplete.createDelegate(this, [B, D, F])); + return + } + } + Ext.tree.AsyncTreeNode.superclass.expand.call(this, B, D, F) + }, + isLoading: function() { + return this.loading + }, + loadComplete: function(A, B, C) { + this.loading = false; + this.loaded = true; + this.ui.afterLoad(this); + this.fireEvent("load", this); + this.expand(A, B, C) + }, + isLoaded: function() { + return this.loaded + }, + hasChildNodes: function() { + if (!this.isLeaf() && !this.loaded) { + return true + } else { + return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this) + } + }, + reload: function(A) { + this.collapse(false, false); + while (this.firstChild) { + this.removeChild(this.firstChild) + } + this.childrenRendered = false; + this.loaded = false; + if (this.isHiddenRoot()) { + this.expanded = false + } + this.expand(false, false, A) + } +}); +Ext.tree.TreeNodeUI = function(A) { + this.node = A; + this.rendered = false; + this.animating = false; + this.wasLeaf = true; + this.ecc = "x-tree-ec-icon x-tree-elbow"; + this.emptyIcon = Ext.BLANK_IMAGE_URL +}; +Ext.tree.TreeNodeUI.prototype = { + removeChild: function(A) { + if (this.rendered) { + this.ctNode.removeChild(A.ui.getEl()) + } + }, + beforeLoad: function() { + this.addClass("x-tree-node-loading") + }, + afterLoad: function() { + this.removeClass("x-tree-node-loading") + }, + onTextChange: function(B, C, A) { + if (this.rendered) { + this.textNode.innerHTML = C + } + }, + onDisableChange: function(A, B) { + this.disabled = B; + if (this.checkbox) { + this.checkbox.disabled = B + } + if (B) { + this.addClass("x-tree-node-disabled") + } else { + this.removeClass("x-tree-node-disabled") + } + }, + onSelectedChange: function(A) { + if (A) { + this.focus(); + this.addClass("x-tree-selected") + } else { + this.removeClass("x-tree-selected") + } + }, + onMove: function(A, G, E, F, D, B) { + this.childIndent = null; + if (this.rendered) { + var H = F.ui.getContainer(); + if (!H) { + this.holder = document.createElement("div"); + this.holder.appendChild(this.wrap); + return + } + var C = B ? B.ui.getEl() : null; + if (C) { + H.insertBefore(this.wrap, C) + } else { + H.appendChild(this.wrap) + } + this.node.renderIndent(true) + } + }, + addClass: function(A) { + if (this.elNode) { + Ext.fly(this.elNode).addClass(A) + } + }, + removeClass: function(A) { + if (this.elNode) { + Ext.fly(this.elNode).removeClass(A) + } + }, + remove: function() { + if (this.rendered) { + this.holder = document.createElement("div"); + this.holder.appendChild(this.wrap) + } + }, + fireEvent: function() { + return this.node.fireEvent.apply(this.node, arguments) + }, + initEvents: function() { + this.node.on("move", this.onMove, this); + if (this.node.disabled) { + this.addClass("x-tree-node-disabled"); + if (this.checkbox) { + this.checkbox.disabled = true + } + } + if (this.node.hidden) { + this.hide() + } + var B = this.node.getOwnerTree(); + var A = B.enableDD || B.enableDrag || B.enableDrop; + if (A && (!this.node.isRoot || B.rootVisible)) { + Ext.dd.Registry.register(this.elNode, { + node: this.node, + handles: this.getDDHandles(), + isHandle: false + }) + } + }, + getDDHandles: function() { + return [this.iconNode, this.textNode, this.elNode] + }, + hide: function() { + this.node.hidden = true; + if (this.wrap) { + this.wrap.style.display = "none" + } + }, + show: function() { + this.node.hidden = false; + if (this.wrap) { + this.wrap.style.display = "" + } + }, + onContextMenu: function(A) { + if (this.node.hasListener("contextmenu") || this.node.getOwnerTree().hasListener("contextmenu")) { + A.preventDefault(); + this.focus(); + this.fireEvent("contextmenu", this.node, A) + } + }, + onClick: function(B) { + if (this.dropping) { + B.stopEvent(); + return + } + if (this.fireEvent("beforeclick", this.node, B) !== false) { + var A = B.getTarget("a"); + if (!this.disabled && this.node.attributes.href && A) { + this.fireEvent("click", this.node, B); + return + } else { + if (A && B.ctrlKey) { + B.stopEvent() + } + } + B.preventDefault(); + if (this.disabled) { + return + } + if (this.node.attributes.singleClickExpand && !this.animating && this.node.hasChildNodes()) { + this.node.toggle() + } + this.fireEvent("click", this.node, B) + } else { + B.stopEvent() + } + }, + onDblClick: function(A) { + A.preventDefault(); + if (this.disabled) { + return + } + if (this.checkbox) { + this.toggleCheck() + } + if (!this.animating && this.node.hasChildNodes()) { + this.node.toggle() + } + this.fireEvent("dblclick", this.node, A) + }, + onOver: function(A) { + this.addClass("x-tree-node-over") + }, + onOut: function(A) { + this.removeClass("x-tree-node-over") + }, + onCheckChange: function() { + var A = this.checkbox.checked; + this.node.attributes.checked = A; + this.fireEvent("checkchange", this.node, A) + }, + ecClick: function(A) { + if (!this.animating && (this.node.hasChildNodes() || this.node.attributes.expandable)) { + this.node.toggle() + } + }, + startDrop: function() { + this.dropping = true + }, + endDrop: function() { + setTimeout(function() { + this.dropping = false + }.createDelegate(this), 50) + }, + expand: function() { + this.updateExpandIcon(); + this.ctNode.style.display = "" + }, + focus: function() { + if (!this.node.preventHScroll) { + try { + this.anchor.focus() + } catch (C) {} + } else { + if (!Ext.isIE) { + try { + var B = this.node.getOwnerTree().getTreeEl().dom; + var A = B.scrollLeft; + this.anchor.focus(); + B.scrollLeft = A + } catch (C) {} + } + } + }, + toggleCheck: function(B) { + var A = this.checkbox; + if (A) { + A.checked = (B === undefined ? !A.checked : B) + } + }, + blur: function() { + try { + this.anchor.blur() + } catch (A) {} + }, + animExpand: function(B) { + var A = Ext.get(this.ctNode); + A.stopFx(); + if (!this.node.hasChildNodes()) { + this.updateExpandIcon(); + this.ctNode.style.display = ""; + Ext.callback(B); + return + } + this.animating = true; + this.updateExpandIcon(); + A.slideIn("t", { + callback: function() { + this.animating = false; + Ext.callback(B) + }, + scope: this, + duration: this.node.ownerTree.duration || 0.25 + }) + }, + highlight: function() { + var A = this.node.getOwnerTree(); + Ext.fly(this.wrap).highlight(A.hlColor || "C3DAF9", { + endColor: A.hlBaseColor + }) + }, + collapse: function() { + this.updateExpandIcon(); + this.ctNode.style.display = "none" + }, + animCollapse: function(B) { + var A = Ext.get(this.ctNode); + A.enableDisplayMode("block"); + A.stopFx(); + this.animating = true; + this.updateExpandIcon(); + A.slideOut("t", { + callback: function() { + this.animating = false; + Ext.callback(B) + }, + scope: this, + duration: this.node.ownerTree.duration || 0.25 + }) + }, + getContainer: function() { + return this.ctNode + }, + getEl: function() { + return this.wrap + }, + appendDDGhost: function(A) { + A.appendChild(this.elNode.cloneNode(true)) + }, + getDDRepairXY: function() { + return Ext.lib.Dom.getXY(this.iconNode) + }, + onRender: function() { + this.render() + }, + render: function(B) { + var D = this.node, + A = D.attributes; + var C = D.parentNode ? D.parentNode.ui.getContainer() : D.ownerTree.innerCt.dom; + if (!this.rendered) { + this.rendered = true; + this.renderElements(D, A, C, B); + if (A.qtip) { + if (this.textNode.setAttributeNS) { + this.textNode.setAttributeNS("ext", "qtip", A.qtip); + if (A.qtipTitle) { + this.textNode.setAttributeNS("ext", "qtitle", A.qtipTitle) + } + } else { + this.textNode.setAttribute("ext:qtip", A.qtip); + if (A.qtipTitle) { + this.textNode.setAttribute("ext:qtitle", A.qtipTitle) + } + } + } else { + if (A.qtipCfg) { + A.qtipCfg.target = Ext.id(this.textNode); + Ext.QuickTips.register(A.qtipCfg) + } + } + this.initEvents(); + if (!this.node.expanded) { + this.updateExpandIcon(true) + } + } else { + if (B === true) { + C.appendChild(this.wrap) + } + } + }, + renderElements: function(D, I, H, J) { + this.indentMarkup = D.parentNode ? D.parentNode.ui.getChildIndent() : ""; + var E = typeof I.checked == "boolean"; + var B = I.href ? I.href : Ext.isGecko ? "" : "#"; + var C = ["
  • ", "", this.indentMarkup, "", "", "", E ? ("" : "/>")) : "", "", D.text, "
    ", "
      ", "
    • "].join(""); + var A; + if (J !== true && D.nextSibling && (A = D.nextSibling.ui.getEl())) { + this.wrap = Ext.DomHelper.insertHtml("beforeBegin", A, C) + } else { + this.wrap = Ext.DomHelper.insertHtml("beforeEnd", H, C) + } + this.elNode = this.wrap.childNodes[0]; + this.ctNode = this.wrap.childNodes[1]; + var G = this.elNode.childNodes; + this.indentNode = G[0]; + this.ecNode = G[1]; + this.iconNode = G[2]; + var F = 3; + if (E) { + this.checkbox = G[3]; + F++ + } + this.anchor = G[F]; + this.textNode = G[F].firstChild + }, + getAnchor: function() { + return this.anchor + }, + getTextEl: function() { + return this.textNode + }, + getIconEl: function() { + return this.iconNode + }, + isChecked: function() { + return this.checkbox ? this.checkbox.checked : false + }, + updateExpandIcon: function() { + if (this.rendered) { + var F = this.node, + D, C; + var A = F.isLast() ? "x-tree-elbow-end" : "x-tree-elbow"; + var E = F.hasChildNodes(); + if (E || F.attributes.expandable) { + if (F.expanded) { + A += "-minus"; + D = "x-tree-node-collapsed"; + C = "x-tree-node-expanded" + } else { + A += "-plus"; + D = "x-tree-node-expanded"; + C = "x-tree-node-collapsed" + } + if (this.wasLeaf) { + this.removeClass("x-tree-node-leaf"); + this.wasLeaf = false + } + if (this.c1 != D || this.c2 != C) { + Ext.fly(this.elNode).replaceClass(D, C); + this.c1 = D; + this.c2 = C + } + } else { + if (!this.wasLeaf) { + Ext.fly(this.elNode).replaceClass("x-tree-node-expanded", "x-tree-node-leaf"); + delete this.c1; + delete this.c2; + this.wasLeaf = true + } + } + var B = "x-tree-ec-icon " + A; + if (this.ecc != B) { + this.ecNode.className = B; + this.ecc = B + } + } + }, + getChildIndent: function() { + if (!this.childIndent) { + var A = []; + var B = this.node; + while (B) { + if (!B.isRoot || (B.isRoot && B.ownerTree.rootVisible)) { + if (!B.isLast()) { + A.unshift("") + } else { + A.unshift("") + } + } + B = B.parentNode + } + this.childIndent = A.join("") + } + return this.childIndent + }, + renderIndent: function() { + if (this.rendered) { + var A = ""; + var B = this.node.parentNode; + if (B) { + A = B.ui.getChildIndent() + } + if (this.indentMarkup != A) { + this.indentNode.innerHTML = A; + this.indentMarkup = A + } + this.updateExpandIcon() + } + }, + destroy: function() { + if (this.elNode) { + Ext.dd.Registry.unregister(this.elNode.id) + } + delete this.elNode; + delete this.ctNode; + delete this.indentNode; + delete this.ecNode; + delete this.iconNode; + delete this.checkbox; + delete this.anchor; + delete this.textNode; + Ext.removeNode(this.ctNode) + } +}; +Ext.tree.RootTreeNodeUI = Ext.extend(Ext.tree.TreeNodeUI, { + render: function() { + if (!this.rendered) { + var A = this.node.ownerTree.innerCt.dom; + this.node.expanded = true; + A.innerHTML = "
      "; + this.wrap = this.ctNode = A.firstChild + } + }, + collapse: Ext.emptyFn, + expand: Ext.emptyFn +}); +Ext.tree.TreeLoader = function(A) { + this.baseParams = {}; + this.requestMethod = "POST"; + Ext.apply(this, A); + this.addEvents("beforeload", "load", "loadexception"); + Ext.tree.TreeLoader.superclass.constructor.call(this) +}; +Ext.extend(Ext.tree.TreeLoader, Ext.util.Observable, { + uiProviders: {}, + clearOnLoad: true, + load: function(A, B) { + if (this.clearOnLoad) { + while (A.firstChild) { + A.removeChild(A.firstChild) + } + } + if (this.doPreload(A)) { + if (typeof B == "function") { + B() + } + } else { + if (this.dataUrl || this.url) { + this.requestData(A, B) + } + } + }, + doPreload: function(D) { + if (D.attributes.children) { + if (D.childNodes.length < 1) { + var C = D.attributes.children; + D.beginUpdate(); + for (var B = 0, A = C.length; B < A; B++) { + var E = D.appendChild(this.createNode(C[B])); + if (this.preloadChildren) { + this.doPreload(E) + } + } + D.endUpdate() + } + return true + } else { + return false + } + }, + getParams: function(D) { + var A = [], + C = this.baseParams; + for (var B in C) { + if (typeof C[B] != "function") { + A.push(encodeURIComponent(B), "=", encodeURIComponent(C[B]), "&") + } + } + A.push("node=", encodeURIComponent(D.id)); + return A.join("") + }, + requestData: function(A, B) { + if (this.fireEvent("beforeload", this, A, B) !== false) { + this.transId = Ext.Ajax.request({ + method: this.requestMethod, + url: this.dataUrl || this.url, + success: this.handleResponse, + failure: this.handleFailure, + scope: this, + argument: { + callback: B, + node: A + }, + params: this.getParams(A) + }) + } else { + if (typeof B == "function") { + B() + } + } + }, + isLoading: function() { + return this.transId ? true : false + }, + abort: function() { + if (this.isLoading()) { + Ext.Ajax.abort(this.transId) + } + }, + createNode: function(attr) { + if (this.baseAttrs) { + Ext.applyIf(attr, this.baseAttrs) + } + if (this.applyLoader !== false) { + attr.loader = this + } + if (typeof attr.uiProvider == "string") { + attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider) + } + return (attr.leaf ? new Ext.tree.TreeNode(attr) : new Ext.tree.AsyncTreeNode(attr)) + }, + processResponse: function(response, node, callback) { + var json = response.responseText; + try { + var o = eval("(" + json + ")"); + node.beginUpdate(); + for (var i = 0, len = o.length; i < len; i++) { + var n = this.createNode(o[i]); + if (n) { + node.appendChild(n) + } + } + node.endUpdate(); + if (typeof callback == "function") { + callback(this, node) + } + } catch (e) { + this.handleFailure(response) + } + }, + handleResponse: function(B) { + this.transId = false; + var A = B.argument; + this.processResponse(B, A.node, A.callback); + this.fireEvent("load", this, A.node, B) + }, + handleFailure: function(B) { + this.transId = false; + var A = B.argument; + this.fireEvent("loadexception", this, A.node, B); + if (typeof A.callback == "function") { + A.callback(this, A.node) + } + } +}); +Ext.tree.TreeFilter = function(A, B) { + this.tree = A; + this.filtered = {}; + Ext.apply(this, B) +}; +Ext.tree.TreeFilter.prototype = { + clearBlank: false, + reverse: false, + autoClear: false, + remove: false, + filter: function(D, A, B) { + A = A || "text"; + var C; + if (typeof D == "string") { + var E = D.length; + if (E == 0 && this.clearBlank) { + this.clear(); + return + } + D = D.toLowerCase(); + C = function(F) { + return F.attributes[A].substr(0, E).toLowerCase() == D + } + } else { + if (D.exec) { + C = function(F) { + return D.test(F.attributes[A]) + } + } else { + throw "Illegal filter type, must be string or regex" + } + } + this.filterBy(C, null, B) + }, + filterBy: function(D, C, B) { + B = B || this.tree.root; + if (this.autoClear) { + this.clear() + } + var A = this.filtered, + H = this.reverse; + var E = function(J) { + if (J == B) { + return true + } + if (A[J.id]) { + return false + } + var I = D.call(C || J, J); + if (!I || H) { + A[J.id] = J; + J.ui.hide(); + return false + } + return true + }; + B.cascade(E); + if (this.remove) { + for (var G in A) { + if (typeof G != "function") { + var F = A[G]; + if (F && F.parentNode) { + F.parentNode.removeChild(F) + } + } + } + } + }, + clear: function() { + var B = this.tree; + var A = this.filtered; + for (var D in A) { + if (typeof D != "function") { + var C = A[D]; + if (C) { + C.ui.show() + } + } + } + this.filtered = {} + } +}; +Ext.tree.TreeSorter = function(B, C) { + Ext.apply(this, C); + B.on("beforechildrenrendered", this.doSort, this); + B.on("append", this.updateSort, this); + B.on("insert", this.updateSort, this); + B.on("textchange", this.updateSortParent, this); + var E = this.dir && this.dir.toLowerCase() == "desc"; + var F = this.property || "text"; + var G = this.sortType; + var A = this.folderSort; + var D = this.caseSensitive === true; + var H = this.leafAttr || "leaf"; + this.sortFn = function(J, I) { + if (A) { + if (J.attributes[H] && !I.attributes[H]) { + return 1 + } + if (!J.attributes[H] && I.attributes[H]) { + return -1 + } + } + var L = G ? G(J) : (D ? J.attributes[F] : J.attributes[F].toUpperCase()); + var K = G ? G(I) : (D ? I.attributes[F] : I.attributes[F].toUpperCase()); + if (L < K) { + return E ? +1 : -1 + } else { + if (L > K) { + return E ? -1 : +1 + } else { + return 0 + } + } + } +}; +Ext.tree.TreeSorter.prototype = { + doSort: function(A) { + A.sort(this.sortFn) + }, + compareNodes: function(B, A) { + return (B.text.toUpperCase() > A.text.toUpperCase() ? 1 : -1) + }, + updateSort: function(A, B) { + if (B.childrenRendered) { + this.doSort.defer(1, this, [B]) + } + }, + updateSortParent: function(A) { + var B = A.parentNode; + if (B && B.childrenRendered) { + this.doSort.defer(1, this, [B]) + } + } +}; +if (Ext.dd.DropZone) { + Ext.tree.TreeDropZone = function(A, B) { + this.allowParentInsert = false; + this.allowContainerDrop = false; + this.appendOnly = false; + Ext.tree.TreeDropZone.superclass.constructor.call(this, A.innerCt, B); + this.tree = A; + this.dragOverData = {}; + this.lastInsertClass = "x-tree-no-status" + }; + Ext.extend(Ext.tree.TreeDropZone, Ext.dd.DropZone, { + ddGroup: "TreeDD", + expandDelay: 1000, + expandNode: function(A) { + if (A.hasChildNodes() && !A.isExpanded()) { + A.expand(false, null, this.triggerCacheRefresh.createDelegate(this)) + } + }, + queueExpand: function(A) { + this.expandProcId = this.expandNode.defer(this.expandDelay, this, [A]) + }, + cancelExpand: function() { + if (this.expandProcId) { + clearTimeout(this.expandProcId); + this.expandProcId = false + } + }, + isValidDropPoint: function(A, I, G, D, C) { + if (!A || !C) { + return false + } + var E = A.node; + var F = C.node; + if (!(E && E.isTarget && I)) { + return false + } + if (I == "append" && E.allowChildren === false) { + return false + } + if ((I == "above" || I == "below") && (E.parentNode && E.parentNode.allowChildren === false)) { + return false + } + if (F && (E == F || F.contains(E))) { + return false + } + var B = this.dragOverData; + B.tree = this.tree; + B.target = E; + B.data = C; + B.point = I; + B.source = G; + B.rawEvent = D; + B.dropNode = F; + B.cancel = false; + var H = this.tree.fireEvent("nodedragover", B); + return B.cancel === false && H !== false + }, + getDropPoint: function(E, D, I) { + var J = D.node; + if (J.isRoot) { + return J.allowChildren !== false ? "append" : false + } + var B = D.ddel; + var K = Ext.lib.Dom.getY(B), + G = K + B.offsetHeight; + var F = Ext.lib.Event.getPageY(E); + var H = J.allowChildren === false || J.isLeaf(); + if (this.appendOnly || J.parentNode.allowChildren === false) { + return H ? false : "append" + } + var C = false; + if (!this.allowParentInsert) { + C = J.hasChildNodes() && J.isExpanded() + } + var A = (G - K) / (H ? 2 : 3); + if (F >= K && F < (K + A)) { + return "above" + } else { + if (!C && (H || F >= G - A && F <= G)) { + return "below" + } else { + return "append" + } + } + }, + onNodeEnter: function(D, A, C, B) { + this.cancelExpand() + }, + onNodeOver: function(B, G, F, E) { + var I = this.getDropPoint(F, B, G); + var C = B.node; + if (!this.expandProcId && I == "append" && C.hasChildNodes() && !B.node.isExpanded()) { + this.queueExpand(C) + } else { + if (I != "append") { + this.cancelExpand() + } + } + var D = this.dropNotAllowed; + if (this.isValidDropPoint(B, I, G, F, E)) { + if (I) { + var A = B.ddel; + var H; + if (I == "above") { + D = B.node.isFirst() ? "x-tree-drop-ok-above" : "x-tree-drop-ok-between"; + H = "x-tree-drag-insert-above" + } else { + if (I == "below") { + D = B.node.isLast() ? "x-tree-drop-ok-below" : "x-tree-drop-ok-between"; + H = "x-tree-drag-insert-below" + } else { + D = "x-tree-drop-ok-append"; + H = "x-tree-drag-append" + } + } + if (this.lastInsertClass != H) { + Ext.fly(A).replaceClass(this.lastInsertClass, H); + this.lastInsertClass = H + } + } + } + return D + }, + onNodeOut: function(D, A, C, B) { + this.cancelExpand(); + this.removeDropIndicators(D) + }, + onNodeDrop: function(C, I, E, D) { + var H = this.getDropPoint(E, C, I); + var F = C.node; + F.ui.startDrop(); + if (!this.isValidDropPoint(C, H, I, E, D)) { + F.ui.endDrop(); + return false + } + var G = D.node || (I.getTreeNode ? I.getTreeNode(D, F, H, E) : null); + var B = { + tree: this.tree, + target: F, + data: D, + point: H, + source: I, + rawEvent: E, + dropNode: G, + cancel: !G, + dropStatus: false + }; + var A = this.tree.fireEvent("beforenodedrop", B); + if (A === false || B.cancel === true || !B.dropNode) { + F.ui.endDrop(); + return B.dropStatus + } + F = B.target; + if (H == "append" && !F.isExpanded()) { + F.expand(false, null, function() { + this.completeDrop(B) + }.createDelegate(this)) + } else { + this.completeDrop(B) + } + return true + }, + completeDrop: function(G) { + var D = G.dropNode, + E = G.point, + C = G.target; + if (!Ext.isArray(D)) { + D = [D] + } + var F; + for (var B = 0, A = D.length; B < A; B++) { + F = D[B]; + if (E == "above") { + C.parentNode.insertBefore(F, C) + } else { + if (E == "below") { + C.parentNode.insertBefore(F, C.nextSibling) + } else { + C.appendChild(F) + } + } + } + F.ui.focus(); + if (this.tree.hlDrop) { + F.ui.highlight() + } + C.ui.endDrop(); + this.tree.fireEvent("nodedrop", G) + }, + afterNodeMoved: function(A, C, E, D, B) { + if (this.tree.hlDrop) { + B.ui.focus(); + B.ui.highlight() + } + this.tree.fireEvent("nodedrop", this.tree, D, C, A, E) + }, + getTree: function() { + return this.tree + }, + removeDropIndicators: function(B) { + if (B && B.ddel) { + var A = B.ddel; + Ext.fly(A).removeClass(["x-tree-drag-insert-above", "x-tree-drag-insert-below", "x-tree-drag-append"]); + this.lastInsertClass = "_noclass" + } + }, + beforeDragDrop: function(B, A, C) { + this.cancelExpand(); + return true + }, + afterRepair: function(A) { + if (A && Ext.enableFx) { + A.node.ui.highlight() + } + this.hideProxy() + } + }) +}; +if (Ext.dd.DragZone) { + Ext.tree.TreeDragZone = function(A, B) { + Ext.tree.TreeDragZone.superclass.constructor.call(this, A.getTreeEl(), B); + this.tree = A + }; + Ext.extend(Ext.tree.TreeDragZone, Ext.dd.DragZone, { + ddGroup: "TreeDD", + onBeforeDrag: function(A, B) { + var C = A.node; + return C && C.draggable && !C.disabled + }, + onInitDrag: function(B) { + var A = this.dragData; + this.tree.getSelectionModel().select(A.node); + this.tree.eventModel.disable(); + this.proxy.update(""); + A.node.ui.appendDDGhost(this.proxy.ghost.dom); + this.tree.fireEvent("startdrag", this.tree, A.node, B) + }, + getRepairXY: function(B, A) { + return A.node.ui.getDDRepairXY() + }, + onEndDrag: function(A, B) { + this.tree.eventModel.enable.defer(100, this.tree.eventModel); + this.tree.fireEvent("enddrag", this.tree, A.node, B) + }, + onValidDrop: function(A, B, C) { + this.tree.fireEvent("dragdrop", this.tree, this.dragData.node, A, B); + this.hideProxy() + }, + beforeInvalidDrop: function(A, C) { + var B = this.tree.getSelectionModel(); + B.clearSelections(); + B.select(this.dragData.node) + } + }) +}; +Ext.tree.TreeEditor = function(A, B) { + B = B || {}; + var C = B.events ? B : new Ext.form.TextField(B); + Ext.tree.TreeEditor.superclass.constructor.call(this, C); + this.tree = A; + if (!A.rendered) { + A.on("render", this.initEditor, this) + } else { + this.initEditor(A) + } +}; +Ext.extend(Ext.tree.TreeEditor, Ext.Editor, { + alignment: "l-l", + autoSize: false, + hideEl: false, + cls: "x-small-editor x-tree-editor", + shim: false, + shadow: "frame", + maxWidth: 250, + editDelay: 350, + initEditor: function(A) { + A.on("beforeclick", this.beforeNodeClick, this); + A.on("dblclick", this.onNodeDblClick, this); + this.on("complete", this.updateNode, this); + this.on("beforestartedit", this.fitToTree, this); + this.on("startedit", this.bindScroll, this, { + delay: 10 + }); + this.on("specialkey", this.onSpecialKey, this) + }, + fitToTree: function(B, C) { + var E = this.tree.getTreeEl().dom, + D = C.dom; + if (E.scrollLeft > D.offsetLeft) { + E.scrollLeft = D.offsetLeft + } + var A = Math.min(this.maxWidth, (E.clientWidth > 20 ? E.clientWidth : E.offsetWidth) - Math.max(0, D.offsetLeft - E.scrollLeft) - 5); + this.setSize(A, "") + }, + triggerEdit: function(A, B) { + this.completeEdit(); + if (A.attributes.editable !== false) { + this.editNode = A; + this.autoEditTimer = this.startEdit.defer(this.editDelay, this, [A.ui.textNode, A.text]); + return false + } + }, + bindScroll: function() { + this.tree.getTreeEl().on("scroll", this.cancelEdit, this) + }, + beforeNodeClick: function(A, B) { + clearTimeout(this.autoEditTimer); + if (this.tree.getSelectionModel().isSelected(A)) { + B.stopEvent(); + return this.triggerEdit(A) + } + }, + onNodeDblClick: function(A, B) { + clearTimeout(this.autoEditTimer) + }, + updateNode: function(A, B) { + this.tree.getTreeEl().un("scroll", this.cancelEdit, this); + this.editNode.setText(B) + }, + onHide: function() { + Ext.tree.TreeEditor.superclass.onHide.call(this); + if (this.editNode) { + this.editNode.ui.focus.defer(50, this.editNode.ui) + } + }, + onSpecialKey: function(C, B) { + var A = B.getKey(); + if (A == B.ESC) { + B.stopEvent(); + this.cancelEdit() + } else { + if (A == B.ENTER && !B.hasModifier()) { + B.stopEvent(); + this.completeEdit() + } + } + } +}); +Ext.menu.Menu = function(A) { + if (Ext.isArray(A)) { + A = { + items: A + } + } + Ext.apply(this, A); + this.id = this.id || Ext.id(); + this.addEvents("beforeshow", "beforehide", "show", "hide", "click", "mouseover", "mouseout", "itemclick"); + Ext.menu.MenuMgr.register(this); + Ext.menu.Menu.superclass.constructor.call(this); + var B = this.items; + this.items = new Ext.util.MixedCollection(); + if (B) { + this.add.apply(this, B) + } +}; +Ext.extend(Ext.menu.Menu, Ext.util.Observable, { + minWidth: 120, + shadow: "sides", + subMenuAlign: "tl-tr?", + defaultAlign: "tl-bl?", + allowOtherMenus: false, + hidden: true, + createEl: function() { + return new Ext.Layer({ + cls: "x-menu", + shadow: this.shadow, + constrain: false, + parentEl: this.parentEl || document.body, + zindex: 15000 + }) + }, + render: function() { + if (this.el) { + return + } + var B = this.el = this.createEl(); + if (!this.keyNav) { + this.keyNav = new Ext.menu.MenuNav(this) + } + if (this.plain) { + B.addClass("x-menu-plain") + } + if (this.cls) { + B.addClass(this.cls) + } + this.focusEl = B.createChild({ + tag: "a", + cls: "x-menu-focus", + href: "#", + onclick: "return false;", + tabIndex: "-1" + }); + var A = B.createChild({ + tag: "ul", + cls: "x-menu-list" + }); + A.on("click", this.onClick, this); + A.on("mouseover", this.onMouseOver, this); + A.on("mouseout", this.onMouseOut, this); + this.items.each(function(D) { + var C = document.createElement("li"); + C.className = "x-menu-list-item"; + A.dom.appendChild(C); + D.render(C, this) + }, this); + this.ul = A; + this.autoWidth() + }, + autoWidth: function() { + var D = this.el, + C = this.ul; + if (!D) { + return + } + var A = this.width; + if (A) { + D.setWidth(A) + } else { + if (Ext.isIE) { + D.setWidth(this.minWidth); + var B = D.dom.offsetWidth; + D.setWidth(C.getWidth() + D.getFrameWidth("lr")) + } + } + }, + delayAutoWidth: function() { + if (this.el) { + if (!this.awTask) { + this.awTask = new Ext.util.DelayedTask(this.autoWidth, this) + } + this.awTask.delay(20) + } + }, + findTargetItem: function(B) { + var A = B.getTarget(".x-menu-list-item", this.ul, true); + if (A && A.menuItemId) { + return this.items.get(A.menuItemId) + } + }, + onClick: function(B) { + var A; + if (A = this.findTargetItem(B)) { + A.onClick(B); + this.fireEvent("click", this, A, B) + } + }, + setActiveItem: function(A, B) { + if (A != this.activeItem) { + if (this.activeItem) { + this.activeItem.deactivate() + } + this.activeItem = A; + A.activate(B) + } else { + if (B) { + A.expandMenu() + } + } + }, + tryActivate: function(F, E) { + var B = this.items; + for (var C = F, A = B.length; C >= 0 && C < A; C += E) { + var D = B.get(C); + if (!D.disabled && D.canActivate) { + this.setActiveItem(D, false); + return D + } + } + return false + }, + onMouseOver: function(B) { + var A; + if (A = this.findTargetItem(B)) { + if (A.canActivate && !A.disabled) { + this.setActiveItem(A, true) + } + } + this.fireEvent("mouseover", this, B, A) + }, + onMouseOut: function(B) { + var A; + if (A = this.findTargetItem(B)) { + if (A == this.activeItem && A.shouldDeactivate(B)) { + this.activeItem.deactivate(); + delete this.activeItem + } + } + this.fireEvent("mouseout", this, B, A) + }, + isVisible: function() { + return this.el && !this.hidden + }, + show: function(B, C, A) { + this.parentMenu = A; + if (!this.el) { + this.render() + } + this.fireEvent("beforeshow", this); + this.showAt(this.el.getAlignToXY(B, C || this.defaultAlign), A, false) + }, + showAt: function(C, B, A) { + this.parentMenu = B; + if (!this.el) { + this.render() + } + if (A !== false) { + this.fireEvent("beforeshow", this); + C = this.el.adjustForConstraints(C) + } + this.el.setXY(C); + this.el.show(); + this.hidden = false; + this.focus(); + this.fireEvent("show", this) + }, + focus: function() { + if (!this.hidden) { + this.doFocus.defer(50, this) + } + }, + doFocus: function() { + if (!this.hidden) { + this.focusEl.focus() + } + }, + hide: function(A) { + if (this.el && this.isVisible()) { + this.fireEvent("beforehide", this); + if (this.activeItem) { + this.activeItem.deactivate(); + this.activeItem = null + } + this.el.hide(); + this.hidden = true; + this.fireEvent("hide", this) + } + if (A === true && this.parentMenu) { + this.parentMenu.hide(true) + } + }, + add: function() { + var B = arguments, + A = B.length, + E; + for (var C = 0; C < A; C++) { + var D = B[C]; + if (D.render) { + E = this.addItem(D) + } else { + if (typeof D == "string") { + if (D == "separator" || D == "-") { + E = this.addSeparator() + } else { + E = this.addText(D) + } + } else { + if (D.tagName || D.el) { + E = this.addElement(D) + } else { + if (typeof D == "object") { + Ext.applyIf(D, this.defaults); + E = this.addMenuItem(D) + } + } + } + } + } + return E + }, + getEl: function() { + if (!this.el) { + this.render() + } + return this.el + }, + addSeparator: function() { + return this.addItem(new Ext.menu.Separator()) + }, + addElement: function(A) { + return this.addItem(new Ext.menu.BaseItem(A)) + }, + addItem: function(B) { + this.items.add(B); + if (this.ul) { + var A = document.createElement("li"); + A.className = "x-menu-list-item"; + this.ul.dom.appendChild(A); + B.render(A, this); + this.delayAutoWidth() + } + return B + }, + addMenuItem: function(A) { + if (!(A instanceof Ext.menu.Item)) { + if (typeof A.checked == "boolean") { + A = new Ext.menu.CheckItem(A) + } else { + A = new Ext.menu.Item(A) + } + } + return this.addItem(A) + }, + addText: function(A) { + return this.addItem(new Ext.menu.TextItem(A)) + }, + insert: function(B, C) { + this.items.insert(B, C); + if (this.ul) { + var A = document.createElement("li"); + A.className = "x-menu-list-item"; + this.ul.dom.insertBefore(A, this.ul.dom.childNodes[B]); + C.render(A, this); + this.delayAutoWidth() + } + return C + }, + remove: function(A) { + this.items.removeKey(A.id); + A.destroy() + }, + removeAll: function() { + var A; + while (A = this.items.first()) { + this.remove(A) + } + }, + destroy: function() { + this.beforeDestroy(); + Ext.menu.MenuMgr.unregister(this); + if (this.keyNav) { + this.keyNav.disable() + } + this.removeAll(); + if (this.ul) { + this.ul.removeAllListeners() + } + if (this.el) { + this.el.destroy() + } + }, + beforeDestroy: Ext.emptyFn +}); +Ext.menu.MenuNav = function(A) { + Ext.menu.MenuNav.superclass.constructor.call(this, A.el); + this.scope = this.menu = A +}; +Ext.extend(Ext.menu.MenuNav, Ext.KeyNav, { + doRelay: function(C, B) { + var A = C.getKey(); + if (!this.menu.activeItem && C.isNavKeyPress() && A != C.SPACE && A != C.RETURN) { + this.menu.tryActivate(0, 1); + return false + } + return B.call(this.scope || this, C, this.menu) + }, + up: function(B, A) { + if (!A.tryActivate(A.items.indexOf(A.activeItem) - 1, -1)) { + A.tryActivate(A.items.length - 1, -1) + } + }, + down: function(B, A) { + if (!A.tryActivate(A.items.indexOf(A.activeItem) + 1, 1)) { + A.tryActivate(0, 1) + } + }, + right: function(B, A) { + if (A.activeItem) { + A.activeItem.expandMenu(true) + } + }, + left: function(B, A) { + A.hide(); + if (A.parentMenu && A.parentMenu.activeItem) { + A.parentMenu.activeItem.activate() + } + }, + enter: function(B, A) { + if (A.activeItem) { + B.stopPropagation(); + A.activeItem.onClick(B); + A.fireEvent("click", this, A.activeItem); + return true + } + } +}); +Ext.menu.MenuMgr = function() { + var F, D, C = {}, + A = false, + K = new Date(); + + function M() { + F = {}; + D = new Ext.util.MixedCollection(); + Ext.getDoc().addKeyListener(27, function() { + if (D.length > 0) { + H() + } + }) + } + + function H() { + if (D && D.length > 0) { + var N = D.clone(); + N.each(function(O) { + O.hide() + }) + } + } + + function E(N) { + D.remove(N); + if (D.length < 1) { + Ext.getDoc().un("mousedown", L); + A = false + } + } + + function J(N) { + var O = D.last(); + K = new Date(); + D.add(N); + if (!A) { + Ext.getDoc().on("mousedown", L); + A = true + } + if (N.parentMenu) { + N.getEl().setZIndex(parseInt(N.parentMenu.getEl().getStyle("z-index"), 10) + 3); + N.parentMenu.activeChild = N + } else { + if (O && O.isVisible()) { + N.getEl().setZIndex(parseInt(O.getEl().getStyle("z-index"), 10) + 3) + } + } + } + + function B(N) { + if (N.activeChild) { + N.activeChild.hide() + } + if (N.autoHideTimer) { + clearTimeout(N.autoHideTimer); + delete N.autoHideTimer + } + } + + function G(N) { + var O = N.parentMenu; + if (!O && !N.allowOtherMenus) { + H() + } else { + if (O && O.activeChild) { + O.activeChild.hide() + } + } + } + + function L(N) { + if (K.getElapsed() > 50 && D.length > 0 && !N.getTarget(".x-menu")) { + H() + } + } + + function I(O, R) { + if (R) { + var Q = C[O.group]; + for (var P = 0, N = Q.length; P < N; P++) { + if (Q[P] != O) { + Q[P].setChecked(false) + } + } + } + } + return { + hideAll: function() { + H() + }, + register: function(O) { + if (!F) { + M() + } + F[O.id] = O; + O.on("beforehide", B); + O.on("hide", E); + O.on("beforeshow", G); + O.on("show", J); + var N = O.group; + if (N && O.events["checkchange"]) { + if (!C[N]) { + C[N] = [] + } + C[N].push(O); + O.on("checkchange", onCheck) + } + }, + get: function(N) { + if (typeof N == "string") { + if (!F) { + return null + } + return F[N] + } else { + if (N.events) { + return N + } else { + if (typeof N.length == "number") { + return new Ext.menu.Menu({ + items: N + }) + } else { + return new Ext.menu.Menu(N) + } + } + } + }, + unregister: function(O) { + delete F[O.id]; + O.un("beforehide", B); + O.un("hide", E); + O.un("beforeshow", G); + O.un("show", J); + var N = O.group; + if (N && O.events["checkchange"]) { + C[N].remove(O); + O.un("checkchange", onCheck) + } + }, + registerCheckable: function(N) { + var O = N.group; + if (O) { + if (!C[O]) { + C[O] = [] + } + C[O].push(N); + N.on("beforecheckchange", I) + } + }, + unregisterCheckable: function(N) { + var O = N.group; + if (O) { + C[O].remove(N); + N.un("beforecheckchange", I) + } + }, + getCheckedItem: function(P) { + var Q = C[P]; + if (Q) { + for (var O = 0, N = Q.length; O < N; O++) { + if (Q[O].checked) { + return Q[O] + } + } + } + return null + }, + setCheckedItem: function(P, R) { + var Q = C[P]; + if (Q) { + for (var O = 0, N = Q.length; O < N; O++) { + if (Q[O].id == R) { + Q[O].setChecked(true) + } + } + } + return null + } + } +}(); +Ext.menu.BaseItem = function(A) { + Ext.menu.BaseItem.superclass.constructor.call(this, A); + this.addEvents("click", "activate", "deactivate"); + if (this.handler) { + this.on("click", this.handler, this.scope) + } +}; +Ext.extend(Ext.menu.BaseItem, Ext.Component, { + canActivate: false, + activeClass: "x-menu-item-active", + hideOnClick: true, + hideDelay: 100, + ctype: "Ext.menu.BaseItem", + actionMode: "container", + render: function(A, B) { + this.parentMenu = B; + Ext.menu.BaseItem.superclass.render.call(this, A); + this.container.menuItemId = this.id + }, + onRender: function(B, A) { + this.el = Ext.get(this.el); + B.dom.appendChild(this.el.dom) + }, + setHandler: function(B, A) { + if (this.handler) { + this.un("click", this.handler, this.scope) + } + this.on("click", this.handler = B, this.scope = A) + }, + onClick: function(A) { + if (!this.disabled && this.fireEvent("click", this, A) !== false && this.parentMenu.fireEvent("itemclick", this, A) !== false) { + this.handleClick(A) + } else { + A.stopEvent() + } + }, + activate: function() { + if (this.disabled) { + return false + } + var A = this.container; + A.addClass(this.activeClass); + this.region = A.getRegion().adjust(2, 2, -2, -2); + this.fireEvent("activate", this); + return true + }, + deactivate: function() { + this.container.removeClass(this.activeClass); + this.fireEvent("deactivate", this) + }, + shouldDeactivate: function(A) { + return !this.region || !this.region.contains(A.getPoint()) + }, + handleClick: function(A) { + if (this.hideOnClick) { + this.parentMenu.hide.defer(this.hideDelay, this.parentMenu, [true]) + } + }, + expandMenu: function(A) {}, + hideMenu: function() {} +}); +Ext.menu.TextItem = function(A) { + this.text = A; + Ext.menu.TextItem.superclass.constructor.call(this) +}; +Ext.extend(Ext.menu.TextItem, Ext.menu.BaseItem, { + hideOnClick: false, + itemCls: "x-menu-text", + onRender: function() { + var A = document.createElement("span"); + A.className = this.itemCls; + A.innerHTML = this.text; + this.el = A; + Ext.menu.TextItem.superclass.onRender.apply(this, arguments) + } +}); +Ext.menu.Separator = function(A) { + Ext.menu.Separator.superclass.constructor.call(this, A) +}; +Ext.extend(Ext.menu.Separator, Ext.menu.BaseItem, { + itemCls: "x-menu-sep", + hideOnClick: false, + onRender: function(A) { + var B = document.createElement("span"); + B.className = this.itemCls; + B.innerHTML = " "; + this.el = B; + A.addClass("x-menu-sep-li"); + Ext.menu.Separator.superclass.onRender.apply(this, arguments) + } +}); +Ext.menu.Item = function(A) { + Ext.menu.Item.superclass.constructor.call(this, A); + if (this.menu) { + this.menu = Ext.menu.MenuMgr.get(this.menu) + } +}; +Ext.extend(Ext.menu.Item, Ext.menu.BaseItem, { + itemCls: "x-menu-item", + canActivate: true, + showDelay: 200, + hideDelay: 200, + ctype: "Ext.menu.Item", + onRender: function(B, A) { + var C = document.createElement("a"); + C.hideFocus = true; + C.unselectable = "on"; + C.href = this.href || "#"; + if (this.hrefTarget) { + C.target = this.hrefTarget + } + C.className = this.itemCls + (this.menu ? " x-menu-item-arrow" : "") + (this.cls ? " " + this.cls : ""); + C.innerHTML = String.format("{1}", this.icon || Ext.BLANK_IMAGE_URL, this.itemText || this.text, this.iconCls || ""); + this.el = C; + Ext.menu.Item.superclass.onRender.call(this, B, A) + }, + setText: function(A) { + this.text = A; + if (this.rendered) { + this.el.update(String.format("{1}", this.icon || Ext.BLANK_IMAGE_URL, this.text, this.iconCls || "")); + this.parentMenu.autoWidth() + } + }, + setIconClass: function(A) { + var B = this.iconCls; + this.iconCls = A; + if (this.rendered) { + this.el.child("img.x-menu-item-icon").replaceClass(B, this.iconCls) + } + }, + handleClick: function(A) { + if (!this.href) { + A.stopEvent() + } + Ext.menu.Item.superclass.handleClick.apply(this, arguments) + }, + activate: function(A) { + if (Ext.menu.Item.superclass.activate.apply(this, arguments)) { + this.focus(); + if (A) { + this.expandMenu() + } + } + return true + }, + shouldDeactivate: function(A) { + if (Ext.menu.Item.superclass.shouldDeactivate.call(this, A)) { + if (this.menu && this.menu.isVisible()) { + return !this.menu.getEl().getRegion().contains(A.getPoint()) + } + return true + } + return false + }, + deactivate: function() { + Ext.menu.Item.superclass.deactivate.apply(this, arguments); + this.hideMenu() + }, + expandMenu: function(A) { + if (!this.disabled && this.menu) { + clearTimeout(this.hideTimer); + delete this.hideTimer; + if (!this.menu.isVisible() && !this.showTimer) { + this.showTimer = this.deferExpand.defer(this.showDelay, this, [A]) + } else { + if (this.menu.isVisible() && A) { + this.menu.tryActivate(0, 1) + } + } + } + }, + deferExpand: function(A) { + delete this.showTimer; + this.menu.show(this.container, this.parentMenu.subMenuAlign || "tl-tr?", this.parentMenu); + if (A) { + this.menu.tryActivate(0, 1) + } + }, + hideMenu: function() { + clearTimeout(this.showTimer); + delete this.showTimer; + if (!this.hideTimer && this.menu && this.menu.isVisible()) { + this.hideTimer = this.deferHide.defer(this.hideDelay, this) + } + }, + deferHide: function() { + delete this.hideTimer; + this.menu.hide() + } +}); +Ext.menu.CheckItem = function(A) { + Ext.menu.CheckItem.superclass.constructor.call(this, A); + this.addEvents("beforecheckchange", "checkchange"); + if (this.checkHandler) { + this.on("checkchange", this.checkHandler, this.scope) + } + Ext.menu.MenuMgr.registerCheckable(this) +}; +Ext.extend(Ext.menu.CheckItem, Ext.menu.Item, { + itemCls: "x-menu-item x-menu-check-item", + groupClass: "x-menu-group-item", + checked: false, + ctype: "Ext.menu.CheckItem", + onRender: function(A) { + Ext.menu.CheckItem.superclass.onRender.apply(this, arguments); + if (this.group) { + this.el.addClass(this.groupClass) + } + if (this.checked) { + this.checked = false; + this.setChecked(true, true) + } + }, + destroy: function() { + Ext.menu.MenuMgr.unregisterCheckable(this); + Ext.menu.CheckItem.superclass.destroy.apply(this, arguments) + }, + setChecked: function(B, A) { + if (this.checked != B && this.fireEvent("beforecheckchange", this, B) !== false) { + if (this.container) { + this.container[B ? "addClass" : "removeClass"]("x-menu-item-checked") + } + this.checked = B; + if (A !== true) { + this.fireEvent("checkchange", this, B) + } + } + }, + handleClick: function(A) { + if (!this.disabled && !(this.checked && this.group)) { + this.setChecked(!this.checked) + } + Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments) + } +}); +Ext.menu.Adapter = function(B, A) { + Ext.menu.Adapter.superclass.constructor.call(this, A); + this.component = B +}; +Ext.extend(Ext.menu.Adapter, Ext.menu.BaseItem, { + canActivate: true, + onRender: function(B, A) { + this.component.render(B); + this.el = this.component.getEl() + }, + activate: function() { + if (this.disabled) { + return false + } + this.component.focus(); + this.fireEvent("activate", this); + return true + }, + deactivate: function() { + this.fireEvent("deactivate", this) + }, + disable: function() { + this.component.disable(); + Ext.menu.Adapter.superclass.disable.call(this) + }, + enable: function() { + this.component.enable(); + Ext.menu.Adapter.superclass.enable.call(this) + } +}); +Ext.menu.DateItem = function(A) { + Ext.menu.DateItem.superclass.constructor.call(this, new Ext.DatePicker(A), A); + this.picker = this.component; + this.addEvents("select"); + this.picker.on("render", function(B) { + B.getEl().swallowEvent("click"); + B.container.addClass("x-menu-date-item") + }); + this.picker.on("select", this.onSelect, this) +}; +Ext.extend(Ext.menu.DateItem, Ext.menu.Adapter, { + onSelect: function(B, A) { + this.fireEvent("select", this, A, B); + Ext.menu.DateItem.superclass.handleClick.call(this) + } +}); +Ext.menu.ColorItem = function(A) { + Ext.menu.ColorItem.superclass.constructor.call(this, new Ext.ColorPalette(A), A); + this.palette = this.component; + this.relayEvents(this.palette, ["select"]); + if (this.selectHandler) { + this.on("select", this.selectHandler, this.scope) + } +}; +Ext.extend(Ext.menu.ColorItem, Ext.menu.Adapter); +Ext.menu.DateMenu = function(A) { + Ext.menu.DateMenu.superclass.constructor.call(this, A); + this.plain = true; + var B = new Ext.menu.DateItem(A); + this.add(B); + this.picker = B.picker; + this.relayEvents(B, ["select"]); + this.on("beforeshow", function() { + if (this.picker) { + this.picker.hideMonthPicker(true) + } + }, this) +}; +Ext.extend(Ext.menu.DateMenu, Ext.menu.Menu, { + cls: "x-date-menu", + beforeDestroy: function() { + this.picker.destroy() + } +}); +Ext.menu.ColorMenu = function(A) { + Ext.menu.ColorMenu.superclass.constructor.call(this, A); + this.plain = true; + var B = new Ext.menu.ColorItem(A); + this.add(B); + this.palette = B.palette; + this.relayEvents(B, ["select"]) +}; +Ext.extend(Ext.menu.ColorMenu, Ext.menu.Menu); +Ext.form.Field = Ext.extend(Ext.BoxComponent, { + invalidClass: "x-form-invalid", + invalidText: "The value in this field is invalid", + focusClass: "x-form-focus", + validationEvent: "keyup", + validateOnBlur: true, + validationDelay: 250, + defaultAutoCreate: { + tag: "input", + type: "text", + size: "20", + autocomplete: "off" + }, + fieldClass: "x-form-field", + msgTarget: "qtip", + msgFx: "normal", + readOnly: false, + disabled: false, + isFormField: true, + hasFocus: false, + initComponent: function() { + Ext.form.Field.superclass.initComponent.call(this); + this.addEvents("focus", "blur", "specialkey", "change", "invalid", "valid") + }, + getName: function() { + return this.rendered && this.el.dom.name ? this.el.dom.name : (this.hiddenName || "") + }, + onRender: function(C, A) { + Ext.form.Field.superclass.onRender.call(this, C, A); + if (!this.el) { + var B = this.getAutoCreate(); + if (!B.name) { + B.name = this.name || this.id + } + if (this.inputType) { + B.type = this.inputType + } + this.el = C.createChild(B, A) + } + var D = this.el.dom.type; + if (D) { + if (D == "password") { + D = "text" + } + this.el.addClass("x-form-" + D) + } + if (this.readOnly) { + this.el.dom.readOnly = true + } + if (this.tabIndex !== undefined) { + this.el.dom.setAttribute("tabIndex", this.tabIndex) + } + this.el.addClass([this.fieldClass, this.cls]); + this.initValue() + }, + initValue: function() { + if (this.value !== undefined) { + this.setValue(this.value) + } else { + if (this.el.dom.value.length > 0) { + this.setValue(this.el.dom.value) + } + } + }, + isDirty: function() { + if (this.disabled) { + return false + } + return String(this.getValue()) !== String(this.originalValue) + }, + afterRender: function() { + Ext.form.Field.superclass.afterRender.call(this); + this.initEvents() + }, + fireKey: function(A) { + if (A.isSpecialKey()) { + this.fireEvent("specialkey", this, A) + } + }, + reset: function() { + this.setValue(this.originalValue); + this.clearInvalid() + }, + initEvents: function() { + this.el.on(Ext.isIE ? "keydown" : "keypress", this.fireKey, this); + this.el.on("focus", this.onFocus, this); + this.el.on("blur", this.onBlur, this); + this.originalValue = this.getValue() + }, + onFocus: function() { + if (!Ext.isOpera && this.focusClass) { + this.el.addClass(this.focusClass) + } + if (!this.hasFocus) { + this.hasFocus = true; + this.startValue = this.getValue(); + this.fireEvent("focus", this) + } + }, + beforeBlur: Ext.emptyFn, + onBlur: function() { + this.beforeBlur(); + if (!Ext.isOpera && this.focusClass) { + this.el.removeClass(this.focusClass) + } + this.hasFocus = false; + if (this.validationEvent !== false && this.validateOnBlur && this.validationEvent != "blur") { + this.validate() + } + var A = this.getValue(); + if (String(A) !== String(this.startValue)) { + this.fireEvent("change", this, A, this.startValue) + } + this.fireEvent("blur", this) + }, + isValid: function(A) { + if (this.disabled) { + return true + } + var C = this.preventMark; + this.preventMark = A === true; + var B = this.validateValue(this.processValue(this.getRawValue())); + this.preventMark = C; + return B + }, + validate: function() { + if (this.disabled || this.validateValue(this.processValue(this.getRawValue()))) { + this.clearInvalid(); + return true + } + return false + }, + processValue: function(A) { + return A + }, + validateValue: function(A) { + return true + }, + markInvalid: function(C) { + if (!this.rendered || this.preventMark) { + return + } + this.el.addClass(this.invalidClass); + C = C || this.invalidText; + switch (this.msgTarget) { + case "qtip": + this.el.dom.qtip = C; + this.el.dom.qclass = "x-form-invalid-tip"; + if (Ext.QuickTips) { + Ext.QuickTips.enable() + } + break; + case "title": + this.el.dom.title = C; + break; + case "under": + if (!this.errorEl) { + var B = this.el.findParent(".x-form-element", 5, true); + this.errorEl = B.createChild({ + cls: "x-form-invalid-msg" + }); + this.errorEl.setWidth(B.getWidth(true) - 20) + } + this.errorEl.update(C); + Ext.form.Field.msgFx[this.msgFx].show(this.errorEl, this); + break; + case "side": + if (!this.errorIcon) { + var B = this.el.findParent(".x-form-element", 5, true); + this.errorIcon = B.createChild({ + cls: "x-form-invalid-icon" + }) + } + this.alignErrorIcon(); + this.errorIcon.dom.qtip = C; + this.errorIcon.dom.qclass = "x-form-invalid-tip"; + this.errorIcon.show(); + this.on("resize", this.alignErrorIcon, this); + break; + default: + var A = Ext.getDom(this.msgTarget); + A.innerHTML = C; + A.style.display = this.msgDisplay; + break + } + this.fireEvent("invalid", this, C) + }, + alignErrorIcon: function() { + this.errorIcon.alignTo(this.el, "tl-tr", [2, 0]) + }, + clearInvalid: function() { + if (!this.rendered || this.preventMark) { + return + } + this.el.removeClass(this.invalidClass); + switch (this.msgTarget) { + case "qtip": + this.el.dom.qtip = ""; + break; + case "title": + this.el.dom.title = ""; + break; + case "under": + if (this.errorEl) { + Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl, this) + } + break; + case "side": + if (this.errorIcon) { + this.errorIcon.dom.qtip = ""; + this.errorIcon.hide(); + this.un("resize", this.alignErrorIcon, this) + } + break; + default: + var A = Ext.getDom(this.msgTarget); + A.innerHTML = ""; + A.style.display = "none"; + break + } + this.fireEvent("valid", this) + }, + getRawValue: function() { + var A = this.rendered ? this.el.getValue() : Ext.value(this.value, ""); + if (A === this.emptyText) { + A = "" + } + return A + }, + getValue: function() { + if (!this.rendered) { + return this.value + } + var A = this.el.getValue(); + if (A === this.emptyText || A === undefined) { + A = "" + } + return A + }, + setRawValue: function(A) { + return this.el.dom.value = (A === null || A === undefined ? "" : A) + }, + setValue: function(A) { + this.value = A; + if (this.rendered) { + this.el.dom.value = (A === null || A === undefined ? "" : A); + this.validate() + } + }, + adjustSize: function(A, C) { + var B = Ext.form.Field.superclass.adjustSize.call(this, A, C); + B.width = this.adjustWidth(this.el.dom.tagName, B.width); + return B + }, + adjustWidth: function(A, B) { + A = A.toLowerCase(); + if (typeof B == "number" && !Ext.isSafari) { + if (Ext.isIE && (A == "input" || A == "textarea")) { + if (A == "input" && !Ext.isStrict) { + return this.inEditor ? B : B - 3 + } + if (A == "input" && Ext.isStrict) { + return B - (Ext.isIE6 ? 4 : 1) + } + if (A = "textarea" && Ext.isStrict) { + return B - 2 + } + } else { + if (Ext.isOpera && Ext.isStrict) { + if (A == "input") { + return B + 2 + } + if (A = "textarea") { + return B - 2 + } + } + } + } + return B + } +}); +Ext.form.Field.msgFx = { + normal: { + show: function(A, B) { + A.setDisplayed("block") + }, + hide: function(A, B) { + A.setDisplayed(false).update("") + } + }, + slide: { + show: function(A, B) { + A.slideIn("t", { + stopFx: true + }) + }, + hide: function(A, B) { + A.slideOut("t", { + stopFx: true, + useDisplay: true + }) + } + }, + slideRight: { + show: function(A, B) { + A.fixDisplay(); + A.alignTo(B.el, "tl-tr"); + A.slideIn("l", { + stopFx: true + }) + }, + hide: function(A, B) { + A.slideOut("l", { + stopFx: true, + useDisplay: true + }) + } + } +}; +Ext.reg("field", Ext.form.Field); +Ext.form.TextField = Ext.extend(Ext.form.Field, { + grow: false, + growMin: 30, + growMax: 800, + vtype: null, + maskRe: null, + disableKeyFilter: false, + allowBlank: true, + minLength: 0, + maxLength: Number.MAX_VALUE, + minLengthText: "The minimum length for this field is {0}", + maxLengthText: "The maximum length for this field is {0}", + selectOnFocus: false, + blankText: "This field is required", + validator: null, + regex: null, + regexText: "", + emptyText: null, + emptyClass: "x-form-empty-field", + initComponent: function() { + Ext.form.TextField.superclass.initComponent.call(this); + this.addEvents("autosize") + }, + initEvents: function() { + Ext.form.TextField.superclass.initEvents.call(this); + if (this.validationEvent == "keyup") { + this.validationTask = new Ext.util.DelayedTask(this.validate, this); + this.el.on("keyup", this.filterValidation, this) + } else { + if (this.validationEvent !== false) { + this.el.on(this.validationEvent, this.validate, this, { + buffer: this.validationDelay + }) + } + } + if (this.selectOnFocus || this.emptyText) { + this.on("focus", this.preFocus, this); + if (this.emptyText) { + this.on("blur", this.postBlur, this); + this.applyEmptyText() + } + } + if (this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Ext.form.VTypes[this.vtype + "Mask"]))) { + this.el.on("keypress", this.filterKeys, this) + } + if (this.grow) { + this.el.on("keyup", this.onKeyUp, this, { + buffer: 50 + }); + this.el.on("click", this.autoSize, this) + } + }, + processValue: function(A) { + if (this.stripCharsRe) { + var B = A.replace(this.stripCharsRe, ""); + if (B !== A) { + this.setRawValue(B); + return B + } + } + return A + }, + filterValidation: function(A) { + if (!A.isNavKeyPress()) { + this.validationTask.delay(this.validationDelay) + } + }, + onKeyUp: function(A) { + if (!A.isNavKeyPress()) { + this.autoSize() + } + }, + reset: function() { + Ext.form.TextField.superclass.reset.call(this); + this.applyEmptyText() + }, + applyEmptyText: function() { + if (this.rendered && this.emptyText && this.getRawValue().length < 1) { + this.setRawValue(this.emptyText); + this.el.addClass(this.emptyClass) + } + }, + preFocus: function() { + if (this.emptyText) { + if (this.el.dom.value == this.emptyText) { + this.setRawValue("") + } + this.el.removeClass(this.emptyClass) + } + if (this.selectOnFocus) { + this.el.dom.select() + } + }, + postBlur: function() { + this.applyEmptyText() + }, + filterKeys: function(B) { + var A = B.getKey(); + if (!Ext.isIE && (B.isNavKeyPress() || A == B.BACKSPACE || (A == B.DELETE && B.button == -1))) { + return + } + var D = B.getCharCode(), + C = String.fromCharCode(D); + if (Ext.isIE && (B.isSpecialKey() || !C)) { + return + } + if (!this.maskRe.test(C)) { + B.stopEvent() + } + }, + setValue: function(A) { + if (this.emptyText && this.el && A !== undefined && A !== null && A !== "") { + this.el.removeClass(this.emptyClass) + } + Ext.form.TextField.superclass.setValue.apply(this, arguments); + this.applyEmptyText(); + this.autoSize() + }, + validateValue: function(A) { + if (A.length < 1 || A === this.emptyText) { + if (this.allowBlank) { + this.clearInvalid(); + return true + } else { + this.markInvalid(this.blankText); + return false + } + } + if (A.length < this.minLength) { + this.markInvalid(String.format(this.minLengthText, this.minLength)); + return false + } + if (A.length > this.maxLength) { + this.markInvalid(String.format(this.maxLengthText, this.maxLength)); + return false + } + if (this.vtype) { + var C = Ext.form.VTypes; + if (!C[this.vtype](A, this)) { + this.markInvalid(this.vtypeText || C[this.vtype + "Text"]); + return false + } + } + if (typeof this.validator == "function") { + var B = this.validator(A); + if (B !== true) { + this.markInvalid(B); + return false + } + } + if (this.regex && !this.regex.test(A)) { + this.markInvalid(this.regexText); + return false + } + return true + }, + selectText: function(E, A) { + var C = this.getRawValue(); + if (C.length > 0) { + E = E === undefined ? 0 : E; + A = A === undefined ? C.length : A; + var D = this.el.dom; + if (D.setSelectionRange) { + D.setSelectionRange(E, A) + } else { + if (D.createTextRange) { + var B = D.createTextRange(); + B.moveStart("character", E); + B.moveEnd("character", A - C.length); + B.select() + } + } + } + }, + autoSize: function() { + if (!this.grow || !this.rendered) { + return + } + if (!this.metrics) { + this.metrics = Ext.util.TextMetrics.createInstance(this.el) + } + var C = this.el; + var B = C.dom.value; + var D = document.createElement("div"); + D.appendChild(document.createTextNode(B)); + B = D.innerHTML; + D = null; + B += " "; + var A = Math.min(this.growMax, Math.max(this.metrics.getWidth(B) + 10, this.growMin)); + this.el.setWidth(A); + this.fireEvent("autosize", this, A) + } +}); +Ext.reg("textfield", Ext.form.TextField); +Ext.form.TriggerField = Ext.extend(Ext.form.TextField, { + defaultAutoCreate: { + tag: "input", + type: "text", + size: "16", + autocomplete: "off" + }, + hideTrigger: false, + autoSize: Ext.emptyFn, + monitorTab: true, + deferHeight: true, + mimicing: false, + onResize: function(A, B) { + Ext.form.TriggerField.superclass.onResize.call(this, A, B); + if (typeof A == "number") { + this.el.setWidth(this.adjustWidth("input", A - this.trigger.getWidth())) + } + this.wrap.setWidth(this.el.getWidth() + this.trigger.getWidth()) + }, + adjustSize: Ext.BoxComponent.prototype.adjustSize, + getResizeEl: function() { + return this.wrap + }, + getPositionEl: function() { + return this.wrap + }, + alignErrorIcon: function() { + this.errorIcon.alignTo(this.wrap, "tl-tr", [2, 0]) + }, + onRender: function(B, A) { + Ext.form.TriggerField.superclass.onRender.call(this, B, A); + this.wrap = this.el.wrap({ + cls: "x-form-field-wrap" + }); + this.trigger = this.wrap.createChild(this.triggerConfig || { + tag: "img", + src: Ext.BLANK_IMAGE_URL, + cls: "x-form-trigger " + this.triggerClass + }); + if (this.hideTrigger) { + this.trigger.setDisplayed(false) + } + this.initTrigger(); + if (!this.width) { + this.wrap.setWidth(this.el.getWidth() + this.trigger.getWidth()) + } + }, + initTrigger: function() { + this.trigger.on("click", this.onTriggerClick, this, { + preventDefault: true + }); + this.trigger.addClassOnOver("x-form-trigger-over"); + this.trigger.addClassOnClick("x-form-trigger-click") + }, + onDestroy: function() { + if (this.trigger) { + this.trigger.removeAllListeners(); + this.trigger.remove() + } + if (this.wrap) { + this.wrap.remove() + } + Ext.form.TriggerField.superclass.onDestroy.call(this) + }, + onFocus: function() { + Ext.form.TriggerField.superclass.onFocus.call(this); + if (!this.mimicing) { + this.wrap.addClass("x-trigger-wrap-focus"); + this.mimicing = true; + Ext.get(Ext.isIE ? document.body : document).on("mousedown", this.mimicBlur, this, { + delay: 10 + }); + if (this.monitorTab) { + this.el.on("keydown", this.checkTab, this) + } + } + }, + checkTab: function(A) { + if (A.getKey() == A.TAB) { + this.triggerBlur() + } + }, + onBlur: function() {}, + mimicBlur: function(A) { + if (!this.wrap.contains(A.target) && this.validateBlur(A)) { + this.triggerBlur() + } + }, + triggerBlur: function() { + this.mimicing = false; + Ext.get(Ext.isIE ? document.body : document).un("mousedown", this.mimicBlur); + if (this.monitorTab) { + this.el.un("keydown", this.checkTab, this) + } + this.beforeBlur(); + this.wrap.removeClass("x-trigger-wrap-focus"); + Ext.form.TriggerField.superclass.onBlur.call(this) + }, + beforeBlur: Ext.emptyFn, + validateBlur: function(A) { + return true + }, + onDisable: function() { + Ext.form.TriggerField.superclass.onDisable.call(this); + if (this.wrap) { + this.wrap.addClass("x-item-disabled") + } + }, + onEnable: function() { + Ext.form.TriggerField.superclass.onEnable.call(this); + if (this.wrap) { + this.wrap.removeClass("x-item-disabled") + } + }, + onShow: function() { + if (this.wrap) { + this.wrap.dom.style.display = ""; + this.wrap.dom.style.visibility = "visible" + } + }, + onHide: function() { + this.wrap.dom.style.display = "none" + }, + onTriggerClick: Ext.emptyFn +}); +Ext.form.TwinTriggerField = Ext.extend(Ext.form.TriggerField, { + initComponent: function() { + Ext.form.TwinTriggerField.superclass.initComponent.call(this); + this.triggerConfig = { + tag: "span", + cls: "x-form-twin-triggers", + cn: [{ + tag: "img", + src: Ext.BLANK_IMAGE_URL, + cls: "x-form-trigger " + this.trigger1Class + }, { + tag: "img", + src: Ext.BLANK_IMAGE_URL, + cls: "x-form-trigger " + this.trigger2Class + }] + } + }, + getTrigger: function(A) { + return this.triggers[A] + }, + initTrigger: function() { + var A = this.trigger.select(".x-form-trigger", true); + this.wrap.setStyle("overflow", "hidden"); + var B = this; + A.each(function(D, F, C) { + D.hide = function() { + var G = B.wrap.getWidth(); + this.dom.style.display = "none"; + B.el.setWidth(G - B.trigger.getWidth()) + }; + D.show = function() { + var G = B.wrap.getWidth(); + this.dom.style.display = ""; + B.el.setWidth(G - B.trigger.getWidth()) + }; + var E = "Trigger" + (C + 1); + if (this["hide" + E]) { + D.dom.style.display = "none" + } + D.on("click", this["on" + E + "Click"], this, { + preventDefault: true + }); + D.addClassOnOver("x-form-trigger-over"); + D.addClassOnClick("x-form-trigger-click") + }, this); + this.triggers = A.elements + }, + onTrigger1Click: Ext.emptyFn, + onTrigger2Click: Ext.emptyFn +}); +Ext.reg("trigger", Ext.form.TriggerField); +Ext.form.TextArea = Ext.extend(Ext.form.TextField, { + growMin: 60, + growMax: 1000, + growAppend: " \n ", + growPad: 0, + enterIsSpecial: false, + preventScrollbars: false, + onRender: function(B, A) { + if (!this.el) { + this.defaultAutoCreate = { + tag: "textarea", + style: "width:100px;height:60px;", + autocomplete: "off" + } + } + Ext.form.TextArea.superclass.onRender.call(this, B, A); + if (this.grow) { + this.textSizeEl = Ext.DomHelper.append(document.body, { + tag: "pre", + cls: "x-form-grow-sizer" + }); + if (this.preventScrollbars) { + this.el.setStyle("overflow", "hidden") + } + this.el.setHeight(this.growMin) + } + }, + onDestroy: function() { + if (this.textSizeEl) { + Ext.removeNode(this.textSizeEl) + } + Ext.form.TextArea.superclass.onDestroy.call(this) + }, + fireKey: function(A) { + if (A.isSpecialKey() && (this.enterIsSpecial || (A.getKey() != A.ENTER || A.hasModifier()))) { + this.fireEvent("specialkey", this, A) + } + }, + onKeyUp: function(A) { + if (!A.isNavKeyPress() || A.getKey() == A.ENTER) { + this.autoSize() + } + }, + autoSize: function() { + if (!this.grow || !this.textSizeEl) { + return + } + var C = this.el; + var A = C.dom.value; + var D = this.textSizeEl; + D.innerHTML = ""; + D.appendChild(document.createTextNode(A)); + A = D.innerHTML; + Ext.fly(D).setWidth(this.el.getWidth()); + if (A.length < 1) { + A = "  " + } else { + if (Ext.isIE) { + A = A.replace(/\n/g, "

       

      ") + } + A += this.growAppend + } + D.innerHTML = A; + var B = Math.min(this.growMax, Math.max(D.offsetHeight, this.growMin) + this.growPad); + if (B != this.lastHeight) { + this.lastHeight = B; + this.el.setHeight(B); + this.fireEvent("autosize", this, B) + } + } +}); +Ext.reg("textarea", Ext.form.TextArea); +Ext.form.NumberField = Ext.extend(Ext.form.TextField, { + fieldClass: "x-form-field x-form-num-field", + allowDecimals: true, + decimalSeparator: ".", + decimalPrecision: 2, + allowNegative: true, + minValue: Number.NEGATIVE_INFINITY, + maxValue: Number.MAX_VALUE, + minText: "The minimum value for this field is {0}", + maxText: "The maximum value for this field is {0}", + nanText: "{0} is not a valid number", + baseChars: "0123456789", + initEvents: function() { + Ext.form.NumberField.superclass.initEvents.call(this); + var B = this.baseChars + ""; + if (this.allowDecimals) { + B += this.decimalSeparator + } + if (this.allowNegative) { + B += "-" + } + this.stripCharsRe = new RegExp("[^" + B + "]", "gi"); + var A = function(D) { + var C = D.getKey(); + if (!Ext.isIE && (D.isSpecialKey() || C == D.BACKSPACE || C == D.DELETE)) { + return + } + var E = D.getCharCode(); + if (B.indexOf(String.fromCharCode(E)) === -1) { + D.stopEvent() + } + }; + this.el.on("keypress", A, this) + }, + validateValue: function(B) { + if (!Ext.form.NumberField.superclass.validateValue.call(this, B)) { + return false + } + if (B.length < 1) { + return true + } + B = String(B).replace(this.decimalSeparator, "."); + if (isNaN(B)) { + this.markInvalid(String.format(this.nanText, B)); + return false + } + var A = this.parseValue(B); + if (A < this.minValue) { + this.markInvalid(String.format(this.minText, this.minValue)); + return false + } + if (A > this.maxValue) { + this.markInvalid(String.format(this.maxText, this.maxValue)); + return false + } + return true + }, + getValue: function() { + return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this))) + }, + setValue: function(A) { + A = parseFloat(A); + A = isNaN(A) ? "" : String(A).replace(".", this.decimalSeparator); + Ext.form.NumberField.superclass.setValue.call(this, A) + }, + parseValue: function(A) { + A = parseFloat(String(A).replace(this.decimalSeparator, ".")); + return isNaN(A) ? "" : A + }, + fixPrecision: function(B) { + var A = isNaN(B); + if (!this.allowDecimals || this.decimalPrecision == -1 || A || !B) { + return A ? "" : B + } + return parseFloat(parseFloat(B).toFixed(this.decimalPrecision)) + }, + beforeBlur: function() { + var A = this.parseValue(this.getRawValue()); + if (A) { + this.setValue(this.fixPrecision(A)) + } + } +}); +Ext.reg("numberfield", Ext.form.NumberField); +Ext.form.DateField = Ext.extend(Ext.form.TriggerField, { + format: "m/d/y", + altFormats: "m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d", + disabledDays: null, + disabledDaysText: "Disabled", + disabledDates: null, + disabledDatesText: "Disabled", + minValue: null, + maxValue: null, + minText: "The date in this field must be equal to or after {0}", + maxText: "The date in this field must be equal to or before {0}", + invalidText: "{0} is not a valid date - it must be in the format {1}", + triggerClass: "x-form-date-trigger", + defaultAutoCreate: { + tag: "input", + type: "text", + size: "10", + autocomplete: "off" + }, + initComponent: function() { + Ext.form.DateField.superclass.initComponent.call(this); + if (typeof this.minValue == "string") { + this.minValue = this.parseDate(this.minValue) + } + if (typeof this.maxValue == "string") { + this.maxValue = this.parseDate(this.maxValue) + } + this.ddMatch = null; + if (this.disabledDates) { + var A = this.disabledDates; + var C = "(?:"; + for (var B = 0; B < A.length; B++) { + C += A[B]; + if (B != A.length - 1) { + C += "|" + } + } + this.ddMatch = new RegExp(C + ")") + } + }, + validateValue: function(E) { + E = this.formatDate(E); + if (!Ext.form.DateField.superclass.validateValue.call(this, E)) { + return false + } + if (E.length < 1) { + return true + } + var C = E; + E = this.parseDate(E); + if (!E) { + this.markInvalid(String.format(this.invalidText, C, this.format)); + return false + } + var F = E.getTime(); + if (this.minValue && F < this.minValue.getTime()) { + this.markInvalid(String.format(this.minText, this.formatDate(this.minValue))); + return false + } + if (this.maxValue && F > this.maxValue.getTime()) { + this.markInvalid(String.format(this.maxText, this.formatDate(this.maxValue))); + return false + } + if (this.disabledDays) { + var A = E.getDay(); + for (var B = 0; B < this.disabledDays.length; B++) { + if (A === this.disabledDays[B]) { + this.markInvalid(this.disabledDaysText); + return false + } + } + } + var D = this.formatDate(E); + if (this.ddMatch && this.ddMatch.test(D)) { + this.markInvalid(String.format(this.disabledDatesText, D)); + return false + } + return true + }, + validateBlur: function() { + return !this.menu || !this.menu.isVisible() + }, + getValue: function() { + return this.parseDate(Ext.form.DateField.superclass.getValue.call(this)) || "" + }, + setValue: function(A) { + Ext.form.DateField.superclass.setValue.call(this, this.formatDate(this.parseDate(A))) + }, + parseDate: function(D) { + if (!D || Ext.isDate(D)) { + return D + } + var B = Date.parseDate(D, this.format); + if (!B && this.altFormats) { + if (!this.altFormatsArray) { + this.altFormatsArray = this.altFormats.split("|") + } + for (var C = 0, A = this.altFormatsArray.length; C < A && !B; C++) { + B = Date.parseDate(D, this.altFormatsArray[C]) + } + } + return B + }, + onDestroy: function() { + if (this.menu) { + this.menu.destroy() + } + if (this.wrap) { + this.wrap.remove() + } + Ext.form.DateField.superclass.onDestroy.call(this) + }, + formatDate: function(A) { + return Ext.isDate(A) ? A.dateFormat(this.format) : A + }, + menuListeners: { + select: function(A, B) { + this.setValue(B) + }, + show: function() { + this.onFocus() + }, + hide: function() { + this.focus.defer(10, this); + var A = this.menuListeners; + this.menu.un("select", A.select, this); + this.menu.un("show", A.show, this); + this.menu.un("hide", A.hide, this) + } + }, + onTriggerClick: function() { + if (this.disabled) { + return + } + if (this.menu == null) { + this.menu = new Ext.menu.DateMenu() + } + Ext.apply(this.menu.picker, { + minDate: this.minValue, + maxDate: this.maxValue, + disabledDatesRE: this.ddMatch, + disabledDatesText: this.disabledDatesText, + disabledDays: this.disabledDays, + disabledDaysText: this.disabledDaysText, + format: this.format, + minText: String.format(this.minText, this.formatDate(this.minValue)), + maxText: String.format(this.maxText, this.formatDate(this.maxValue)) + }); + this.menu.on(Ext.apply({}, this.menuListeners, { + scope: this + })); + this.menu.picker.setValue(this.getValue() || new Date()); + this.menu.show(this.el, "tl-bl?") + }, + beforeBlur: function() { + var A = this.parseDate(this.getRawValue()); + if (A) { + this.setValue(A) + } + } +}); +Ext.reg("datefield", Ext.form.DateField); +Ext.form.ComboBox = Ext.extend(Ext.form.TriggerField, { + defaultAutoCreate: { + tag: "input", + type: "text", + size: "24", + autocomplete: "off" + }, + listClass: "", + selectedClass: "x-combo-selected", + triggerClass: "x-form-arrow-trigger", + shadow: "sides", + listAlign: "tl-bl?", + maxHeight: 300, + minHeight: 90, + triggerAction: "query", + minChars: 4, + typeAhead: false, + queryDelay: 500, + pageSize: 0, + selectOnFocus: false, + queryParam: "query", + loadingText: "Loading...", + resizable: false, + handleHeight: 8, + editable: true, + allQuery: "", + mode: "remote", + minListWidth: 70, + forceSelection: false, + typeAheadDelay: 250, + lazyInit: true, + initComponent: function() { + Ext.form.ComboBox.superclass.initComponent.call(this); + this.addEvents("expand", "collapse", "beforeselect", "select", "beforequery"); + if (this.transform) { + this.allowDomMove = false; + var C = Ext.getDom(this.transform); + if (!this.hiddenName) { + this.hiddenName = C.name + } + if (!this.store) { + this.mode = "local"; + var G = [], + D = C.options; + for (var B = 0, A = D.length; B < A; B++) { + var F = D[B]; + var E = (Ext.isIE ? F.getAttributeNode("value").specified : F.hasAttribute("value")) ? F.value : F.text; + if (F.selected) { + this.value = E + } + G.push([E, F.text]) + } + this.store = new Ext.data.SimpleStore({ + "id": 0, + fields: ["value", "text"], + data: G + }); + this.valueField = "value"; + this.displayField = "text" + } + C.name = Ext.id(); + if (!this.lazyRender) { + this.target = true; + this.el = Ext.DomHelper.insertBefore(C, this.autoCreate || this.defaultAutoCreate); + Ext.removeNode(C); + this.render(this.el.parentNode) + } else { + Ext.removeNode(C) + } + } + this.selectedIndex = -1; + if (this.mode == "local") { + if (this.initialConfig.queryDelay === undefined) { + this.queryDelay = 10 + } + if (this.initialConfig.minChars === undefined) { + this.minChars = 0 + } + } + }, + onRender: function(B, A) { + Ext.form.ComboBox.superclass.onRender.call(this, B, A); + if (this.hiddenName) { + this.hiddenField = this.el.insertSibling({ + tag: "input", + type: "hidden", + name: this.hiddenName, + id: (this.hiddenId || this.hiddenName) + }, "before", true); + this.hiddenField.value = this.hiddenValue !== undefined ? this.hiddenValue : this.value !== undefined ? this.value : ""; + this.el.dom.removeAttribute("name") + } + if (Ext.isGecko) { + this.el.dom.setAttribute("autocomplete", "off") + } + if (!this.lazyInit) { + this.initList() + } else { + this.on("focus", this.initList, this, { + single: true + }) + } + if (!this.editable) { + this.editable = true; + this.setEditable(false) + } + }, + initList: function() { + if (!this.list) { + var A = "x-combo-list"; + this.list = new Ext.Layer({ + shadow: this.shadow, + cls: [A, this.listClass].join(" "), + constrain: false + }); + var B = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth); + this.list.setWidth(B); + this.list.swallowEvent("mousewheel"); + this.assetHeight = 0; + if (this.title) { + this.header = this.list.createChild({ + cls: A + "-hd", + html: this.title + }); + this.assetHeight += this.header.getHeight() + } + this.innerList = this.list.createChild({ + cls: A + "-inner" + }); + this.innerList.on("mouseover", this.onViewOver, this); + this.innerList.on("mousemove", this.onViewMove, this); + this.innerList.setWidth(B - this.list.getFrameWidth("lr")); + if (this.pageSize) { + this.footer = this.list.createChild({ + cls: A + "-ft" + }); + this.pageTb = new Ext.PagingToolbar({ + store: this.store, + pageSize: this.pageSize, + renderTo: this.footer + }); + this.assetHeight += this.footer.getHeight() + } + if (!this.tpl) { + this.tpl = "
      {" + this.displayField + "}
      " + } + this.view = new Ext.DataView({ + applyTo: this.innerList, + tpl: this.tpl, + singleSelect: true, + selectedClass: this.selectedClass, + itemSelector: this.itemSelector || "." + A + "-item" + }); + this.view.on("click", this.onViewClick, this); + this.bindStore(this.store, true); + if (this.resizable) { + this.resizer = new Ext.Resizable(this.list, { + pinned: true, + handles: "se" + }); + this.resizer.on("resize", function(E, C, D) { + this.maxHeight = D - this.handleHeight - this.list.getFrameWidth("tb") - this.assetHeight; + this.listWidth = C; + this.innerList.setWidth(C - this.list.getFrameWidth("lr")); + this.restrictHeight() + }, this); + this[this.pageSize ? "footer" : "innerList"].setStyle("margin-bottom", this.handleHeight + "px") + } + } + }, + bindStore: function(A, B) { + if (this.store && !B) { + this.store.un("beforeload", this.onBeforeLoad, this); + this.store.un("load", this.onLoad, this); + this.store.un("loadexception", this.collapse, this); + if (!A) { + this.store = null; + if (this.view) { + this.view.setStore(null) + } + } + } + if (A) { + this.store = Ext.StoreMgr.lookup(A); + this.store.on("beforeload", this.onBeforeLoad, this); + this.store.on("load", this.onLoad, this); + this.store.on("loadexception", this.collapse, this); + if (this.view) { + this.view.setStore(A) + } + } + }, + initEvents: function() { + Ext.form.ComboBox.superclass.initEvents.call(this); + this.keyNav = new Ext.KeyNav(this.el, { + "up": function(A) { + this.inKeyMode = true; + this.selectPrev() + }, + "down": function(A) { + if (!this.isExpanded()) { + this.onTriggerClick() + } else { + this.inKeyMode = true; + this.selectNext() + } + }, + "enter": function(A) { + this.onViewClick(); + this.delayedCheck = true; + this.unsetDelayCheck.defer(10, this) + }, + "esc": function(A) { + this.collapse() + }, + "tab": function(A) { + this.onViewClick(false); + return true + }, + scope: this, + doRelay: function(C, B, A) { + if (A == "down" || this.scope.isExpanded()) { + return Ext.KeyNav.prototype.doRelay.apply(this, arguments) + } + return true + }, + forceKeyDown: true + }); + this.queryDelay = Math.max(this.queryDelay || 10, this.mode == "local" ? 10 : 250); + this.dqTask = new Ext.util.DelayedTask(this.initQuery, this); + if (this.typeAhead) { + this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this) + } + if (this.editable !== false) { + this.el.on("keyup", this.onKeyUp, this) + } + if (this.forceSelection) { + this.on("blur", this.doForce, this) + } + }, + onDestroy: function() { + if (this.view) { + this.view.el.removeAllListeners(); + this.view.el.remove(); + this.view.purgeListeners() + } + if (this.list) { + this.list.destroy() + } + this.bindStore(null); + Ext.form.ComboBox.superclass.onDestroy.call(this) + }, + unsetDelayCheck: function() { + delete this.delayedCheck + }, + fireKey: function(A) { + if (A.isNavKeyPress() && !this.isExpanded() && !this.delayedCheck) { + this.fireEvent("specialkey", this, A) + } + }, + onResize: function(A, B) { + Ext.form.ComboBox.superclass.onResize.apply(this, arguments); + if (this.list && this.listWidth === undefined) { + var C = Math.max(A, this.minListWidth); + this.list.setWidth(C); + this.innerList.setWidth(C - this.list.getFrameWidth("lr")) + } + }, + onEnable: function() { + Ext.form.ComboBox.superclass.onEnable.apply(this, arguments); + if (this.hiddenField) { + this.hiddenField.disabled = false + } + }, + onDisable: function() { + Ext.form.ComboBox.superclass.onDisable.apply(this, arguments); + if (this.hiddenField) { + this.hiddenField.disabled = true + } + }, + setEditable: function(A) { + if (A == this.editable) { + return + } + this.editable = A; + if (!A) { + this.el.dom.setAttribute("readOnly", true); + this.el.on("mousedown", this.onTriggerClick, this); + this.el.addClass("x-combo-noedit") + } else { + this.el.dom.setAttribute("readOnly", false); + this.el.un("mousedown", this.onTriggerClick, this); + this.el.removeClass("x-combo-noedit") + } + }, + onBeforeLoad: function() { + if (!this.hasFocus) { + return + } + this.innerList.update(this.loadingText ? "
      " + this.loadingText + "
      " : ""); + this.restrictHeight(); + this.selectedIndex = -1 + }, + onLoad: function() { + if (!this.hasFocus) { + return + } + if (this.store.getCount() > 0) { + this.expand(); + this.restrictHeight(); + if (this.lastQuery == this.allQuery) { + if (this.editable) { + this.el.dom.select() + } + if (!this.selectByValue(this.value, true)) { + this.select(0, true) + } + } else { + this.selectNext(); + if (this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE) { + this.taTask.delay(this.typeAheadDelay) + } + } + } else { + this.onEmptyResults() + } + }, + onTypeAhead: function() { + if (this.store.getCount() > 0) { + var B = this.store.getAt(0); + var C = B.data[this.displayField]; + var A = C.length; + var D = this.getRawValue().length; + if (D != A) { + this.setRawValue(C); + this.selectText(D, C.length) + } + } + }, + onSelect: function(A, B) { + if (this.fireEvent("beforeselect", this, A, B) !== false) { + this.setValue(A.data[this.valueField || this.displayField]); + this.collapse(); + this.fireEvent("select", this, A, B) + } + }, + getValue: function() { + if (this.valueField) { + return typeof this.value != "undefined" ? this.value : "" + } else { + return Ext.form.ComboBox.superclass.getValue.call(this) + } + }, + clearValue: function() { + if (this.hiddenField) { + this.hiddenField.value = "" + } + this.setRawValue(""); + this.lastSelectionText = ""; + this.applyEmptyText(); + this.value = "" + }, + setValue: function(A) { + var C = A; + if (this.valueField) { + var B = this.findRecord(this.valueField, A); + if (B) { + C = B.data[this.displayField] + } else { + if (this.valueNotFoundText !== undefined) { + C = this.valueNotFoundText + } + } + } + this.lastSelectionText = C; + if (this.hiddenField) { + this.hiddenField.value = A + } + Ext.form.ComboBox.superclass.setValue.call(this, C); + this.value = A + }, + findRecord: function(C, B) { + var A; + if (this.store.getCount() > 0) { + this.store.each(function(D) { + if (D.data[C] == B) { + A = D; + return false + } + }) + } + return A + }, + onViewMove: function(B, A) { + this.inKeyMode = false + }, + onViewOver: function(D, B) { + if (this.inKeyMode) { + return + } + var C = this.view.findItemFromChild(B); + if (C) { + var A = this.view.indexOf(C); + this.select(A, false) + } + }, + onViewClick: function(B) { + var A = this.view.getSelectedIndexes()[0]; + var C = this.store.getAt(A); + if (C) { + this.onSelect(C, A) + } + if (B !== false) { + this.el.focus() + } + }, + restrictHeight: function() { + this.innerList.dom.style.height = ""; + var B = this.innerList.dom; + var E = this.list.getFrameWidth("tb") + (this.resizable ? this.handleHeight : 0) + this.assetHeight; + var C = Math.max(B.clientHeight, B.offsetHeight, B.scrollHeight); + var A = this.getPosition()[1] - Ext.getBody().getScroll().top; + var F = Ext.lib.Dom.getViewHeight() - A - this.getSize().height; + var D = Math.max(A, F, this.minHeight || 0) - this.list.shadow.offset - E - 2; + C = Math.min(C, D, this.maxHeight); + this.innerList.setHeight(C); + this.list.beginUpdate(); + this.list.setHeight(C + E); + this.list.alignTo(this.el, this.listAlign); + this.list.endUpdate() + }, + onEmptyResults: function() { + this.collapse() + }, + isExpanded: function() { + return this.list && this.list.isVisible() + }, + selectByValue: function(A, C) { + if (A !== undefined && A !== null) { + var B = this.findRecord(this.valueField || this.displayField, A); + if (B) { + this.select(this.store.indexOf(B), C); + return true + } + } + return false + }, + select: function(A, C) { + this.selectedIndex = A; + this.view.select(A); + if (C !== false) { + var B = this.view.getNode(A); + if (B) { + this.innerList.scrollChildIntoView(B, false) + } + } + }, + selectNext: function() { + var A = this.store.getCount(); + if (A > 0) { + if (this.selectedIndex == -1) { + this.select(0) + } else { + if (this.selectedIndex < A - 1) { + this.select(this.selectedIndex + 1) + } + } + } + }, + selectPrev: function() { + var A = this.store.getCount(); + if (A > 0) { + if (this.selectedIndex == -1) { + this.select(0) + } else { + if (this.selectedIndex != 0) { + this.select(this.selectedIndex - 1) + } + } + } + }, + onKeyUp: function(A) { + if (this.editable !== false && !A.isSpecialKey()) { + this.lastKey = A.getKey(); + this.dqTask.delay(this.queryDelay) + } + }, + validateBlur: function() { + return !this.list || !this.list.isVisible() + }, + initQuery: function() { + this.doQuery(this.getRawValue()) + }, + doForce: function() { + if (this.el.dom.value.length > 0) { + this.el.dom.value = this.lastSelectionText === undefined ? "" : this.lastSelectionText; + this.applyEmptyText() + } + }, + doQuery: function(C, B) { + if (C === undefined || C === null) { + C = "" + } + var A = { + query: C, + forceAll: B, + combo: this, + cancel: false + }; + if (this.fireEvent("beforequery", A) === false || A.cancel) { + return false + } + C = A.query; + B = A.forceAll; + if (B === true || (C.length >= this.minChars)) { + if (this.lastQuery !== C) { + this.lastQuery = C; + if (this.mode == "local") { + this.selectedIndex = -1; + if (B) { + this.store.clearFilter() + } else { + this.store.filter(this.displayField, C) + } + this.onLoad() + } else { + this.store.baseParams[this.queryParam] = C; + this.store.load({ + params: this.getParams(C) + }); + this.expand() + } + } else { + this.selectedIndex = -1; + this.onLoad() + } + } + }, + getParams: function(A) { + var B = {}; + if (this.pageSize) { + B.start = 0; + B.limit = this.pageSize + } + return B + }, + collapse: function() { + if (!this.isExpanded()) { + return + } + this.list.hide(); + Ext.getDoc().un("mousewheel", this.collapseIf, this); + Ext.getDoc().un("mousedown", this.collapseIf, this); + this.fireEvent("collapse", this) + }, + collapseIf: function(A) { + if (!A.within(this.wrap) && !A.within(this.list)) { + this.collapse() + } + }, + expand: function() { + if (this.isExpanded() || !this.hasFocus) { + return + } + this.list.alignTo(this.wrap, this.listAlign); + this.list.show(); + this.innerList.setOverflow("auto"); + Ext.getDoc().on("mousewheel", this.collapseIf, this); + Ext.getDoc().on("mousedown", this.collapseIf, this); + this.fireEvent("expand", this) + }, + onTriggerClick: function() { + if (this.disabled) { + return + } + if (this.isExpanded()) { + this.collapse(); + this.el.focus() + } else { + this.onFocus({}); + if (this.triggerAction == "all") { + this.doQuery(this.allQuery, true) + } else { + this.doQuery(this.getRawValue()) + } + this.el.focus() + } + } +}); +Ext.reg("combo", Ext.form.ComboBox); +Ext.form.Checkbox = Ext.extend(Ext.form.Field, { + focusClass: undefined, + fieldClass: "x-form-field", + checked: false, + defaultAutoCreate: { + tag: "input", + type: "checkbox", + autocomplete: "off" + }, + initComponent: function() { + Ext.form.Checkbox.superclass.initComponent.call(this); + this.addEvents("check") + }, + onResize: function() { + Ext.form.Checkbox.superclass.onResize.apply(this, arguments); + if (!this.boxLabel) { + this.el.alignTo(this.wrap, "c-c") + } + }, + initEvents: function() { + Ext.form.Checkbox.superclass.initEvents.call(this); + this.el.on("click", this.onClick, this); + this.el.on("change", this.onClick, this) + }, + getResizeEl: function() { + return this.wrap + }, + getPositionEl: function() { + return this.wrap + }, + markInvalid: Ext.emptyFn, + clearInvalid: Ext.emptyFn, + onRender: function(B, A) { + Ext.form.Checkbox.superclass.onRender.call(this, B, A); + if (this.inputValue !== undefined) { + this.el.dom.value = this.inputValue + } + this.wrap = this.el.wrap({ + cls: "x-form-check-wrap" + }); + if (this.boxLabel) { + this.wrap.createChild({ + tag: "label", + htmlFor: this.el.id, + cls: "x-form-cb-label", + html: this.boxLabel + }) + } + if (this.checked) { + this.setValue(true) + } else { + this.checked = this.el.dom.checked + } + }, + onDestroy: function() { + if (this.wrap) { + this.wrap.remove() + } + Ext.form.Checkbox.superclass.onDestroy.call(this) + }, + initValue: Ext.emptyFn, + getValue: function() { + if (this.rendered) { + return this.el.dom.checked + } + return false + }, + onClick: function() { + if (this.el.dom.checked != this.checked) { + this.setValue(this.el.dom.checked) + } + }, + setValue: function(A) { + this.checked = (A === true || A === "true" || A == "1" || String(A).toLowerCase() == "on"); + if (this.el && this.el.dom) { + this.el.dom.checked = this.checked; + this.el.dom.defaultChecked = this.checked + } + this.fireEvent("check", this, this.checked) + } +}); +Ext.reg("checkbox", Ext.form.Checkbox); +Ext.form.Radio = Ext.extend(Ext.form.Checkbox, { + inputType: "radio", + markInvalid: Ext.emptyFn, + clearInvalid: Ext.emptyFn, + getGroupValue: function() { + var A = this.el.up("form") || Ext.getBody(); + var B = A.child("input[name=" + this.el.dom.name + "]:checked", true); + return B ? B.value : null + }, + onClick: function() { + if (this.el.dom.checked != this.checked) { + var B = this.el.up("form") || Ext.getBody(); + var A = B.select("input[name=" + this.el.dom.name + "]"); + A.each(function(C) { + if (C.dom.id == this.id) { + this.setValue(true) + } else { + Ext.getCmp(C.dom.id).setValue(false) + } + }, this) + } + }, + setValue: function(A) { + if (typeof A == "boolean") { + Ext.form.Radio.superclass.setValue.call(this, A) + } else { + var B = this.el.up("form").child("input[name=" + this.el.dom.name + "][value=" + A + "]", true); + if (B) { + B.checked = true + } + } + } +}); +Ext.reg("radio", Ext.form.Radio); +Ext.form.Hidden = Ext.extend(Ext.form.Field, { + inputType: "hidden", + onRender: function() { + Ext.form.Hidden.superclass.onRender.apply(this, arguments) + }, + initEvents: function() { + this.originalValue = this.getValue() + }, + setSize: Ext.emptyFn, + setWidth: Ext.emptyFn, + setHeight: Ext.emptyFn, + setPosition: Ext.emptyFn, + setPagePosition: Ext.emptyFn, + markInvalid: Ext.emptyFn, + clearInvalid: Ext.emptyFn +}); +Ext.reg("hidden", Ext.form.Hidden); +Ext.form.BasicForm = function(B, A) { + Ext.apply(this, A); + this.items = new Ext.util.MixedCollection(false, function(C) { + return C.id || (C.id = Ext.id()) + }); + this.addEvents("beforeaction", "actionfailed", "actioncomplete"); + if (B) { + this.initEl(B) + } + Ext.form.BasicForm.superclass.constructor.call(this) +}; +Ext.extend(Ext.form.BasicForm, Ext.util.Observable, { + timeout: 30, + activeAction: null, + trackResetOnLoad: false, + initEl: function(A) { + this.el = Ext.get(A); + this.id = this.el.id || Ext.id(); + if (!this.standardSubmit) { + this.el.on("submit", this.onSubmit, this) + } + this.el.addClass("x-form") + }, + getEl: function() { + return this.el + }, + onSubmit: function(A) { + A.stopEvent() + }, + destroy: function() { + this.items.each(function(A) { + Ext.destroy(A) + }); + if (this.el) { + this.el.removeAllListeners(); + this.el.remove() + } + this.purgeListeners() + }, + isValid: function() { + var A = true; + this.items.each(function(B) { + if (!B.validate()) { + A = false + } + }); + return A + }, + isDirty: function() { + var A = false; + this.items.each(function(B) { + if (B.isDirty()) { + A = true; + return false + } + }); + return A + }, + doAction: function(B, A) { + if (typeof B == "string") { + B = new Ext.form.Action.ACTION_TYPES[B](this, A) + } + if (this.fireEvent("beforeaction", this, B) !== false) { + this.beforeAction(B); + B.run.defer(100, B) + } + return this + }, + submit: function(B) { + if (this.standardSubmit) { + var A = this.isValid(); + if (A) { + this.el.dom.submit() + } + return A + } + this.doAction("submit", B); + return this + }, + load: function(A) { + this.doAction("load", A); + return this + }, + updateRecord: function(B) { + B.beginEdit(); + var A = B.fields; + A.each(function(C) { + var D = this.findField(C.name); + if (D) { + B.set(C.name, D.getValue()) + } + }, this); + B.endEdit(); + return this + }, + loadRecord: function(A) { + this.setValues(A.data); + return this + }, + beforeAction: function(A) { + var B = A.options; + if (B.waitMsg) { + if (this.waitMsgTarget === true) { + this.el.mask(B.waitMsg, "x-mask-loading") + } else { + if (this.waitMsgTarget) { + this.waitMsgTarget = Ext.get(this.waitMsgTarget); + this.waitMsgTarget.mask(B.waitMsg, "x-mask-loading") + } else { + Ext.MessageBox.wait(B.waitMsg, B.waitTitle || this.waitTitle || "Please Wait...") + } + } + } + }, + afterAction: function(A, C) { + this.activeAction = null; + var B = A.options; + if (B.waitMsg) { + if (this.waitMsgTarget === true) { + this.el.unmask() + } else { + if (this.waitMsgTarget) { + this.waitMsgTarget.unmask() + } else { + Ext.MessageBox.updateProgress(1); + Ext.MessageBox.hide() + } + } + } + if (C) { + if (B.reset) { + this.reset() + } + Ext.callback(B.success, B.scope, [this, A]); + this.fireEvent("actioncomplete", this, A) + } else { + Ext.callback(B.failure, B.scope, [this, A]); + this.fireEvent("actionfailed", this, A) + } + }, + findField: function(B) { + var A = this.items.get(B); + if (!A) { + this.items.each(function(C) { + if (C.isFormField && (C.dataIndex == B || C.id == B || C.getName() == B)) { + A = C; + return false + } + }) + } + return A || null + }, + markInvalid: function(G) { + if (Ext.isArray(G)) { + for (var C = 0, A = G.length; C < A; C++) { + var B = G[C]; + var D = this.findField(B.id); + if (D) { + D.markInvalid(B.msg) + } + } + } else { + var E, F; + for (F in G) { + if (typeof G[F] != "function" && (E = this.findField(F))) { + E.markInvalid(G[F]) + } + } + } + return this + }, + setValues: function(C) { + if (Ext.isArray(C)) { + for (var D = 0, A = C.length; D < A; D++) { + var B = C[D]; + var E = this.findField(B.id); + if (E) { + E.setValue(B.value); + if (this.trackResetOnLoad) { + E.originalValue = E.getValue() + } + } + } + } else { + var F, G; + for (G in C) { + if (typeof C[G] != "function" && (F = this.findField(G))) { + F.setValue(C[G]); + if (this.trackResetOnLoad) { + F.originalValue = F.getValue() + } + } + } + } + return this + }, + getValues: function(B) { + var A = Ext.lib.Ajax.serializeForm(this.el.dom); + if (B === true) { + return A + } + return Ext.urlDecode(A) + }, + clearInvalid: function() { + this.items.each(function(A) { + A.clearInvalid() + }); + return this + }, + reset: function() { + this.items.each(function(A) { + A.reset() + }); + return this + }, + add: function() { + this.items.addAll(Array.prototype.slice.call(arguments, 0)); + return this + }, + remove: function(A) { + this.items.remove(A); + return this + }, + render: function() { + this.items.each(function(A) { + if (A.isFormField && !A.rendered && document.getElementById(A.id)) { + A.applyToMarkup(A.id) + } + }); + return this + }, + applyToFields: function(A) { + this.items.each(function(B) { + Ext.apply(B, A) + }); + return this + }, + applyIfToFields: function(A) { + this.items.each(function(B) { + Ext.applyIf(B, A) + }); + return this + } +}); +Ext.BasicForm = Ext.form.BasicForm; +Ext.FormPanel = Ext.extend(Ext.Panel, { + buttonAlign: "center", + minButtonWidth: 75, + labelAlign: "left", + monitorValid: false, + monitorPoll: 200, + layout: "form", + initComponent: function() { + this.form = this.createForm(); + Ext.FormPanel.superclass.initComponent.call(this); + this.addEvents("clientvalidation"); + this.relayEvents(this.form, ["beforeaction", "actionfailed", "actioncomplete"]) + }, + createForm: function() { + delete this.initialConfig.listeners; + return new Ext.form.BasicForm(null, this.initialConfig) + }, + initFields: function() { + var C = this.form; + var A = this; + var B = function(D) { + if (D.doLayout && D != A) { + Ext.applyIf(D, { + labelAlign: D.ownerCt.labelAlign, + labelWidth: D.ownerCt.labelWidth, + itemCls: D.ownerCt.itemCls + }); + if (D.items) { + D.items.each(B) + } + } else { + if (D.isFormField) { + C.add(D) + } + } + }; + this.items.each(B) + }, + getLayoutTarget: function() { + return this.form.el + }, + getForm: function() { + return this.form + }, + onRender: function(B, A) { + this.initFields(); + Ext.FormPanel.superclass.onRender.call(this, B, A); + var C = { + tag: "form", + method: this.method || "POST", + id: this.formId || Ext.id() + }; + if (this.fileUpload) { + C.enctype = "multipart/form-data" + } + this.form.initEl(this.body.createChild(C)) + }, + beforeDestroy: function() { + Ext.FormPanel.superclass.beforeDestroy.call(this); + Ext.destroy(this.form) + }, + initEvents: function() { + Ext.FormPanel.superclass.initEvents.call(this); + this.items.on("remove", this.onRemove, this); + this.items.on("add", this.onAdd, this); + if (this.monitorValid) { + this.startMonitoring() + } + }, + onAdd: function(A, B) { + if (B.isFormField) { + this.form.add(B) + } + }, + onRemove: function(A) { + if (A.isFormField) { + Ext.destroy(A.container.up(".x-form-item")); + this.form.remove(A) + } + }, + startMonitoring: function() { + if (!this.bound) { + this.bound = true; + Ext.TaskMgr.start({ + run: this.bindHandler, + interval: this.monitorPoll || 200, + scope: this + }) + } + }, + stopMonitoring: function() { + this.bound = false + }, + load: function() { + this.form.load.apply(this.form, arguments) + }, + onDisable: function() { + Ext.FormPanel.superclass.onDisable.call(this); + if (this.form) { + this.form.items.each(function() { + this.disable() + }) + } + }, + onEnable: function() { + Ext.FormPanel.superclass.onEnable.call(this); + if (this.form) { + this.form.items.each(function() { + this.enable() + }) + } + }, + bindHandler: function() { + if (!this.bound) { + return false + } + var D = true; + this.form.items.each(function(E) { + if (!E.isValid(true)) { + D = false; + return false + } + }); + if (this.buttons) { + for (var C = 0, A = this.buttons.length; C < A; C++) { + var B = this.buttons[C]; + if (B.formBind === true && B.disabled === D) { + B.setDisabled(!D) + } + } + } + this.fireEvent("clientvalidation", this, D) + } +}); +Ext.reg("form", Ext.FormPanel); +Ext.form.FormPanel = Ext.FormPanel; +Ext.form.FieldSet = Ext.extend(Ext.Panel, { + baseCls: "x-fieldset", + layout: "form", + onRender: function(B, A) { + if (!this.el) { + this.el = document.createElement("fieldset"); + this.el.id = this.id; + if (this.title || this.header || this.checkboxToggle) { + this.el.appendChild(document.createElement("legend")).className = "x-fieldset-header" + } + } + Ext.form.FieldSet.superclass.onRender.call(this, B, A); + if (this.checkboxToggle) { + var C = typeof this.checkboxToggle == "object" ? this.checkboxToggle : { + tag: "input", + type: "checkbox", + name: this.checkboxName || this.id + "-checkbox" + }; + this.checkbox = this.header.insertFirst(C); + this.checkbox.dom.checked = !this.collapsed; + this.checkbox.on("click", this.onCheckClick, this) + } + }, + onCollapse: function(A, B) { + if (this.checkbox) { + this.checkbox.dom.checked = false + } + this.afterCollapse() + }, + onExpand: function(A, B) { + if (this.checkbox) { + this.checkbox.dom.checked = true + } + this.afterExpand() + }, + onCheckClick: function() { + this[this.checkbox.dom.checked ? "expand" : "collapse"]() + } +}); +Ext.reg("fieldset", Ext.form.FieldSet); +Ext.form.HtmlEditor = Ext.extend(Ext.form.Field, { + enableFormat: true, + enableFontSize: true, + enableColors: true, + enableAlignments: true, + enableLists: true, + enableSourceEdit: true, + enableLinks: true, + enableFont: true, + createLinkText: "Please enter the URL for the link:", + defaultLinkValue: "http://", + fontFamilies: ["Arial", "Courier New", "Tahoma", "Times New Roman", "Verdana"], + defaultFont: "tahoma", + validationEvent: false, + deferHeight: true, + initialized: false, + activated: false, + sourceEditMode: false, + onFocus: Ext.emptyFn, + iframePad: 3, + hideMode: "offsets", + defaultAutoCreate: { + tag: "textarea", + style: "width:500px;height:300px;", + autocomplete: "off" + }, + initComponent: function() { + this.addEvents("initialize", "activate", "beforesync", "beforepush", "sync", "push", "editmodechange") + }, + createFontOptions: function() { + var D = [], + B = this.fontFamilies, + C, F; + for (var E = 0, A = B.length; E < A; E++) { + C = B[E]; + F = C.toLowerCase(); + D.push("") + } + return D.join("") + }, + createToolbar: function(C) { + function B(F, D, E) { + return { + itemId: F, + cls: "x-btn-icon x-edit-" + F, + enableToggle: D !== false, + scope: C, + handler: E || C.relayBtnCmd, + clickEvent: "mousedown", + tooltip: C.buttonTips[F] || undefined, + tabIndex: -1 + } + } + var A = new Ext.Toolbar({ + renderTo: this.wrap.dom.firstChild + }); + A.el.on("click", function(D) { + D.preventDefault() + }); + if (this.enableFont && !Ext.isSafari) { + this.fontSelect = A.el.createChild({ + tag: "select", + cls: "x-font-select", + html: this.createFontOptions() + }); + this.fontSelect.on("change", function() { + var D = this.fontSelect.dom.value; + this.relayCmd("fontname", D); + this.deferFocus() + }, this); + A.add(this.fontSelect.dom, "-") + } + if (this.enableFormat) { + A.add(B("bold"), B("italic"), B("underline")) + } + if (this.enableFontSize) { + A.add("-", B("increasefontsize", false, this.adjustFont), B("decreasefontsize", false, this.adjustFont)) + } + if (this.enableColors) { + A.add("-", { + itemId: "forecolor", + cls: "x-btn-icon x-edit-forecolor", + clickEvent: "mousedown", + tooltip: C.buttonTips["forecolor"] || undefined, + tabIndex: -1, + menu: new Ext.menu.ColorMenu({ + allowReselect: true, + focus: Ext.emptyFn, + value: "000000", + plain: true, + selectHandler: function(E, D) { + this.execCmd("forecolor", Ext.isSafari || Ext.isIE ? "#" + D : D); + this.deferFocus() + }, + scope: this, + clickEvent: "mousedown" + }) + }, { + itemId: "backcolor", + cls: "x-btn-icon x-edit-backcolor", + clickEvent: "mousedown", + tooltip: C.buttonTips["backcolor"] || undefined, + tabIndex: -1, + menu: new Ext.menu.ColorMenu({ + focus: Ext.emptyFn, + value: "FFFFFF", + plain: true, + allowReselect: true, + selectHandler: function(E, D) { + if (Ext.isGecko) { + this.execCmd("useCSS", false); + this.execCmd("hilitecolor", D); + this.execCmd("useCSS", true); + this.deferFocus() + } else { + this.execCmd(Ext.isOpera ? "hilitecolor" : "backcolor", Ext.isSafari || Ext.isIE ? "#" + D : D); + this.deferFocus() + } + }, + scope: this, + clickEvent: "mousedown" + }) + }) + } + if (this.enableAlignments) { + A.add("-", B("justifyleft"), B("justifycenter"), B("justifyright")) + } + if (!Ext.isSafari) { + if (this.enableLinks) { + A.add("-", B("createlink", false, this.createLink)) + } + if (this.enableLists) { + A.add("-", B("insertorderedlist"), B("insertunorderedlist")) + } + if (this.enableSourceEdit) { + A.add("-", B("sourceedit", true, function(D) { + this.toggleSourceEdit(D.pressed) + })) + } + } + this.tb = A + }, + getDocMarkup: function() { + return "" + }, + getEditorBody: function() { + return this.doc.body || this.doc.documentElement + }, + onRender: function(C, A) { + Ext.form.HtmlEditor.superclass.onRender.call(this, C, A); + this.el.dom.style.border = "0 none"; + this.el.dom.setAttribute("tabIndex", -1); + this.el.addClass("x-hidden"); + if (Ext.isIE) { + this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;") + } + this.wrap = this.el.wrap({ + cls: "x-html-editor-wrap", + cn: { + cls: "x-html-editor-tb" + } + }); + this.createToolbar(this); + this.tb.items.each(function(E) { + if (E.itemId != "sourceedit") { + E.disable() + } + }); + var D = document.createElement("iframe"); + D.name = Ext.id(); + D.frameBorder = "no"; + D.src = (Ext.SSL_SECURE_URL || "javascript:false"); + this.wrap.dom.appendChild(D); + this.iframe = D; + if (Ext.isIE) { + D.contentWindow.document.designMode = "on"; + this.doc = D.contentWindow.document; + this.win = D.contentWindow + } else { + this.doc = (D.contentDocument || window.frames[D.name].document); + this.win = window.frames[D.name]; + this.doc.designMode = "on" + } + this.doc.open(); + this.doc.write(this.getDocMarkup()); + this.doc.close(); + var B = { + run: function() { + if (this.doc.body || this.doc.readyState == "complete") { + Ext.TaskMgr.stop(B); + this.doc.designMode = "on"; + this.initEditor.defer(10, this) + } + }, + interval: 10, + duration: 10000, + scope: this + }; + Ext.TaskMgr.start(B); + if (!this.width) { + this.setSize(this.el.getSize()) + } + }, + onResize: function(B, C) { + Ext.form.HtmlEditor.superclass.onResize.apply(this, arguments); + if (this.el && this.iframe) { + if (typeof B == "number") { + var D = B - this.wrap.getFrameWidth("lr"); + this.el.setWidth(this.adjustWidth("textarea", D)); + this.iframe.style.width = D + "px" + } + if (typeof C == "number") { + var A = C - this.wrap.getFrameWidth("tb") - this.tb.el.getHeight(); + this.el.setHeight(this.adjustWidth("textarea", A)); + this.iframe.style.height = A + "px"; + if (this.doc) { + this.getEditorBody().style.height = (A - (this.iframePad * 2)) + "px" + } + } + } + }, + toggleSourceEdit: function(A) { + if (A === undefined) { + A = !this.sourceEditMode + } + this.sourceEditMode = A === true; + var C = this.tb.items.get("sourceedit"); + if (C.pressed !== this.sourceEditMode) { + C.toggle(this.sourceEditMode); + return + } + if (this.sourceEditMode) { + this.tb.items.each(function(D) { + if (D.itemId != "sourceedit") { + D.disable() + } + }); + this.syncValue(); + this.iframe.className = "x-hidden"; + this.el.removeClass("x-hidden"); + this.el.dom.removeAttribute("tabIndex"); + this.el.focus() + } else { + if (this.initialized) { + this.tb.items.each(function(D) { + D.enable() + }) + } + this.pushValue(); + this.iframe.className = ""; + this.el.addClass("x-hidden"); + this.el.dom.setAttribute("tabIndex", -1); + this.deferFocus() + } + var B = this.lastSize; + if (B) { + delete this.lastSize; + this.setSize(B) + } + this.fireEvent("editmodechange", this, this.sourceEditMode) + }, + createLink: function() { + var A = prompt(this.createLinkText, this.defaultLinkValue); + if (A && A != "http://") { + this.relayCmd("createlink", A) + } + }, + adjustSize: Ext.BoxComponent.prototype.adjustSize, + getResizeEl: function() { + return this.wrap + }, + getPositionEl: function() { + return this.wrap + }, + initEvents: function() { + this.originalValue = this.getValue() + }, + markInvalid: Ext.emptyFn, + clearInvalid: Ext.emptyFn, + setValue: function(A) { + Ext.form.HtmlEditor.superclass.setValue.call(this, A); + this.pushValue() + }, + cleanHtml: function(A) { + A = String(A); + if (A.length > 5) { + if (Ext.isSafari) { + A = A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, "") + } + } + if (A == " ") { + A = "" + } + return A + }, + syncValue: function() { + if (this.initialized) { + var D = this.getEditorBody(); + var C = D.innerHTML; + if (Ext.isSafari) { + var B = D.getAttribute("style"); + var A = B.match(/text-align:(.*?);/i); + if (A && A[1]) { + C = "
      " + C + "
      " + } + } + C = this.cleanHtml(C); + if (this.fireEvent("beforesync", this, C) !== false) { + this.el.dom.value = C; + this.fireEvent("sync", this, C) + } + } + }, + pushValue: function() { + if (this.initialized) { + var A = this.el.dom.value; + if (!this.activated && A.length < 1) { + A = " " + } + if (this.fireEvent("beforepush", this, A) !== false) { + this.getEditorBody().innerHTML = A; + this.fireEvent("push", this, A) + } + } + }, + deferFocus: function() { + this.focus.defer(10, this) + }, + focus: function() { + if (this.win && !this.sourceEditMode) { + this.win.focus() + } else { + this.el.focus() + } + }, + initEditor: function() { + var B = this.getEditorBody(); + var A = this.el.getStyles("font-size", "font-family", "background-image", "background-repeat"); + A["background-attachment"] = "fixed"; + B.bgProperties = "fixed"; + Ext.DomHelper.applyStyles(B, A); + Ext.EventManager.on(this.doc, { + "mousedown": this.onEditorEvent, + "dblclick": this.onEditorEvent, + "click": this.onEditorEvent, + "keyup": this.onEditorEvent, + buffer: 100, + scope: this + }); + if (Ext.isGecko) { + Ext.EventManager.on(this.doc, "keypress", this.applyCommand, this) + } + if (Ext.isIE || Ext.isSafari || Ext.isOpera) { + Ext.EventManager.on(this.doc, "keydown", this.fixKeys, this) + } + this.initialized = true; + this.fireEvent("initialize", this); + this.pushValue() + }, + onDestroy: function() { + if (this.rendered) { + this.tb.items.each(function(A) { + if (A.menu) { + A.menu.removeAll(); + if (A.menu.el) { + A.menu.el.destroy() + } + } + A.destroy() + }); + this.wrap.dom.innerHTML = ""; + this.wrap.remove() + } + }, + onFirstFocus: function() { + this.activated = true; + this.tb.items.each(function(D) { + D.enable() + }); + if (Ext.isGecko) { + this.win.focus(); + var A = this.win.getSelection(); + if (!A.focusNode || A.focusNode.nodeType != 3) { + var B = A.getRangeAt(0); + B.selectNodeContents(this.getEditorBody()); + B.collapse(true); + this.deferFocus() + } + try { + this.execCmd("useCSS", true); + this.execCmd("styleWithCSS", false) + } catch (C) {} + } + this.fireEvent("activate", this) + }, + adjustFont: function(B) { + var C = B.itemId == "increasefontsize" ? 1 : -1; + var A = parseInt(this.doc.queryCommandValue("FontSize") || 2, 10); + if (Ext.isSafari3 || Ext.isAir) { + if (A <= 10) { + A = 1 + C + } else { + if (A <= 13) { + A = 2 + C + } else { + if (A <= 16) { + A = 3 + C + } else { + if (A <= 18) { + A = 4 + C + } else { + if (A <= 24) { + A = 5 + C + } else { + A = 6 + C + } + } + } + } + } + A = A.constrain(1, 6) + } else { + if (Ext.isSafari) { + C *= 2 + } + A = Math.max(1, A + C) + (Ext.isSafari ? "px" : 0) + } + this.execCmd("FontSize", A) + }, + onEditorEvent: function(A) { + this.updateToolbar() + }, + updateToolbar: function() { + if (!this.activated) { + this.onFirstFocus(); + return + } + var B = this.tb.items.map, + C = this.doc; + if (this.enableFont && !Ext.isSafari) { + var A = (this.doc.queryCommandValue("FontName") || this.defaultFont).toLowerCase(); + if (A != this.fontSelect.dom.value) { + this.fontSelect.dom.value = A + } + } + if (this.enableFormat) { + B.bold.toggle(C.queryCommandState("bold")); + B.italic.toggle(C.queryCommandState("italic")); + B.underline.toggle(C.queryCommandState("underline")) + } + if (this.enableAlignments) { + B.justifyleft.toggle(C.queryCommandState("justifyleft")); + B.justifycenter.toggle(C.queryCommandState("justifycenter")); + B.justifyright.toggle(C.queryCommandState("justifyright")) + } + if (!Ext.isSafari && this.enableLists) { + B.insertorderedlist.toggle(C.queryCommandState("insertorderedlist")); + B.insertunorderedlist.toggle(C.queryCommandState("insertunorderedlist")) + } + Ext.menu.MenuMgr.hideAll(); + this.syncValue() + }, + relayBtnCmd: function(A) { + this.relayCmd(A.itemId) + }, + relayCmd: function(B, A) { + this.win.focus(); + this.execCmd(B, A); + this.updateToolbar(); + this.deferFocus() + }, + execCmd: function(B, A) { + this.doc.execCommand(B, false, A === undefined ? null : A); + this.syncValue() + }, + applyCommand: function(B) { + if (B.ctrlKey) { + var C = B.getCharCode(), + A; + if (C > 0) { + C = String.fromCharCode(C); + switch (C) { + case "b": + A = "bold"; + break; + case "i": + A = "italic"; + break; + case "u": + A = "underline"; + break + } + if (A) { + this.win.focus(); + this.execCmd(A); + this.deferFocus(); + B.preventDefault() + } + } + } + }, + insertAtCursor: function(B) { + if (!this.activated) { + return + } + if (Ext.isIE) { + this.win.focus(); + var A = this.doc.selection.createRange(); + if (A) { + A.collapse(true); + A.pasteHTML(B); + this.syncValue(); + this.deferFocus() + } + } else { + if (Ext.isGecko || Ext.isOpera) { + this.win.focus(); + this.execCmd("InsertHTML", B); + this.deferFocus() + } else { + if (Ext.isSafari) { + this.execCmd("InsertText", B); + this.deferFocus() + } + } + } + }, + fixKeys: function() { + if (Ext.isIE) { + return function(D) { + var A = D.getKey(), + B; + if (A == D.TAB) { + D.stopEvent(); + B = this.doc.selection.createRange(); + if (B) { + B.collapse(true); + B.pasteHTML("    "); + this.deferFocus() + } + } else { + if (A == D.ENTER) { + B = this.doc.selection.createRange(); + if (B) { + var C = B.parentElement(); + if (!C || C.tagName.toLowerCase() != "li") { + D.stopEvent(); + B.pasteHTML("
      "); + B.collapse(false); + B.select() + } + } + } + } + } + } else { + if (Ext.isOpera) { + return function(B) { + var A = B.getKey(); + if (A == B.TAB) { + B.stopEvent(); + this.win.focus(); + this.execCmd("InsertHTML", "    "); + this.deferFocus() + } + } + } else { + if (Ext.isSafari) { + return function(B) { + var A = B.getKey(); + if (A == B.TAB) { + B.stopEvent(); + this.execCmd("InsertText", "\t"); + this.deferFocus() + } + } + } + } + } + }(), + getToolbar: function() { + return this.tb + }, + buttonTips: { + bold: { + title: "Bold (Ctrl+B)", + text: "Make the selected text bold.", + cls: "x-html-editor-tip" + }, + italic: { + title: "Italic (Ctrl+I)", + text: "Make the selected text italic.", + cls: "x-html-editor-tip" + }, + underline: { + title: "Underline (Ctrl+U)", + text: "Underline the selected text.", + cls: "x-html-editor-tip" + }, + increasefontsize: { + title: "Grow Text", + text: "Increase the font size.", + cls: "x-html-editor-tip" + }, + decreasefontsize: { + title: "Shrink Text", + text: "Decrease the font size.", + cls: "x-html-editor-tip" + }, + backcolor: { + title: "Text Highlight Color", + text: "Change the background color of the selected text.", + cls: "x-html-editor-tip" + }, + forecolor: { + title: "Font Color", + text: "Change the color of the selected text.", + cls: "x-html-editor-tip" + }, + justifyleft: { + title: "Align Text Left", + text: "Align text to the left.", + cls: "x-html-editor-tip" + }, + justifycenter: { + title: "Center Text", + text: "Center text in the editor.", + cls: "x-html-editor-tip" + }, + justifyright: { + title: "Align Text Right", + text: "Align text to the right.", + cls: "x-html-editor-tip" + }, + insertunorderedlist: { + title: "Bullet List", + text: "Start a bulleted list.", + cls: "x-html-editor-tip" + }, + insertorderedlist: { + title: "Numbered List", + text: "Start a numbered list.", + cls: "x-html-editor-tip" + }, + createlink: { + title: "Hyperlink", + text: "Make the selected text a hyperlink.", + cls: "x-html-editor-tip" + }, + sourceedit: { + title: "Source Edit", + text: "Switch to source editing mode.", + cls: "x-html-editor-tip" + } + } +}); +Ext.reg("htmleditor", Ext.form.HtmlEditor); +Ext.form.TimeField = Ext.extend(Ext.form.ComboBox, { + minValue: null, + maxValue: null, + minText: "The time in this field must be equal to or after {0}", + maxText: "The time in this field must be equal to or before {0}", + invalidText: "{0} is not a valid time", + format: "g:i A", + altFormats: "g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H", + increment: 15, + mode: "local", + triggerAction: "all", + typeAhead: false, + initComponent: function() { + Ext.form.TimeField.superclass.initComponent.call(this); + if (typeof this.minValue == "string") { + this.minValue = this.parseDate(this.minValue) + } + if (typeof this.maxValue == "string") { + this.maxValue = this.parseDate(this.maxValue) + } + if (!this.store) { + var B = this.parseDate(this.minValue); + if (!B) { + B = new Date().clearTime() + } + var A = this.parseDate(this.maxValue); + if (!A) { + A = new Date().clearTime().add("mi", (24 * 60) - 1) + } + var C = []; + while (B <= A) { + C.push([B.dateFormat(this.format)]); + B = B.add("mi", this.increment) + } + this.store = new Ext.data.SimpleStore({ + fields: ["text"], + data: C + }); + this.displayField = "text" + } + }, + getValue: function() { + var A = Ext.form.TimeField.superclass.getValue.call(this); + return this.formatDate(this.parseDate(A)) || "" + }, + setValue: function(A) { + Ext.form.TimeField.superclass.setValue.call(this, this.formatDate(this.parseDate(A))) + }, + validateValue: Ext.form.DateField.prototype.validateValue, + parseDate: Ext.form.DateField.prototype.parseDate, + formatDate: Ext.form.DateField.prototype.formatDate, + beforeBlur: function() { + var A = this.parseDate(this.getRawValue()); + if (A) { + this.setValue(A.dateFormat(this.format)) + } + } +}); +Ext.reg("timefield", Ext.form.TimeField); +Ext.form.Label = Ext.extend(Ext.BoxComponent, { + onRender: function(B, A) { + if (!this.el) { + this.el = document.createElement("label"); + this.el.innerHTML = this.text ? Ext.util.Format.htmlEncode(this.text) : (this.html || ""); + if (this.forId) { + this.el.setAttribute("htmlFor", this.forId) + } + } + Ext.form.Label.superclass.onRender.call(this, B, A) + } +}); +Ext.reg("label", Ext.form.Label); +Ext.form.Action = function(B, A) { + this.form = B; + this.options = A || {} +}; +Ext.form.Action.CLIENT_INVALID = "client"; +Ext.form.Action.SERVER_INVALID = "server"; +Ext.form.Action.CONNECT_FAILURE = "connect"; +Ext.form.Action.LOAD_FAILURE = "load"; +Ext.form.Action.prototype = { + type: "default", + run: function(A) {}, + success: function(A) {}, + handleResponse: function(A) {}, + failure: function(A) { + this.response = A; + this.failureType = Ext.form.Action.CONNECT_FAILURE; + this.form.afterAction(this, false) + }, + processResponse: function(A) { + this.response = A; + if (!A.responseText) { + return true + } + this.result = this.handleResponse(A); + return this.result + }, + getUrl: function(C) { + var A = this.options.url || this.form.url || this.form.el.dom.action; + if (C) { + var B = this.getParams(); + if (B) { + A += (A.indexOf("?") != -1 ? "&" : "?") + B + } + } + return A + }, + getMethod: function() { + return (this.options.method || this.form.method || this.form.el.dom.method || "POST").toUpperCase() + }, + getParams: function() { + var A = this.form.baseParams; + var B = this.options.params; + if (B) { + if (typeof B == "object") { + B = Ext.urlEncode(Ext.applyIf(B, A)) + } else { + if (typeof B == "string" && A) { + B += "&" + Ext.urlEncode(A) + } + } + } else { + if (A) { + B = Ext.urlEncode(A) + } + } + return B + }, + createCallback: function(A) { + var A = A || {}; + return { + success: this.success, + failure: this.failure, + scope: this, + timeout: (A.timeout * 1000) || (this.form.timeout * 1000), + upload: this.form.fileUpload ? this.success : undefined + } + } +}; +Ext.form.Action.Submit = function(B, A) { + Ext.form.Action.Submit.superclass.constructor.call(this, B, A) +}; +Ext.extend(Ext.form.Action.Submit, Ext.form.Action, { + type: "submit", + run: function() { + var B = this.options; + var C = this.getMethod(); + var A = C == "POST"; + if (B.clientValidation === false || this.form.isValid()) { + Ext.Ajax.request(Ext.apply(this.createCallback(B), { + form: this.form.el.dom, + url: this.getUrl(!A), + method: C, + params: A ? this.getParams() : null, + isUpload: this.form.fileUpload + })) + } else { + if (B.clientValidation !== false) { + this.failureType = Ext.form.Action.CLIENT_INVALID; + this.form.afterAction(this, false) + } + } + }, + success: function(B) { + var A = this.processResponse(B); + if (A === true || A.success) { + this.form.afterAction(this, true); + return + } + if (A.errors) { + this.form.markInvalid(A.errors); + this.failureType = Ext.form.Action.SERVER_INVALID + } + this.form.afterAction(this, false) + }, + handleResponse: function(C) { + if (this.form.errorReader) { + var B = this.form.errorReader.read(C); + var F = []; + if (B.records) { + for (var D = 0, A = B.records.length; D < A; D++) { + var E = B.records[D]; + F[D] = E.data + } + } + if (F.length < 1) { + F = null + } + return { + success: B.success, + errors: F + } + } + return Ext.decode(C.responseText) + } +}); +Ext.form.Action.Load = function(B, A) { + Ext.form.Action.Load.superclass.constructor.call(this, B, A); + this.reader = this.form.reader +}; +Ext.extend(Ext.form.Action.Load, Ext.form.Action, { + type: "load", + run: function() { + Ext.Ajax.request(Ext.apply(this.createCallback(this.options), { + method: this.getMethod(), + url: this.getUrl(false), + params: this.getParams() + })) + }, + success: function(B) { + var A = this.processResponse(B); + if (A === true || !A.success || !A.data) { + this.failureType = Ext.form.Action.LOAD_FAILURE; + this.form.afterAction(this, false); + return + } + this.form.clearInvalid(); + this.form.setValues(A.data); + this.form.afterAction(this, true) + }, + handleResponse: function(B) { + if (this.form.reader) { + var A = this.form.reader.read(B); + var C = A.records && A.records[0] ? A.records[0].data : null; + return { + success: A.success, + data: C + } + } + return Ext.decode(B.responseText) + } +}); +Ext.form.Action.ACTION_TYPES = { + "load": Ext.form.Action.Load, + "submit": Ext.form.Action.Submit +}; +Ext.form.VTypes = function() { + var C = /^[a-zA-Z_]+$/; + var D = /^[a-zA-Z0-9_]+$/; + var B = /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/; + var A = /(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i; + return { + "email": function(E) { + return B.test(E) + }, + "emailText": "This field should be an e-mail address in the format \"user@domain.com\"", + "emailMask": /[a-z0-9_\.\-@]/i, + "url": function(E) { + return A.test(E) + }, + "urlText": "This field should be a URL in the format \"http://www.domain.com\"", + "alpha": function(E) { + return C.test(E) + }, + "alphaText": "This field should only contain letters and _", + "alphaMask": /[a-z_]/i, + "alphanum": function(E) { + return D.test(E) + }, + "alphanumText": "This field should only contain letters, numbers and _", + "alphanumMask": /[a-z0-9_]/i + } +}(); +Ext.grid.GridPanel = Ext.extend(Ext.Panel, { + ddText: "{0} selected row{1}", + minColumnWidth: 25, + trackMouseOver: true, + enableDragDrop: false, + enableColumnMove: true, + enableColumnHide: true, + enableHdMenu: true, + stripeRows: false, + autoExpandColumn: false, + autoExpandMin: 50, + autoExpandMax: 1000, + view: null, + loadMask: false, + rendered: false, + viewReady: false, + stateEvents: ["columnmove", "columnresize", "sortchange"], + initComponent: function() { + Ext.grid.GridPanel.superclass.initComponent.call(this); + this.autoScroll = false; + this.autoWidth = false; + if (Ext.isArray(this.columns)) { + this.colModel = new Ext.grid.ColumnModel(this.columns); + delete this.columns + } + if (this.ds) { + this.store = this.ds; + delete this.ds + } + if (this.cm) { + this.colModel = this.cm; + delete this.cm + } + if (this.sm) { + this.selModel = this.sm; + delete this.sm + } + this.store = Ext.StoreMgr.lookup(this.store); + this.addEvents("click", "dblclick", "contextmenu", "mousedown", "mouseup", "mouseover", "mouseout", "keypress", "keydown", "cellmousedown", "rowmousedown", "headermousedown", "cellclick", "celldblclick", "rowclick", "rowdblclick", "headerclick", "headerdblclick", "rowcontextmenu", "cellcontextmenu", "headercontextmenu", "bodyscroll", "columnresize", "columnmove", "sortchange") + }, + onRender: function(C, A) { + Ext.grid.GridPanel.superclass.onRender.apply(this, arguments); + var D = this.body; + this.el.addClass("x-grid-panel"); + var B = this.getView(); + B.init(this); + D.on("mousedown", this.onMouseDown, this); + D.on("click", this.onClick, this); + D.on("dblclick", this.onDblClick, this); + D.on("contextmenu", this.onContextMenu, this); + D.on("keydown", this.onKeyDown, this); + this.relayEvents(D, ["mousedown", "mouseup", "mouseover", "mouseout", "keypress"]); + this.getSelectionModel().init(this); + this.view.render() + }, + initEvents: function() { + Ext.grid.GridPanel.superclass.initEvents.call(this); + if (this.loadMask) { + this.loadMask = new Ext.LoadMask(this.bwrap, Ext.apply({ + store: this.store + }, this.loadMask)) + } + }, + initStateEvents: function() { + Ext.grid.GridPanel.superclass.initStateEvents.call(this); + this.colModel.on("hiddenchange", this.saveState, this, { + delay: 100 + }) + }, + applyState: function(F) { + var B = this.colModel; + var E = F.columns; + if (E) { + for (var C = 0, A = E.length; C < A; C++) { + var D = E[C]; + var H = B.getColumnById(D.id); + if (H) { + H.hidden = D.hidden; + H.width = D.width; + var G = B.getIndexById(D.id); + if (G != C) { + B.moveColumn(G, C) + } + } + } + } + if (F.sort) { + this.store[this.store.remoteSort ? "setDefaultSort" : "sort"](F.sort.field, F.sort.direction) + } + }, + getState: function() { + var C = { + columns: [] + }; + for (var B = 0, D; D = this.colModel.config[B]; B++) { + C.columns[B] = { + id: D.id, + width: D.width + }; + if (D.hidden) { + C.columns[B].hidden = true + } + } + var A = this.store.getSortState(); + if (A) { + C.sort = A + } + return C + }, + afterRender: function() { + Ext.grid.GridPanel.superclass.afterRender.call(this); + this.view.layout(); + this.viewReady = true + }, + reconfigure: function(A, B) { + if (this.loadMask) { + this.loadMask.destroy(); + this.loadMask = new Ext.LoadMask(this.bwrap, Ext.apply({ + store: A + }, this.initialConfig.loadMask)) + } + this.view.bind(A, B); + this.store = A; + this.colModel = B; + if (this.rendered) { + this.view.refresh(true) + } + }, + onKeyDown: function(A) { + this.fireEvent("keydown", A) + }, + onDestroy: function() { + if (this.rendered) { + if (this.loadMask) { + this.loadMask.destroy() + } + var A = this.body; + A.removeAllListeners(); + this.view.destroy(); + A.update("") + } + this.colModel.purgeListeners(); + Ext.grid.GridPanel.superclass.onDestroy.call(this) + }, + processEvent: function(C, E) { + this.fireEvent(C, E); + var D = E.getTarget(); + var B = this.view; + var G = B.findHeaderIndex(D); + if (G !== false) { + this.fireEvent("header" + C, this, G, E) + } else { + var F = B.findRowIndex(D); + var A = B.findCellIndex(D); + if (F !== false) { + this.fireEvent("row" + C, this, F, E); + if (A !== false) { + this.fireEvent("cell" + C, this, F, A, E) + } + } + } + }, + onClick: function(A) { + this.processEvent("click", A) + }, + onMouseDown: function(A) { + this.processEvent("mousedown", A) + }, + onContextMenu: function(B, A) { + this.processEvent("contextmenu", B) + }, + onDblClick: function(A) { + this.processEvent("dblclick", A) + }, + walkCells: function(J, C, B, E, I) { + var H = this.colModel, + F = H.getColumnCount(); + var A = this.store, + G = A.getCount(), + D = true; + if (B < 0) { + if (C < 0) { + J--; + D = false + } + while (J >= 0) { + if (!D) { + C = F - 1 + } + D = false; + while (C >= 0) { + if (E.call(I || this, J, C, H) === true) { + return [J, C] + } + C-- + } + J-- + } + } else { + if (C >= F) { + J++; + D = false + } + while (J < G) { + if (!D) { + C = 0 + } + D = false; + while (C < F) { + if (E.call(I || this, J, C, H) === true) { + return [J, C] + } + C++ + } + J++ + } + } + return null + }, + getSelections: function() { + return this.selModel.getSelections() + }, + onResize: function() { + Ext.grid.GridPanel.superclass.onResize.apply(this, arguments); + if (this.viewReady) { + this.view.layout() + } + }, + getGridEl: function() { + return this.body + }, + stopEditing: function() {}, + getSelectionModel: function() { + if (!this.selModel) { + this.selModel = new Ext.grid.RowSelectionModel(this.disableSelection ? { + selectRow: Ext.emptyFn + } : null) + } + return this.selModel + }, + getStore: function() { + return this.store + }, + getColumnModel: function() { + return this.colModel + }, + getView: function() { + if (!this.view) { + this.view = new Ext.grid.GridView(this.viewConfig) + } + return this.view + }, + getDragDropText: function() { + var A = this.selModel.getCount(); + return String.format(this.ddText, A, A == 1 ? "" : "s") + } +}); +Ext.reg("grid", Ext.grid.GridPanel); +Ext.grid.GridView = function(A) { + Ext.apply(this, A); + this.addEvents("beforerowremoved", "beforerowsinserted", "beforerefresh", "rowremoved", "rowsinserted", "rowupdated", "refresh"); + Ext.grid.GridView.superclass.constructor.call(this) +}; +Ext.extend(Ext.grid.GridView, Ext.util.Observable, { + scrollOffset: 19, + autoFill: false, + forceFit: false, + sortClasses: ["sort-asc", "sort-desc"], + sortAscText: "Sort Ascending", + sortDescText: "Sort Descending", + columnsText: "Columns", + borderWidth: 2, + initTemplates: function() { + var C = this.templates || {}; + if (!C.master) { + C.master = new Ext.Template("
      ", "
      ", "
      {header}
      ", "
      {body}
      ", "
      ", "
       
      ", "
       
      ", "
      ") + } + if (!C.header) { + C.header = new Ext.Template("", "{cells}", "
      ") + } + if (!C.hcell) { + C.hcell = new Ext.Template("
      ", this.grid.enableHdMenu ? "" : "", "{value}", "
      ") + } + if (!C.body) { + C.body = new Ext.Template("{rows}") + } + if (!C.row) { + C.row = new Ext.Template("
      ", "{cells}", (this.enableRowBody ? "" : ""), "
      {body}
      ") + } + if (!C.cell) { + C.cell = new Ext.Template("", "
      {value}
      ", "") + } + for (var A in C) { + var B = C[A]; + if (B && typeof B.compile == "function" && !B.compiled) { + B.disableFormats = true; + B.compile() + } + } + this.templates = C; + this.tdClass = "x-grid3-cell"; + this.cellSelector = "td.x-grid3-cell"; + this.hdCls = "x-grid3-hd"; + this.rowSelector = "div.x-grid3-row"; + this.colRe = new RegExp("x-grid3-td-([^\\s]+)", "") + }, + fly: function(A) { + if (!this._flyweight) { + this._flyweight = new Ext.Element.Flyweight(document.body) + } + this._flyweight.dom = A; + return this._flyweight + }, + getEditorParent: function(A) { + return this.scroller.dom + }, + initElements: function() { + var C = Ext.Element; + var B = this.grid.getGridEl().dom.firstChild; + var A = B.childNodes; + this.el = new C(B); + this.mainWrap = new C(A[0]); + this.mainHd = new C(this.mainWrap.dom.firstChild); + if (this.grid.hideHeaders) { + this.mainHd.setDisplayed(false) + } + this.innerHd = this.mainHd.dom.firstChild; + this.scroller = new C(this.mainWrap.dom.childNodes[1]); + if (this.forceFit) { + this.scroller.setStyle("overflow-x", "hidden") + } + this.mainBody = new C(this.scroller.dom.firstChild); + this.focusEl = new C(this.scroller.dom.childNodes[1]); + this.focusEl.swallowEvent("click", true); + this.resizeMarker = new C(A[1]); + this.resizeProxy = new C(A[2]) + }, + getRows: function() { + return this.hasRows() ? this.mainBody.dom.childNodes : [] + }, + findCell: function(A) { + if (!A) { + return false + } + return this.fly(A).findParent(this.cellSelector, 3) + }, + findCellIndex: function(C, B) { + var A = this.findCell(C); + if (A && (!B || this.fly(A).hasClass(B))) { + return this.getCellIndex(A) + } + return false + }, + getCellIndex: function(B) { + if (B) { + var A = B.className.match(this.colRe); + if (A && A[1]) { + return this.cm.getIndexById(A[1]) + } + } + return false + }, + findHeaderCell: function(B) { + var A = this.findCell(B); + return A && this.fly(A).hasClass(this.hdCls) ? A : null + }, + findHeaderIndex: function(A) { + return this.findCellIndex(A, this.hdCls) + }, + findRow: function(A) { + if (!A) { + return false + } + return this.fly(A).findParent(this.rowSelector, 10) + }, + findRowIndex: function(A) { + var B = this.findRow(A); + return B ? B.rowIndex : false + }, + getRow: function(A) { + return this.getRows()[A] + }, + getCell: function(B, A) { + return this.getRow(B).getElementsByTagName("td")[A] + }, + getHeaderCell: function(A) { + return this.mainHd.dom.getElementsByTagName("td")[A] + }, + addRowClass: function(C, A) { + var B = this.getRow(C); + if (B) { + this.fly(B).addClass(A) + } + }, + removeRowClass: function(C, A) { + var B = this.getRow(C); + if (B) { + this.fly(B).removeClass(A) + } + }, + removeRow: function(A) { + Ext.removeNode(this.getRow(A)) + }, + removeRows: function(C, A) { + var B = this.mainBody.dom; + for (var D = C; D <= A; D++) { + Ext.removeNode(B.childNodes[C]) + } + }, + getScrollState: function() { + var A = this.scroller.dom; + return { + left: A.scrollLeft, + top: A.scrollTop + } + }, + restoreScroll: function(A) { + var B = this.scroller.dom; + B.scrollLeft = A.left; + B.scrollTop = A.top + }, + scrollToTop: function() { + this.scroller.dom.scrollTop = 0; + this.scroller.dom.scrollLeft = 0 + }, + syncScroll: function() { + this.syncHeaderScroll(); + var A = this.scroller.dom; + this.grid.fireEvent("bodyscroll", A.scrollLeft, A.scrollTop) + }, + syncHeaderScroll: function() { + var A = this.scroller.dom; + this.innerHd.scrollLeft = A.scrollLeft; + this.innerHd.scrollLeft = A.scrollLeft + }, + updateSortIcon: function(B, A) { + var D = this.sortClasses; + var C = this.mainHd.select("td").removeClass(D); + C.item(B).addClass(D[A == "DESC" ? 1 : 0]) + }, + updateAllColumnWidths: function() { + var D = this.getTotalWidth(); + var H = this.cm.getColumnCount(); + var F = []; + for (var B = 0; B < H; B++) { + F[B] = this.getColumnWidth(B) + } + this.innerHd.firstChild.firstChild.style.width = D; + for (var B = 0; B < H; B++) { + var C = this.getHeaderCell(B); + C.style.width = F[B] + } + var G = this.getRows(); + for (var B = 0, E = G.length; B < E; B++) { + G[B].style.width = D; + G[B].firstChild.style.width = D; + var I = G[B].firstChild.rows[0]; + for (var A = 0; A < H; A++) { + I.childNodes[A].style.width = F[A] + } + } + this.onAllColumnWidthsUpdated(F, D) + }, + updateColumnWidth: function(D, G) { + var B = this.getColumnWidth(D); + var C = this.getTotalWidth(); + this.innerHd.firstChild.firstChild.style.width = C; + var H = this.getHeaderCell(D); + H.style.width = B; + var F = this.getRows(); + for (var E = 0, A = F.length; E < A; E++) { + F[E].style.width = C; + F[E].firstChild.style.width = C; + F[E].firstChild.rows[0].childNodes[D].style.width = B + } + this.onColumnWidthUpdated(D, B, C) + }, + updateColumnHidden: function(C, F) { + var B = this.getTotalWidth(); + this.innerHd.firstChild.firstChild.style.width = B; + var H = F ? "none" : ""; + var G = this.getHeaderCell(C); + G.style.display = H; + var E = this.getRows(); + for (var D = 0, A = E.length; D < A; D++) { + E[D].style.width = B; + E[D].firstChild.style.width = B; + E[D].firstChild.rows[0].childNodes[C].style.display = H + } + this.onColumnHiddenUpdated(C, F, B); + delete this.lastViewWidth; + this.layout() + }, + doRender: function(E, G, M, A, L, Q) { + var B = this.templates, + D = B.cell, + F = B.row, + H = L - 1; + var C = "width:" + this.getTotalWidth() + ";"; + var T = [], + N, U, O = {}, + I = { + tstyle: C + }, + K; + for (var P = 0, S = G.length; P < S; P++) { + K = G[P]; + N = []; + var J = (P + A); + for (var R = 0; R < L; R++) { + U = E[R]; + O.id = U.id; + O.css = R == 0 ? "x-grid3-cell-first " : (R == H ? "x-grid3-cell-last " : ""); + O.attr = O.cellAttr = ""; + O.value = U.renderer(K.data[U.name], O, K, J, R, M); + O.style = U.style; + if (O.value == undefined || O.value === "") { + O.value = " " + } + if (K.dirty && typeof K.modified[U.name] !== "undefined") { + O.css += " x-grid3-dirty-cell" + } + N[N.length] = D.apply(O) + } + var V = []; + if (Q && ((J + 1) % 2 == 0)) { + V[0] = "x-grid3-row-alt" + } + if (K.dirty) { + V[1] = " x-grid3-dirty-row" + } + I.cols = L; + if (this.getRowClass) { + V[2] = this.getRowClass(K, J, I, M) + } + I.alt = V.join(" "); + I.cells = N.join(""); + T[T.length] = F.apply(I) + } + return T.join("") + }, + processRows: function(E, D) { + if (this.ds.getCount() < 1) { + return + } + D = D || !this.grid.stripeRows; + E = E || 0; + var I = this.getRows(); + var F = " x-grid3-row-alt "; + for (var B = E, C = I.length; B < C; B++) { + var H = I[B]; + H.rowIndex = B; + if (!D) { + var A = ((B + 1) % 2 == 0); + var G = (" " + H.className + " ").indexOf(F) != -1; + if (A == G) { + continue + } + if (A) { + H.className += " x-grid3-row-alt" + } else { + H.className = H.className.replace("x-grid3-row-alt", "") + } + } + } + }, + renderUI: function() { + var E = this.renderHeaders(); + var B = this.templates.body.apply({ + rows: "" + }); + var C = this.templates.master.apply({ + body: B, + header: E + }); + var D = this.grid; + D.getGridEl().dom.innerHTML = C; + this.initElements(); + this.mainBody.dom.innerHTML = this.renderRows(); + this.processRows(0, true); + Ext.fly(this.innerHd).on("click", this.handleHdDown, this); + this.mainHd.on("mouseover", this.handleHdOver, this); + this.mainHd.on("mouseout", this.handleHdOut, this); + this.mainHd.on("mousemove", this.handleHdMove, this); + this.scroller.on("scroll", this.syncScroll, this); + if (D.enableColumnResize !== false) { + this.splitone = new Ext.grid.GridView.SplitDragZone(D, this.mainHd.dom) + } + if (D.enableColumnMove) { + this.columnDrag = new Ext.grid.GridView.ColumnDragZone(D, this.innerHd); + this.columnDrop = new Ext.grid.HeaderDropZone(D, this.mainHd.dom) + } + if (D.enableHdMenu !== false) { + if (D.enableColumnHide !== false) { + this.colMenu = new Ext.menu.Menu({ + id: D.id + "-hcols-menu" + }); + this.colMenu.on("beforeshow", this.beforeColMenuShow, this); + this.colMenu.on("itemclick", this.handleHdMenuClick, this) + } + this.hmenu = new Ext.menu.Menu({ + id: D.id + "-hctx" + }); + this.hmenu.add({ + id: "asc", + text: this.sortAscText, + cls: "xg-hmenu-sort-asc" + }, { + id: "desc", + text: this.sortDescText, + cls: "xg-hmenu-sort-desc" + }); + if (D.enableColumnHide !== false) { + this.hmenu.add("-", { + id: "columns", + text: this.columnsText, + menu: this.colMenu, + iconCls: "x-cols-icon" + }) + } + this.hmenu.on("itemclick", this.handleHdMenuClick, this) + } + if (D.enableDragDrop || D.enableDrag) { + var A = new Ext.grid.GridDragZone(D, { + ddGroup: D.ddGroup || "GridDD" + }) + } + this.updateHeaderSortState() + }, + layout: function() { + if (!this.mainBody) { + return + } + var E = this.grid; + var G = E.getGridEl(), + I = this.cm, + B = E.autoExpandColumn, + A = this; + var C = G.getSize(true); + var H = C.width; + if (H < 20 || C.height < 20) { + return + } + if (E.autoHeight) { + this.scroller.dom.style.overflow = "visible" + } else { + this.el.setSize(C.width, C.height); + var F = this.mainHd.getHeight(); + var D = C.height - (F); + this.scroller.setSize(H, D); + if (this.innerHd) { + this.innerHd.style.width = (H) + "px" + } + } + if (this.forceFit) { + if (this.lastViewWidth != H) { + this.fitColumns(false, false); + this.lastViewWidth = H + } + } else { + this.autoExpand(); + this.syncHeaderScroll() + } + this.onLayout(H, D) + }, + onLayout: function(A, B) {}, + onColumnWidthUpdated: function(C, A, B) {}, + onAllColumnWidthsUpdated: function(A, B) {}, + onColumnHiddenUpdated: function(B, C, A) {}, + updateColumnText: function(A, B) {}, + afterMove: function(A) {}, + init: function(A) { + this.grid = A; + this.initTemplates(); + this.initData(A.store, A.colModel); + this.initUI(A) + }, + getColumnId: function(A) { + return this.cm.getColumnId(A) + }, + renderHeaders: function() { + var C = this.cm, + F = this.templates; + var E = F.hcell; + var B = [], + H = [], + G = {}; + for (var D = 0, A = C.getColumnCount(); D < A; D++) { + G.id = C.getColumnId(D); + G.value = C.getColumnHeader(D) || ""; + G.style = this.getColumnStyle(D, true); + G.tooltip = this.getColumnTooltip(D); + if (C.config[D].align == "right") { + G.istyle = "padding-right:16px" + } else { + delete G.istyle + } + B[B.length] = E.apply(G) + } + return F.header.apply({ + cells: B.join(""), + tstyle: "width:" + this.getTotalWidth() + ";" + }) + }, + getColumnTooltip: function(A) { + var B = this.cm.getColumnTooltip(A); + if (B) { + if (Ext.QuickTips.isEnabled()) { + return "ext:qtip=\"" + B + "\"" + } else { + return "title=\"" + B + "\"" + } + } + return "" + }, + beforeUpdate: function() { + this.grid.stopEditing(true) + }, + updateHeaders: function() { + this.innerHd.firstChild.innerHTML = this.renderHeaders() + }, + focusRow: function(A) { + this.focusCell(A, 0, false) + }, + focusCell: function(D, A, C) { + var B = this.ensureVisible(D, A, C); + this.focusEl.setXY(B); + if (Ext.isGecko) { + this.focusEl.focus() + } else { + this.focusEl.focus.defer(1, this.focusEl) + } + }, + ensureVisible: function(P, E, D) { + if (typeof P != "number") { + P = P.rowIndex + } + if (!this.ds) { + return + } + if (P < 0 || P >= this.ds.getCount()) { + return + } + E = (E !== undefined ? E : 0); + var I = this.getRow(P), + F; + if (!(D === false && E === 0)) { + while (this.cm.isHidden(E)) { + E++ + } + F = this.getCell(P, E) + } + if (!I) { + return + } + var L = this.scroller.dom; + var O = 0; + var C = I, + M = this.el.dom; + while (C && C != M) { + O += C.offsetTop; + C = C.offsetParent + } + O -= this.mainHd.dom.offsetHeight; + var N = O + I.offsetHeight; + var A = L.clientHeight; + var M = parseInt(L.scrollTop, 10); + var K = M + A; + if (O < M) { + L.scrollTop = O + } else { + if (N > K) { + L.scrollTop = N - A + } + } + if (D !== false) { + var J = parseInt(F.offsetLeft, 10); + var H = J + F.offsetWidth; + var G = parseInt(L.scrollLeft, 10); + var B = G + L.clientWidth; + if (J < G) { + L.scrollLeft = J + } else { + if (H > B) { + L.scrollLeft = H - L.clientWidth + } + } + } + return F ? Ext.fly(F).getXY() : [L.scrollLeft, Ext.fly(I).getY()] + }, + insertRows: function(A, F, C, E) { + if (!E && F === 0 && C == A.getCount() - 1) { + this.refresh() + } else { + if (!E) { + this.fireEvent("beforerowsinserted", this, F, C) + } + var B = this.renderRows(F, C); + var D = this.getRow(F); + if (D) { + Ext.DomHelper.insertHtml("beforeBegin", D, B) + } else { + Ext.DomHelper.insertHtml("beforeEnd", this.mainBody.dom, B) + } + if (!E) { + this.fireEvent("rowsinserted", this, F, C); + this.processRows(F) + } + } + }, + deleteRows: function(A, C, B) { + if (A.getRowCount() < 1) { + this.refresh() + } else { + this.fireEvent("beforerowsdeleted", this, C, B); + this.removeRows(C, B); + this.processRows(C); + this.fireEvent("rowsdeleted", this, C, B) + } + }, + getColumnStyle: function(A, C) { + var B = !C ? (this.cm.config[A].css || "") : ""; + B += "width:" + this.getColumnWidth(A) + ";"; + if (this.cm.isHidden(A)) { + B += "display:none;" + } + var D = this.cm.config[A].align; + if (D) { + B += "text-align:" + D + ";" + } + return B + }, + getColumnWidth: function(B) { + var A = this.cm.getColumnWidth(B); + if (typeof A == "number") { + return (Ext.isBorderBox ? A : (A - this.borderWidth > 0 ? A - this.borderWidth : 0)) + "px" + } + return A + }, + getTotalWidth: function() { + return this.cm.getTotalWidth() + "px" + }, + fitColumns: function(D, G, E) { + var F = this.cm, + S, L, O; + var R = F.getTotalWidth(false); + var J = this.grid.getGridEl().getWidth(true) - this.scrollOffset; + if (J < 20) { + return + } + var B = J - R; + if (B === 0) { + return false + } + var A = F.getColumnCount(true); + var P = A - (typeof E == "number" ? 1 : 0); + if (P === 0) { + P = 1; + E = undefined + } + var K = F.getColumnCount(); + var I = []; + var N = 0; + var M = 0; + var H; + for (O = 0; O < K; O++) { + if (!F.isHidden(O) && !F.isFixed(O) && O !== E) { + H = F.getColumnWidth(O); + I.push(O); + N = O; + I.push(H); + M += H + } + } + var C = (J - F.getTotalWidth()) / M; + while (I.length) { + H = I.pop(); + O = I.pop(); + F.setColumnWidth(O, Math.max(this.grid.minColumnWidth, Math.floor(H + H * C)), true) + } + if ((R = F.getTotalWidth(false)) > J) { + var Q = P != A ? E : N; + F.setColumnWidth(Q, Math.max(1, F.getColumnWidth(Q) - (R - J)), true) + } + if (D !== true) { + this.updateAllColumnWidths() + } + return true + }, + autoExpand: function(B) { + var G = this.grid, + A = this.cm; + if (!this.userResized && G.autoExpandColumn) { + var D = A.getTotalWidth(false); + var H = this.grid.getGridEl().getWidth(true) - this.scrollOffset; + if (D != H) { + var F = A.getIndexById(G.autoExpandColumn); + var E = A.getColumnWidth(F); + var C = Math.min(Math.max(((H - D) + E), G.autoExpandMin), G.autoExpandMax); + if (C != E) { + A.setColumnWidth(F, C, true); + if (B !== true) { + this.updateColumnWidth(F, C) + } + } + } + } + }, + getColumnData: function() { + var D = [], + A = this.cm, + E = A.getColumnCount(); + for (var C = 0; C < E; C++) { + var B = A.getDataIndex(C); + D[C] = { + name: (typeof B == "undefined" ? this.ds.fields.get(C).name : B), + renderer: A.getRenderer(C), + id: A.getColumnId(C), + style: this.getColumnStyle(C) + } + } + return D + }, + renderRows: function(H, C) { + var D = this.grid, + F = D.colModel, + A = D.store, + I = D.stripeRows; + var G = F.getColumnCount(); + if (A.getCount() < 1) { + return "" + } + var E = this.getColumnData(); + H = H || 0; + C = typeof C == "undefined" ? A.getCount() - 1 : C; + var B = A.getRange(H, C); + return this.doRender(E, B, A, H, G, I) + }, + renderBody: function() { + var A = this.renderRows(); + return this.templates.body.apply({ + rows: A + }) + }, + refreshRow: function(B) { + var D = this.ds, + C; + if (typeof B == "number") { + C = B; + B = D.getAt(C) + } else { + C = D.indexOf(B) + } + var A = []; + this.insertRows(D, C, C, true); + this.getRow(C).rowIndex = C; + this.onRemove(D, B, C + 1, true); + this.fireEvent("rowupdated", this, C, B) + }, + refresh: function(B) { + this.fireEvent("beforerefresh", this); + this.grid.stopEditing(true); + var A = this.renderBody(); + this.mainBody.update(A); + if (B === true) { + this.updateHeaders(); + this.updateHeaderSortState() + } + this.processRows(0, true); + this.layout(); + this.applyEmptyText(); + this.fireEvent("refresh", this) + }, + applyEmptyText: function() { + if (this.emptyText && !this.hasRows()) { + this.mainBody.update("
      " + this.emptyText + "
      ") + } + }, + updateHeaderSortState: function() { + var B = this.ds.getSortState(); + if (!B) { + return + } + if (!this.sortState || (this.sortState.field != B.field || this.sortState.direction != B.direction)) { + this.grid.fireEvent("sortchange", this.grid, B) + } + this.sortState = B; + var C = this.cm.findColumnIndex(B.field); + if (C != -1) { + var A = B.direction; + this.updateSortIcon(C, A) + } + }, + destroy: function() { + if (this.colMenu) { + this.colMenu.removeAll(); + Ext.menu.MenuMgr.unregister(this.colMenu); + this.colMenu.getEl().remove(); + delete this.colMenu + } + if (this.hmenu) { + this.hmenu.removeAll(); + Ext.menu.MenuMgr.unregister(this.hmenu); + this.hmenu.getEl().remove(); + delete this.hmenu + } + if (this.grid.enableColumnMove) { + var C = Ext.dd.DDM.ids["gridHeader" + this.grid.getGridEl().id]; + if (C) { + for (var A in C) { + if (!C[A].config.isTarget && C[A].dragElId) { + var B = C[A].dragElId; + C[A].unreg(); + Ext.get(B).remove() + } else { + if (C[A].config.isTarget) { + C[A].proxyTop.remove(); + C[A].proxyBottom.remove(); + C[A].unreg() + } + } + if (Ext.dd.DDM.locationCache[A]) { + delete Ext.dd.DDM.locationCache[A] + } + } + delete Ext.dd.DDM.ids["gridHeader" + this.grid.getGridEl().id] + } + } + Ext.destroy(this.resizeMarker, this.resizeProxy); + this.initData(null, null); + Ext.EventManager.removeResizeListener(this.onWindowResize, this) + }, + onDenyColumnHide: function() {}, + render: function() { + var A = this.cm; + var B = A.getColumnCount(); + if (this.autoFill) { + this.fitColumns(true, true) + } else { + if (this.forceFit) { + this.fitColumns(true, false) + } else { + if (this.grid.autoExpandColumn) { + this.autoExpand(true) + } + } + } + this.renderUI() + }, + initData: function(B, A) { + if (this.ds) { + this.ds.un("load", this.onLoad, this); + this.ds.un("datachanged", this.onDataChange, this); + this.ds.un("add", this.onAdd, this); + this.ds.un("remove", this.onRemove, this); + this.ds.un("update", this.onUpdate, this); + this.ds.un("clear", this.onClear, this) + } + if (B) { + B.on("load", this.onLoad, this); + B.on("datachanged", this.onDataChange, this); + B.on("add", this.onAdd, this); + B.on("remove", this.onRemove, this); + B.on("update", this.onUpdate, this); + B.on("clear", this.onClear, this) + } + this.ds = B; + if (this.cm) { + this.cm.un("configchange", this.onColConfigChange, this); + this.cm.un("widthchange", this.onColWidthChange, this); + this.cm.un("headerchange", this.onHeaderChange, this); + this.cm.un("hiddenchange", this.onHiddenChange, this); + this.cm.un("columnmoved", this.onColumnMove, this); + this.cm.un("columnlockchange", this.onColumnLock, this) + } + if (A) { + A.on("configchange", this.onColConfigChange, this); + A.on("widthchange", this.onColWidthChange, this); + A.on("headerchange", this.onHeaderChange, this); + A.on("hiddenchange", this.onHiddenChange, this); + A.on("columnmoved", this.onColumnMove, this); + A.on("columnlockchange", this.onColumnLock, this) + } + this.cm = A + }, + onDataChange: function() { + this.refresh(); + this.updateHeaderSortState() + }, + onClear: function() { + this.refresh() + }, + onUpdate: function(B, A) { + this.refreshRow(A) + }, + onAdd: function(C, A, B) { + this.insertRows(C, B, B + (A.length - 1)) + }, + onRemove: function(D, A, B, C) { + if (C !== true) { + this.fireEvent("beforerowremoved", this, B, A) + } + this.removeRow(B); + if (C !== true) { + this.processRows(B); + this.applyEmptyText(); + this.fireEvent("rowremoved", this, B, A) + } + }, + onLoad: function() { + this.scrollToTop() + }, + onColWidthChange: function(A, B, C) { + this.updateColumnWidth(B, C) + }, + onHeaderChange: function(A, B, C) { + this.updateHeaders() + }, + onHiddenChange: function(A, B, C) { + this.updateColumnHidden(B, C) + }, + onColumnMove: function(A, D, B) { + this.indexMap = null; + var C = this.getScrollState(); + this.refresh(true); + this.restoreScroll(C); + this.afterMove(B) + }, + onColConfigChange: function() { + delete this.lastViewWidth; + this.indexMap = null; + this.refresh(true) + }, + initUI: function(A) { + A.on("headerclick", this.onHeaderClick, this); + if (A.trackMouseOver) { + A.on("mouseover", this.onRowOver, this); + A.on("mouseout", this.onRowOut, this) + } + }, + initEvents: function() {}, + onHeaderClick: function(B, A) { + if (this.headersDisabled || !this.cm.isSortable(A)) { + return + } + B.stopEditing(true); + B.store.sort(this.cm.getDataIndex(A)) + }, + onRowOver: function(B, A) { + var C; + if ((C = this.findRowIndex(A)) !== false) { + this.addRowClass(C, "x-grid3-row-over") + } + }, + onRowOut: function(B, A) { + var C; + if ((C = this.findRowIndex(A)) !== false && C !== this.findRowIndex(B.getRelatedTarget())) { + this.removeRowClass(C, "x-grid3-row-over") + } + }, + handleWheel: function(A) { + A.stopPropagation() + }, + onRowSelect: function(A) { + this.addRowClass(A, "x-grid3-row-selected") + }, + onRowDeselect: function(A) { + this.removeRowClass(A, "x-grid3-row-selected") + }, + onCellSelect: function(C, B) { + var A = this.getCell(C, B); + if (A) { + this.fly(A).addClass("x-grid3-cell-selected") + } + }, + onCellDeselect: function(C, B) { + var A = this.getCell(C, B); + if (A) { + this.fly(A).removeClass("x-grid3-cell-selected") + } + }, + onColumnSplitterMoved: function(C, B) { + this.userResized = true; + var A = this.grid.colModel; + A.setColumnWidth(C, B, true); + if (this.forceFit) { + this.fitColumns(true, false, C); + this.updateAllColumnWidths() + } else { + this.updateColumnWidth(C, B) + } + this.grid.fireEvent("columnresize", C, B) + }, + handleHdMenuClick: function(C) { + var B = this.hdCtxIndex; + var A = this.cm, + D = this.ds; + switch (C.id) { + case "asc": + D.sort(A.getDataIndex(B), "ASC"); + break; + case "desc": + D.sort(A.getDataIndex(B), "DESC"); + break; + default: + B = A.getIndexById(C.id.substr(4)); + if (B != -1) { + if (C.checked && A.getColumnsBy(this.isHideableColumn, this).length <= 1) { + this.onDenyColumnHide(); + return false + } + A.setHidden(B, C.checked) + } + } + return true + }, + isHideableColumn: function(A) { + return !A.hidden && !A.fixed + }, + beforeColMenuShow: function() { + var A = this.cm, + C = A.getColumnCount(); + this.colMenu.removeAll(); + for (var B = 0; B < C; B++) { + if (A.config[B].fixed !== true && A.config[B].hideable !== false) { + this.colMenu.add(new Ext.menu.CheckItem({ + id: "col-" + A.getColumnId(B), + text: A.getColumnHeader(B), + checked: !A.isHidden(B), + hideOnClick: false, + disabled: A.config[B].hideable === false + })) + } + } + }, + handleHdDown: function(F, D) { + if (Ext.fly(D).hasClass("x-grid3-hd-btn")) { + F.stopEvent(); + var E = this.findHeaderCell(D); + Ext.fly(E).addClass("x-grid3-hd-menu-open"); + var C = this.getCellIndex(E); + this.hdCtxIndex = C; + var B = this.hmenu.items, + A = this.cm; + B.get("asc").setDisabled(!A.isSortable(C)); + B.get("desc").setDisabled(!A.isSortable(C)); + this.hmenu.on("hide", function() { + Ext.fly(E).removeClass("x-grid3-hd-menu-open") + }, this, { + single: true + }); + this.hmenu.show(D, "tl-bl?") + } + }, + handleHdOver: function(D, A) { + var C = this.findHeaderCell(A); + if (C && !this.headersDisabled) { + this.activeHd = C; + this.activeHdIndex = this.getCellIndex(C); + var B = this.fly(C); + this.activeHdRegion = B.getRegion(); + if (!this.cm.isMenuDisabled(this.activeHdIndex)) { + B.addClass("x-grid3-hd-over"); + this.activeHdBtn = B.child(".x-grid3-hd-btn"); + if (this.activeHdBtn) { + this.activeHdBtn.dom.style.height = (C.firstChild.offsetHeight - 1) + "px" + } + } + } + }, + handleHdMove: function(F, D) { + if (this.activeHd && !this.headersDisabled) { + var B = this.splitHandleWidth || 5; + var E = this.activeHdRegion; + var A = F.getPageX(); + var C = this.activeHd.style; + if (A - E.left <= B && this.cm.isResizable(this.activeHdIndex - 1)) { + C.cursor = Ext.isAir ? "move" : Ext.isSafari ? "e-resize" : "col-resize" + } else { + if (E.right - A <= (!this.activeHdBtn ? B : 2) && this.cm.isResizable(this.activeHdIndex)) { + C.cursor = Ext.isAir ? "move" : Ext.isSafari ? "w-resize" : "col-resize" + } else { + C.cursor = "" + } + } + } + }, + handleHdOut: function(C, A) { + var B = this.findHeaderCell(A); + if (B && (!Ext.isIE || !C.within(B, true))) { + this.activeHd = null; + this.fly(B).removeClass("x-grid3-hd-over"); + B.style.cursor = "" + } + }, + hasRows: function() { + var A = this.mainBody.dom.firstChild; + return A && A.className != "x-grid-empty" + }, + bind: function(A, B) { + this.initData(A, B) + } +}); +Ext.grid.GridView.SplitDragZone = function(A, B) { + this.grid = A; + this.view = A.getView(); + this.marker = this.view.resizeMarker; + this.proxy = this.view.resizeProxy; + Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this, B, "gridSplitters" + this.grid.getGridEl().id, { + dragElId: Ext.id(this.proxy.dom), + resizeFrame: false + }); + this.scroll = false; + this.hw = this.view.splitHandleWidth || 5 +}; +Ext.extend(Ext.grid.GridView.SplitDragZone, Ext.dd.DDProxy, { + b4StartDrag: function(A, E) { + this.view.headersDisabled = true; + var D = this.view.mainWrap.getHeight(); + this.marker.setHeight(D); + this.marker.show(); + this.marker.alignTo(this.view.getHeaderCell(this.cellIndex), "tl-tl", [-2, 0]); + this.proxy.setHeight(D); + var B = this.cm.getColumnWidth(this.cellIndex); + var C = Math.max(B - this.grid.minColumnWidth, 0); + this.resetConstraints(); + this.setXConstraint(C, 1000); + this.setYConstraint(0, 0); + this.minX = A - C; + this.maxX = A + 1000; + this.startPos = A; + Ext.dd.DDProxy.prototype.b4StartDrag.call(this, A, E) + }, + handleMouseDown: function(A) { + var H = this.view.findHeaderCell(A.getTarget()); + if (H) { + var K = this.view.fly(H).getXY(), + E = K[0], + D = K[1]; + var I = A.getXY(), + C = I[0], + B = I[1]; + var G = H.offsetWidth, + F = false; + if ((C - E) <= this.hw) { + F = -1 + } else { + if ((E + G) - C <= this.hw) { + F = 0 + } + } + if (F !== false) { + this.cm = this.grid.colModel; + var J = this.view.getCellIndex(H); + if (F == -1) { + if (J + F < 0) { + return + } + while (this.cm.isHidden(J + F)) { + --F; + if (J + F < 0) { + return + } + } + } + this.cellIndex = J + F; + this.split = H.dom; + if (this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)) { + Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this, arguments) + } + } else { + if (this.view.columnDrag) { + this.view.columnDrag.callHandleMouseDown(A) + } + } + } + }, + endDrag: function(D) { + this.marker.hide(); + var A = this.view; + var B = Math.max(this.minX, D.getPageX()); + var C = B - this.startPos; + A.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex) + C); + setTimeout(function() { + A.headersDisabled = false + }, 50) + }, + autoOffset: function() { + this.setDelta(0, 0) + } +}); +Ext.grid.GroupingView = Ext.extend(Ext.grid.GridView, { + hideGroupedColumn: false, + showGroupName: true, + startCollapsed: false, + enableGrouping: true, + enableGroupingMenu: true, + enableNoGroups: true, + emptyGroupText: "(None)", + ignoreAdd: false, + groupTextTpl: "{text}", + gidSeed: 1000, + initTemplates: function() { + Ext.grid.GroupingView.superclass.initTemplates.call(this); + this.state = {}; + var A = this.grid.getSelectionModel(); + A.on(A.selectRow ? "beforerowselect" : "beforecellselect", this.onBeforeRowSelect, this); + if (!this.startGroup) { + this.startGroup = new Ext.XTemplate("
      ", "
      ", this.groupTextTpl, "
      ", "
      ") + } + this.startGroup.compile(); + this.endGroup = "
      " + }, + findGroup: function(A) { + return Ext.fly(A).up(".x-grid-group", this.mainBody.dom) + }, + getGroups: function() { + return this.hasRows() ? this.mainBody.dom.childNodes : [] + }, + onAdd: function() { + if (this.enableGrouping && !this.ignoreAdd) { + var A = this.getScrollState(); + this.refresh(); + this.restoreScroll(A) + } else { + if (!this.enableGrouping) { + Ext.grid.GroupingView.superclass.onAdd.apply(this, arguments) + } + } + }, + onRemove: function(E, A, B, D) { + Ext.grid.GroupingView.superclass.onRemove.apply(this, arguments); + var C = document.getElementById(A._groupId); + if (C && C.childNodes[1].childNodes.length < 1) { + Ext.removeNode(C) + } + this.applyEmptyText() + }, + refreshRow: function(A) { + if (this.ds.getCount() == 1) { + this.refresh() + } else { + this.isUpdating = true; + Ext.grid.GroupingView.superclass.refreshRow.apply(this, arguments); + this.isUpdating = false + } + }, + beforeMenuShow: function() { + var C = this.getGroupField(); + var B = this.hmenu.items.get("groupBy"); + if (B) { + B.setDisabled(this.cm.config[this.hdCtxIndex].groupable === false) + } + var A = this.hmenu.items.get("showGroups"); + if (A) { + if (!!C) { + A.setDisabled(this.cm.config[this.hdCtxIndex].groupable === false) + } + A.setChecked(!!C) + } + }, + renderUI: function() { + Ext.grid.GroupingView.superclass.renderUI.call(this); + this.mainBody.on("mousedown", this.interceptMouse, this); + if (this.enableGroupingMenu && this.hmenu) { + this.hmenu.add("-", { + id: "groupBy", + text: this.groupByText, + handler: this.onGroupByClick, + scope: this, + iconCls: "x-group-by-icon" + }); + if (this.enableNoGroups) { + this.hmenu.add({ + id: "showGroups", + text: this.showGroupsText, + checked: true, + checkHandler: this.onShowGroupsClick, + scope: this + }) + } + this.hmenu.on("beforeshow", this.beforeMenuShow, this) + } + }, + onGroupByClick: function() { + this.grid.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex)); + this.beforeMenuShow() + }, + onShowGroupsClick: function(A, B) { + if (B) { + this.onGroupByClick() + } else { + this.grid.store.clearGrouping() + } + }, + toggleGroup: function(C, B) { + this.grid.stopEditing(true); + C = Ext.getDom(C); + var A = Ext.fly(C); + B = B !== undefined ? B : A.hasClass("x-grid-group-collapsed"); + this.state[A.dom.id] = B; + A[B ? "removeClass" : "addClass"]("x-grid-group-collapsed") + }, + toggleAllGroups: function(C) { + var B = this.getGroups(); + for (var D = 0, A = B.length; D < A; D++) { + this.toggleGroup(B[D], C) + } + }, + expandAllGroups: function() { + this.toggleAllGroups(true) + }, + collapseAllGroups: function() { + this.toggleAllGroups(false) + }, + interceptMouse: function(B) { + var A = B.getTarget(".x-grid-group-hd", this.mainBody); + if (A) { + B.stopEvent(); + this.toggleGroup(A.parentNode) + } + }, + getGroup: function(A, D, F, G, B, E) { + var C = F ? F(A, {}, D, G, B, E) : String(A); + if (C === "") { + C = this.cm.config[B].emptyGroupText || this.emptyGroupText + } + return C + }, + getGroupField: function() { + return this.grid.store.getGroupState() + }, + renderRows: function() { + var A = this.getGroupField(); + var D = !!A; + if (this.hideGroupedColumn) { + var B = this.cm.findColumnIndex(A); + if (!D && this.lastGroupField !== undefined) { + this.mainBody.update(""); + this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField), false); + delete this.lastGroupField + } else { + if (D && this.lastGroupField === undefined) { + this.lastGroupField = A; + this.cm.setHidden(B, true) + } else { + if (D && this.lastGroupField !== undefined && A !== this.lastGroupField) { + this.mainBody.update(""); + var C = this.cm.findColumnIndex(this.lastGroupField); + this.cm.setHidden(C, false); + this.lastGroupField = A; + this.cm.setHidden(B, true) + } + } + } + } + return Ext.grid.GroupingView.superclass.renderRows.apply(this, arguments) + }, + doRender: function(D, G, P, A, O, R) { + if (G.length < 1) { + return "" + } + var Y = this.getGroupField(); + var N = this.cm.findColumnIndex(Y); + this.enableGrouping = !!Y; + if (!this.enableGrouping || this.isUpdating) { + return Ext.grid.GroupingView.superclass.doRender.apply(this, arguments) + } + var H = "width:" + this.getTotalWidth() + ";"; + var Q = this.grid.getGridEl().id; + var F = this.cm.config[N]; + var B = F.groupRenderer || F.renderer; + var S = this.showGroupName ? (F.groupName || F.header) + ": " : ""; + var X = [], + K, T, U, M; + for (T = 0, U = G.length; T < U; T++) { + var J = A + T; + var L = G[T], + E = L.data[Y], + V = this.getGroup(E, L, B, J, N, P); + if (!K || K.group != V) { + M = Q + "-gp-" + Y + "-" + Ext.util.Format.htmlEncode(V); + var C = typeof this.state[M] !== "undefined" ? !this.state[M] : this.startCollapsed; + var I = C ? "x-grid-group-collapsed" : ""; + K = { + group: V, + gvalue: E, + text: S + V, + groupId: M, + startRow: J, + rs: [L], + cls: I, + style: H + }; + X.push(K) + } else { + K.rs.push(L) + } + L._groupId = M + } + var W = []; + for (T = 0, U = X.length; T < U; T++) { + var V = X[T]; + this.doGroupStart(W, V, D, P, O); + W[W.length] = Ext.grid.GroupingView.superclass.doRender.call(this, D, V.rs, P, V.startRow, O, R); + this.doGroupEnd(W, V, D, P, O) + } + return W.join("") + }, + getGroupId: function(F) { + var D = this.grid.getGridEl().id; + var C = this.getGroupField(); + var E = this.cm.findColumnIndex(C); + var B = this.cm.config[E]; + var G = B.groupRenderer || B.renderer; + var A = this.getGroup(F, { + data: {} + }, G, 0, E, this.ds); + return D + "-gp-" + C + "-" + Ext.util.Format.htmlEncode(F) + }, + doGroupStart: function(A, D, B, E, C) { + A[A.length] = this.startGroup.apply(D) + }, + doGroupEnd: function(A, D, B, E, C) { + A[A.length] = this.endGroup + }, + getRows: function() { + if (!this.enableGrouping) { + return Ext.grid.GroupingView.superclass.getRows.call(this) + } + var G = []; + var F, C = this.getGroups(); + for (var E = 0, A = C.length; E < A; E++) { + F = C[E].childNodes[1].childNodes; + for (var D = 0, B = F.length; D < B; D++) { + G[G.length] = F[D] + } + } + return G + }, + updateGroupWidths: function() { + if (!this.enableGrouping || !this.hasRows()) { + return + } + var C = Math.max(this.cm.getTotalWidth(), this.el.dom.offsetWidth - this.scrollOffset) + "px"; + var B = this.getGroups(); + for (var D = 0, A = B.length; D < A; D++) { + B[D].firstChild.style.width = C + } + }, + onColumnWidthUpdated: function(C, A, B) { + this.updateGroupWidths() + }, + onAllColumnWidthsUpdated: function(A, B) { + this.updateGroupWidths() + }, + onColumnHiddenUpdated: function(B, C, A) { + this.updateGroupWidths() + }, + onLayout: function() { + this.updateGroupWidths() + }, + onBeforeRowSelect: function(D, C) { + if (!this.enableGrouping) { + return + } + var B = this.getRow(C); + if (B && !B.offsetParent) { + var A = this.findGroup(B); + this.toggleGroup(A, true) + } + }, + groupByText: "Group By This Field", + showGroupsText: "Show in Groups" +}); +Ext.grid.GroupingView.GROUP_ID = 1000; +Ext.grid.HeaderDragZone = function(A, C, B) { + this.grid = A; + this.view = A.getView(); + this.ddGroup = "gridHeader" + this.grid.getGridEl().id; + Ext.grid.HeaderDragZone.superclass.constructor.call(this, C); + if (B) { + this.setHandleElId(Ext.id(C)); + this.setOuterHandleElId(Ext.id(B)) + } + this.scroll = false +}; +Ext.extend(Ext.grid.HeaderDragZone, Ext.dd.DragZone, { + maxDragWidth: 120, + getDragData: function(C) { + var A = Ext.lib.Event.getTarget(C); + var B = this.view.findHeaderCell(A); + if (B) { + return { + ddel: B.firstChild, + header: B + } + } + return false + }, + onInitDrag: function(A) { + this.view.headersDisabled = true; + var B = this.dragData.ddel.cloneNode(true); + B.id = Ext.id(); + B.style.width = Math.min(this.dragData.header.offsetWidth, this.maxDragWidth) + "px"; + this.proxy.update(B); + return true + }, + afterValidDrop: function() { + var A = this.view; + setTimeout(function() { + A.headersDisabled = false + }, 50) + }, + afterInvalidDrop: function() { + var A = this.view; + setTimeout(function() { + A.headersDisabled = false + }, 50) + } +}); +Ext.grid.HeaderDropZone = function(A, C, B) { + this.grid = A; + this.view = A.getView(); + this.proxyTop = Ext.DomHelper.append(document.body, { + cls: "col-move-top", + html: " " + }, true); + this.proxyBottom = Ext.DomHelper.append(document.body, { + cls: "col-move-bottom", + html: " " + }, true); + this.proxyTop.hide = this.proxyBottom.hide = function() { + this.setLeftTop(-100, -100); + this.setStyle("visibility", "hidden") + }; + this.ddGroup = "gridHeader" + this.grid.getGridEl().id; + Ext.grid.HeaderDropZone.superclass.constructor.call(this, A.getGridEl().dom) +}; +Ext.extend(Ext.grid.HeaderDropZone, Ext.dd.DropZone, { + proxyOffsets: [-4, -9], + fly: Ext.Element.fly, + getTargetFromEvent: function(C) { + var A = Ext.lib.Event.getTarget(C); + var B = this.view.findCellIndex(A); + if (B !== false) { + return this.view.getHeaderCell(B) + } + }, + nextVisible: function(C) { + var B = this.view, + A = this.grid.colModel; + C = C.nextSibling; + while (C) { + if (!A.isHidden(B.getCellIndex(C))) { + return C + } + C = C.nextSibling + } + return null + }, + prevVisible: function(C) { + var B = this.view, + A = this.grid.colModel; + C = C.prevSibling; + while (C) { + if (!A.isHidden(B.getCellIndex(C))) { + return C + } + C = C.prevSibling + } + return null + }, + positionIndicator: function(D, B, E) { + var H = Ext.lib.Event.getPageX(E); + var A = Ext.lib.Dom.getRegion(B.firstChild); + var I, K, G = A.top + this.proxyOffsets[1]; + if ((A.right - H) <= (A.right - A.left) / 2) { + I = A.right + this.view.borderWidth; + K = "after" + } else { + I = A.left; + K = "before" + } + var F = this.view.getCellIndex(D); + var J = this.view.getCellIndex(B); + if (this.grid.colModel.isFixed(J)) { + return false + } + var C = this.grid.colModel.isLocked(J); + if (K == "after") { + J++ + } + if (F < J) { + J-- + } + if (F == J && (C == this.grid.colModel.isLocked(F))) { + return false + } + I += this.proxyOffsets[0]; + this.proxyTop.setLeftTop(I, G); + this.proxyTop.show(); + if (!this.bottomOffset) { + this.bottomOffset = this.view.mainHd.getHeight() + } + this.proxyBottom.setLeftTop(I, G + this.proxyTop.dom.offsetHeight + this.bottomOffset); + this.proxyBottom.show(); + return K + }, + onNodeEnter: function(D, A, C, B) { + if (B.header != D) { + this.positionIndicator(B.header, D, C) + } + }, + onNodeOver: function(E, B, D, C) { + var A = false; + if (C.header != E) { + A = this.positionIndicator(C.header, E, D) + } + if (!A) { + this.proxyTop.hide(); + this.proxyBottom.hide() + } + return A ? this.dropAllowed : this.dropNotAllowed + }, + onNodeOut: function(D, A, C, B) { + this.proxyTop.hide(); + this.proxyBottom.hide() + }, + onNodeDrop: function(B, K, F, D) { + var E = D.header; + if (E != B) { + var I = this.grid.colModel; + var H = Ext.lib.Event.getPageX(F); + var A = Ext.lib.Dom.getRegion(B.firstChild); + var L = (A.right - H) <= ((A.right - A.left) / 2) ? "after" : "before"; + var G = this.view.getCellIndex(E); + var J = this.view.getCellIndex(B); + var C = I.isLocked(J); + if (L == "after") { + J++ + } + if (G < J) { + J-- + } + if (G == J && (C == I.isLocked(G))) { + return false + } + I.setLocked(G, C, true); + I.moveColumn(G, J); + this.grid.fireEvent("columnmove", G, J); + return true + } + return false + } +}); +Ext.grid.GridView.ColumnDragZone = function(A, B) { + Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this, A, B, null); + this.proxy.el.addClass("x-grid3-col-dd") +}; +Ext.extend(Ext.grid.GridView.ColumnDragZone, Ext.grid.HeaderDragZone, { + handleMouseDown: function(A) {}, + callHandleMouseDown: function(A) { + Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this, A) + } +}); +Ext.grid.SplitDragZone = function(A, C, B) { + this.grid = A; + this.view = A.getView(); + this.proxy = this.view.resizeProxy; + Ext.grid.SplitDragZone.superclass.constructor.call(this, C, "gridSplitters" + this.grid.getGridEl().id, { + dragElId: Ext.id(this.proxy.dom), + resizeFrame: false + }); + this.setHandleElId(Ext.id(C)); + this.setOuterHandleElId(Ext.id(B)); + this.scroll = false +}; +Ext.extend(Ext.grid.SplitDragZone, Ext.dd.DDProxy, { + fly: Ext.Element.fly, + b4StartDrag: function(A, D) { + this.view.headersDisabled = true; + this.proxy.setHeight(this.view.mainWrap.getHeight()); + var B = this.cm.getColumnWidth(this.cellIndex); + var C = Math.max(B - this.grid.minColumnWidth, 0); + this.resetConstraints(); + this.setXConstraint(C, 1000); + this.setYConstraint(0, 0); + this.minX = A - C; + this.maxX = A + 1000; + this.startPos = A; + Ext.dd.DDProxy.prototype.b4StartDrag.call(this, A, D) + }, + handleMouseDown: function(B) { + ev = Ext.EventObject.setEvent(B); + var A = this.fly(ev.getTarget()); + if (A.hasClass("x-grid-split")) { + this.cellIndex = this.view.getCellIndex(A.dom); + this.split = A.dom; + this.cm = this.grid.colModel; + if (this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)) { + Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this, arguments) + } + } + }, + endDrag: function(C) { + this.view.headersDisabled = false; + var A = Math.max(this.minX, Ext.lib.Event.getPageX(C)); + var B = A - this.startPos; + this.view.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex) + B) + }, + autoOffset: function() { + this.setDelta(0, 0) + } +}); +Ext.grid.GridDragZone = function(B, A) { + this.view = B.getView(); + Ext.grid.GridDragZone.superclass.constructor.call(this, this.view.mainBody.dom, A); + if (this.view.lockedBody) { + this.setHandleElId(Ext.id(this.view.mainBody.dom)); + this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom)) + } + this.scroll = false; + this.grid = B; + this.ddel = document.createElement("div"); + this.ddel.className = "x-grid-dd-wrap" +}; +Ext.extend(Ext.grid.GridDragZone, Ext.dd.DragZone, { + ddGroup: "GridDD", + getDragData: function(B) { + var A = Ext.lib.Event.getTarget(B); + var D = this.view.findRowIndex(A); + if (D !== false) { + var C = this.grid.selModel; + if (!C.isSelected(D) || B.hasModifier()) { + C.handleMouseDown(this.grid, D, B) + } + return { + grid: this.grid, + ddel: this.ddel, + rowIndex: D, + selections: C.getSelections() + } + } + return false + }, + onInitDrag: function(B) { + var A = this.dragData; + this.ddel.innerHTML = this.grid.getDragDropText(); + this.proxy.update(this.ddel) + }, + afterRepair: function() { + this.dragging = false + }, + getRepairXY: function(B, A) { + return false + }, + onEndDrag: function(A, B) {}, + onValidDrop: function(A, B, C) { + this.hideProxy() + }, + beforeInvalidDrop: function(A, B) {} +}); +Ext.grid.ColumnModel = function(A) { + this.defaultWidth = 100; + this.defaultSortable = false; + if (A.columns) { + Ext.apply(this, A); + this.setConfig(A.columns, true) + } else { + this.setConfig(A, true) + } + this.addEvents("widthchange", "headerchange", "hiddenchange", "columnmoved", "columnlockchange", "configchange"); + Ext.grid.ColumnModel.superclass.constructor.call(this) +}; +Ext.extend(Ext.grid.ColumnModel, Ext.util.Observable, { + getColumnId: function(A) { + return this.config[A].id + }, + setConfig: function(C, B) { + if (!B) { + delete this.totalWidth; + for (var D = 0, A = this.config.length; D < A; D++) { + var E = this.config[D]; + if (E.editor) { + E.editor.destroy() + } + } + } + this.config = C; + this.lookup = {}; + for (var D = 0, A = C.length; D < A; D++) { + var E = C[D]; + if (typeof E.renderer == "string") { + E.renderer = Ext.util.Format[E.renderer] + } + if (typeof E.id == "undefined") { + E.id = D + } + if (E.editor && E.editor.isFormField) { + E.editor = new Ext.grid.GridEditor(E.editor) + } + this.lookup[E.id] = E + } + if (!B) { + this.fireEvent("configchange", this) + } + }, + getColumnById: function(A) { + return this.lookup[A] + }, + getIndexById: function(C) { + for (var B = 0, A = this.config.length; B < A; B++) { + if (this.config[B].id == C) { + return B + } + } + return -1 + }, + moveColumn: function(C, A) { + var B = this.config[C]; + this.config.splice(C, 1); + this.config.splice(A, 0, B); + this.dataMap = null; + this.fireEvent("columnmoved", this, C, A) + }, + isLocked: function(A) { + return this.config[A].locked === true + }, + setLocked: function(B, C, A) { + if (this.isLocked(B) == C) { + return + } + this.config[B].locked = C; + if (!A) { + this.fireEvent("columnlockchange", this, B, C) + } + }, + getTotalLockedWidth: function() { + var A = 0; + for (var B = 0; B < this.config.length; B++) { + if (this.isLocked(B) && !this.isHidden(B)) { + this.totalWidth += this.getColumnWidth(B) + } + } + return A + }, + getLockedCount: function() { + for (var B = 0, A = this.config.length; B < A; B++) { + if (!this.isLocked(B)) { + return B + } + } + }, + getColumnCount: function(C) { + if (C === true) { + var D = 0; + for (var B = 0, A = this.config.length; B < A; B++) { + if (!this.isHidden(B)) { + D++ + } + } + return D + } + return this.config.length + }, + getColumnsBy: function(D, C) { + var E = []; + for (var B = 0, A = this.config.length; B < A; B++) { + var F = this.config[B]; + if (D.call(C || this, F, B) === true) { + E[E.length] = F + } + } + return E + }, + isSortable: function(A) { + if (typeof this.config[A].sortable == "undefined") { + return this.defaultSortable + } + return this.config[A].sortable + }, + isMenuDisabled: function(A) { + return !!this.config[A].menuDisabled + }, + getRenderer: function(A) { + if (!this.config[A].renderer) { + return Ext.grid.ColumnModel.defaultRenderer + } + return this.config[A].renderer + }, + setRenderer: function(A, B) { + this.config[A].renderer = B + }, + getColumnWidth: function(A) { + return this.config[A].width || this.defaultWidth + }, + setColumnWidth: function(B, C, A) { + this.config[B].width = C; + this.totalWidth = null; + if (!A) { + this.fireEvent("widthchange", this, B, C) + } + }, + getTotalWidth: function(B) { + if (!this.totalWidth) { + this.totalWidth = 0; + for (var C = 0, A = this.config.length; C < A; C++) { + if (B || !this.isHidden(C)) { + this.totalWidth += this.getColumnWidth(C) + } + } + } + return this.totalWidth + }, + getColumnHeader: function(A) { + return this.config[A].header + }, + setColumnHeader: function(A, B) { + this.config[A].header = B; + this.fireEvent("headerchange", this, A, B) + }, + getColumnTooltip: function(A) { + return this.config[A].tooltip + }, + setColumnTooltip: function(A, B) { + this.config[A].tooltip = B + }, + getDataIndex: function(A) { + return this.config[A].dataIndex + }, + setDataIndex: function(A, B) { + this.config[A].dataIndex = B + }, + findColumnIndex: function(C) { + var D = this.config; + for (var B = 0, A = D.length; B < A; B++) { + if (D[B].dataIndex == C) { + return B + } + } + return -1 + }, + isCellEditable: function(A, B) { + return (this.config[A].editable || (typeof this.config[A].editable == "undefined" && this.config[A].editor)) ? true : false + }, + getCellEditor: function(A, B) { + return this.config[A].editor + }, + setEditable: function(A, B) { + this.config[A].editable = B + }, + isHidden: function(A) { + return this.config[A].hidden + }, + isFixed: function(A) { + return this.config[A].fixed + }, + isResizable: function(A) { + return A >= 0 && this.config[A].resizable !== false && this.config[A].fixed !== true + }, + setHidden: function(A, B) { + var C = this.config[A]; + if (C.hidden !== B) { + C.hidden = B; + this.totalWidth = null; + this.fireEvent("hiddenchange", this, A, B) + } + }, + setEditor: function(A, B) { + this.config[A].editor = B + } +}); +Ext.grid.ColumnModel.defaultRenderer = function(A) { + if (typeof A == "string" && A.length < 1) { + return " " + } + return A +}; +Ext.grid.DefaultColumnModel = Ext.grid.ColumnModel; +Ext.grid.AbstractSelectionModel = function() { + this.locked = false; + Ext.grid.AbstractSelectionModel.superclass.constructor.call(this) +}; +Ext.extend(Ext.grid.AbstractSelectionModel, Ext.util.Observable, { + init: function(A) { + this.grid = A; + this.initEvents() + }, + lock: function() { + this.locked = true + }, + unlock: function() { + this.locked = false + }, + isLocked: function() { + return this.locked + } +}); +Ext.grid.RowSelectionModel = function(A) { + Ext.apply(this, A); + this.selections = new Ext.util.MixedCollection(false, function(B) { + return B.id + }); + this.last = false; + this.lastActive = false; + this.addEvents("selectionchange", "beforerowselect", "rowselect", "rowdeselect"); + Ext.grid.RowSelectionModel.superclass.constructor.call(this) +}; +Ext.extend(Ext.grid.RowSelectionModel, Ext.grid.AbstractSelectionModel, { + singleSelect: false, + initEvents: function() { + if (!this.grid.enableDragDrop && !this.grid.enableDrag) { + this.grid.on("rowmousedown", this.handleMouseDown, this) + } else { + this.grid.on("rowclick", function(B, D, C) { + if (C.button === 0 && !C.shiftKey && !C.ctrlKey) { + this.selectRow(D, false); + B.view.focusRow(D) + } + }, this) + } + this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), { + "up": function(C) { + if (!C.shiftKey) { + this.selectPrevious(C.shiftKey) + } else { + if (this.last !== false && this.lastActive !== false) { + var B = this.last; + this.selectRange(this.last, this.lastActive - 1); + this.grid.getView().focusRow(this.lastActive); + if (B !== false) { + this.last = B + } + } else { + this.selectFirstRow() + } + } + }, + "down": function(C) { + if (!C.shiftKey) { + this.selectNext(C.shiftKey) + } else { + if (this.last !== false && this.lastActive !== false) { + var B = this.last; + this.selectRange(this.last, this.lastActive + 1); + this.grid.getView().focusRow(this.lastActive); + if (B !== false) { + this.last = B + } + } else { + this.selectFirstRow() + } + } + }, + scope: this + }); + var A = this.grid.view; + A.on("refresh", this.onRefresh, this); + A.on("rowupdated", this.onRowUpdated, this); + A.on("rowremoved", this.onRemove, this) + }, + onRefresh: function() { + var F = this.grid.store, + B; + var D = this.getSelections(); + this.clearSelections(true); + for (var C = 0, A = D.length; C < A; C++) { + var E = D[C]; + if ((B = F.indexOfId(E.id)) != -1) { + this.selectRow(B, true) + } + } + if (D.length != this.selections.getCount()) { + this.fireEvent("selectionchange", this) + } + }, + onRemove: function(A, B, C) { + if (this.selections.remove(C) !== false) { + this.fireEvent("selectionchange", this) + } + }, + onRowUpdated: function(A, B, C) { + if (this.isSelected(C)) { + A.onRowSelect(B) + } + }, + selectRecords: function(B, E) { + if (!E) { + this.clearSelections() + } + var D = this.grid.store; + for (var C = 0, A = B.length; C < A; C++) { + this.selectRow(D.indexOf(B[C]), true) + } + }, + getCount: function() { + return this.selections.length + }, + selectFirstRow: function() { + this.selectRow(0) + }, + selectLastRow: function(A) { + this.selectRow(this.grid.store.getCount() - 1, A) + }, + selectNext: function(A) { + if (this.hasNext()) { + this.selectRow(this.last + 1, A); + this.grid.getView().focusRow(this.last); + return true + } + return false + }, + selectPrevious: function(A) { + if (this.hasPrevious()) { + this.selectRow(this.last - 1, A); + this.grid.getView().focusRow(this.last); + return true + } + return false + }, + hasNext: function() { + return this.last !== false && (this.last + 1) < this.grid.store.getCount() + }, + hasPrevious: function() { + return !!this.last + }, + getSelections: function() { + return [].concat(this.selections.items) + }, + getSelected: function() { + return this.selections.itemAt(0) + }, + each: function(E, D) { + var C = this.getSelections(); + for (var B = 0, A = C.length; B < A; B++) { + if (E.call(D || this, C[B], B) === false) { + return false + } + } + return true + }, + clearSelections: function(A) { + if (this.locked) { + return + } + if (A !== true) { + var C = this.grid.store; + var B = this.selections; + B.each(function(D) { + this.deselectRow(C.indexOfId(D.id)) + }, this); + B.clear() + } else { + this.selections.clear() + } + this.last = false + }, + selectAll: function() { + if (this.locked) { + return + } + this.selections.clear(); + for (var B = 0, A = this.grid.store.getCount(); B < A; B++) { + this.selectRow(B, true) + } + }, + hasSelection: function() { + return this.selections.length > 0 + }, + isSelected: function(A) { + var B = typeof A == "number" ? this.grid.store.getAt(A) : A; + return (B && this.selections.key(B.id) ? true : false) + }, + isIdSelected: function(A) { + return (this.selections.key(A) ? true : false) + }, + handleMouseDown: function(D, F, E) { + if (E.button !== 0 || this.isLocked()) { + return + } + var A = this.grid.getView(); + if (E.shiftKey && this.last !== false) { + var C = this.last; + this.selectRange(C, F, E.ctrlKey); + this.last = C; + A.focusRow(F) + } else { + var B = this.isSelected(F); + if (E.ctrlKey && B) { + this.deselectRow(F) + } else { + if (!B || this.getCount() > 1) { + this.selectRow(F, E.ctrlKey || E.shiftKey); + A.focusRow(F) + } + } + } + }, + selectRows: function(C, D) { + if (!D) { + this.clearSelections() + } + for (var B = 0, A = C.length; B < A; B++) { + this.selectRow(C[B], true) + } + }, + selectRange: function(B, A, D) { + if (this.locked) { + return + } + if (!D) { + this.clearSelections() + } + if (B <= A) { + for (var C = B; C <= A; C++) { + this.selectRow(C, true) + } + } else { + for (var C = B; C >= A; C--) { + this.selectRow(C, true) + } + } + }, + deselectRange: function(C, B, A) { + if (this.locked) { + return + } + for (var D = C; D <= B; D++) { + this.deselectRow(D, A) + } + }, + selectRow: function(B, D, A) { + if (this.locked || (B < 0 || B >= this.grid.store.getCount())) { + return + } + var C = this.grid.store.getAt(B); + if (C && this.fireEvent("beforerowselect", this, B, D, C) !== false) { + if (!D || this.singleSelect) { + this.clearSelections() + } + this.selections.add(C); + this.last = this.lastActive = B; + if (!A) { + this.grid.getView().onRowSelect(B) + } + this.fireEvent("rowselect", this, B, C); + this.fireEvent("selectionchange", this) + } + }, + deselectRow: function(B, A) { + if (this.locked) { + return + } + if (this.last == B) { + this.last = false + } + if (this.lastActive == B) { + this.lastActive = false + } + var C = this.grid.store.getAt(B); + if (C) { + this.selections.remove(C); + if (!A) { + this.grid.getView().onRowDeselect(B) + } + this.fireEvent("rowdeselect", this, B, C); + this.fireEvent("selectionchange", this) + } + }, + restoreLast: function() { + if (this._last) { + this.last = this._last + } + }, + acceptsNav: function(C, B, A) { + return !A.isHidden(B) && A.isCellEditable(B, C) + }, + onEditorKey: function(F, E) { + var C = E.getKey(), + G, D = this.grid, + B = D.activeEditor; + var A = E.shiftKey; + if (C == E.TAB) { + E.stopEvent(); + B.completeEdit(); + if (A) { + G = D.walkCells(B.row, B.col - 1, -1, this.acceptsNav, this) + } else { + G = D.walkCells(B.row, B.col + 1, 1, this.acceptsNav, this) + } + } else { + if (C == E.ENTER) { + E.stopEvent(); + B.completeEdit(); + if (this.moveEditorOnEnter !== false) { + if (A) { + G = D.walkCells(B.row - 1, B.col, -1, this.acceptsNav, this) + } else { + G = D.walkCells(B.row + 1, B.col, 1, this.acceptsNav, this) + } + } + } else { + if (C == E.ESC) { + B.cancelEdit() + } + } + } + if (G) { + D.startEditing(G[0], G[1]) + } + } +}); +Ext.grid.CellSelectionModel = function(A) { + Ext.apply(this, A); + this.selection = null; + this.addEvents("beforecellselect", "cellselect", "selectionchange"); + Ext.grid.CellSelectionModel.superclass.constructor.call(this) +}; +Ext.extend(Ext.grid.CellSelectionModel, Ext.grid.AbstractSelectionModel, { + initEvents: function() { + this.grid.on("cellmousedown", this.handleMouseDown, this); + this.grid.getGridEl().on(Ext.isIE ? "keydown" : "keypress", this.handleKeyDown, this); + var A = this.grid.view; + A.on("refresh", this.onViewChange, this); + A.on("rowupdated", this.onRowUpdated, this); + A.on("beforerowremoved", this.clearSelections, this); + A.on("beforerowsinserted", this.clearSelections, this); + if (this.grid.isEditor) { + this.grid.on("beforeedit", this.beforeEdit, this) + } + }, + beforeEdit: function(A) { + this.select(A.row, A.column, false, true, A.record) + }, + onRowUpdated: function(A, B, C) { + if (this.selection && this.selection.record == C) { + A.onCellSelect(B, this.selection.cell[1]) + } + }, + onViewChange: function() { + this.clearSelections(true) + }, + getSelectedCell: function() { + return this.selection ? this.selection.cell : null + }, + clearSelections: function(B) { + var A = this.selection; + if (A) { + if (B !== true) { + this.grid.view.onCellDeselect(A.cell[0], A.cell[1]) + } + this.selection = null; + this.fireEvent("selectionchange", this, null) + } + }, + hasSelection: function() { + return this.selection ? true : false + }, + handleMouseDown: function(B, D, A, C) { + if (C.button !== 0 || this.isLocked()) { + return + } + this.select(D, A) + }, + select: function(F, C, B, E, D) { + if (this.fireEvent("beforecellselect", this, F, C) !== false) { + this.clearSelections(); + D = D || this.grid.store.getAt(F); + this.selection = { + record: D, + cell: [F, C] + }; + if (!B) { + var A = this.grid.getView(); + A.onCellSelect(F, C); + if (E !== true) { + A.focusCell(F, C) + } + } + this.fireEvent("cellselect", this, F, C); + this.fireEvent("selectionchange", this, this.selection) + } + }, + isSelectable: function(C, B, A) { + return !A.isHidden(B) + }, + handleKeyDown: function(F) { + if (!F.isNavKeyPress()) { + return + } + var E = this.grid, + J = this.selection; + if (!J) { + F.stopEvent(); + var I = E.walkCells(0, 0, 1, this.isSelectable, this); + if (I) { + this.select(I[0], I[1]) + } + return + } + var B = this; + var H = function(M, K, L) { + return E.walkCells(M, K, L, B.isSelectable, B) + }; + var C = F.getKey(), + A = J.cell[0], + G = J.cell[1]; + var D; + switch (C) { + case F.TAB: + if (F.shiftKey) { + D = H(A, G - 1, -1) + } else { + D = H(A, G + 1, 1) + } + break; + case F.DOWN: + D = H(A + 1, G, 1); + break; + case F.UP: + D = H(A - 1, G, -1); + break; + case F.RIGHT: + D = H(A, G + 1, 1); + break; + case F.LEFT: + D = H(A, G - 1, -1); + break; + case F.ENTER: + if (E.isEditor && !E.editing) { + E.startEditing(A, G); + F.stopEvent(); + return + } + break + } + if (D) { + this.select(D[0], D[1]); + F.stopEvent() + } + }, + acceptsNav: function(C, B, A) { + return !A.isHidden(B) && A.isCellEditable(B, C) + }, + onEditorKey: function(E, D) { + var B = D.getKey(), + F, C = this.grid, + A = C.activeEditor; + if (B == D.TAB) { + if (D.shiftKey) { + F = C.walkCells(A.row, A.col - 1, -1, this.acceptsNav, this) + } else { + F = C.walkCells(A.row, A.col + 1, 1, this.acceptsNav, this) + } + D.stopEvent() + } else { + if (B == D.ENTER) { + A.completeEdit(); + D.stopEvent() + } else { + if (B == D.ESC) { + D.stopEvent(); + A.cancelEdit() + } + } + } + if (F) { + C.startEditing(F[0], F[1]) + } + } +}); +Ext.grid.EditorGridPanel = Ext.extend(Ext.grid.GridPanel, { + clicksToEdit: 2, + isEditor: true, + detectEdit: false, + autoEncode: false, + trackMouseOver: false, + initComponent: function() { + Ext.grid.EditorGridPanel.superclass.initComponent.call(this); + if (!this.selModel) { + this.selModel = new Ext.grid.CellSelectionModel() + } + this.activeEditor = null; + this.addEvents("beforeedit", "afteredit", "validateedit") + }, + initEvents: function() { + Ext.grid.EditorGridPanel.superclass.initEvents.call(this); + this.on("bodyscroll", this.stopEditing, this, [true]); + if (this.clicksToEdit == 1) { + this.on("cellclick", this.onCellDblClick, this) + } else { + if (this.clicksToEdit == "auto" && this.view.mainBody) { + this.view.mainBody.on("mousedown", this.onAutoEditClick, this) + } + this.on("celldblclick", this.onCellDblClick, this) + } + this.getGridEl().addClass("xedit-grid") + }, + onCellDblClick: function(B, C, A) { + this.startEditing(C, A) + }, + onAutoEditClick: function(C, B) { + if (C.button !== 0) { + return + } + var E = this.view.findRowIndex(B); + var A = this.view.findCellIndex(B); + if (E !== false && A !== false) { + this.stopEditing(); + if (this.selModel.getSelectedCell) { + var D = this.selModel.getSelectedCell(); + if (D && D.cell[0] === E && D.cell[1] === A) { + this.startEditing(E, A) + } + } else { + if (this.selModel.isSelected(E)) { + this.startEditing(E, A) + } + } + } + }, + onEditComplete: function(B, D, A) { + this.editing = false; + this.activeEditor = null; + B.un("specialkey", this.selModel.onEditorKey, this.selModel); + var C = B.record; + var F = this.colModel.getDataIndex(B.col); + D = this.postEditValue(D, A, C, F); + if (String(D) !== String(A)) { + var E = { + grid: this, + record: C, + field: F, + originalValue: A, + value: D, + row: B.row, + column: B.col, + cancel: false + }; + if (this.fireEvent("validateedit", E) !== false && !E.cancel) { + C.set(F, E.value); + delete E.cancel; + this.fireEvent("afteredit", E) + } + } + this.view.focusCell(B.row, B.col) + }, + startEditing: function(F, B) { + this.stopEditing(); + if (this.colModel.isCellEditable(B, F)) { + this.view.ensureVisible(F, B, true); + var C = this.store.getAt(F); + var E = this.colModel.getDataIndex(B); + var D = { + grid: this, + record: C, + field: E, + value: C.data[E], + row: F, + column: B, + cancel: false + }; + if (this.fireEvent("beforeedit", D) !== false && !D.cancel) { + this.editing = true; + var A = this.colModel.getCellEditor(B, F); + if (!A.rendered) { + A.render(this.view.getEditorParent(A)) + }(function() { + A.row = F; + A.col = B; + A.record = C; + A.on("complete", this.onEditComplete, this, { + single: true + }); + A.on("specialkey", this.selModel.onEditorKey, this.selModel); + this.activeEditor = A; + var G = this.preEditValue(C, E); + A.startEdit(this.view.getCell(F, B), G) + }).defer(50, this) + } + } + }, + preEditValue: function(A, B) { + return this.autoEncode && typeof value == "string" ? Ext.util.Format.htmlDecode(A.data[B]) : A.data[B] + }, + postEditValue: function(C, A, B, D) { + return this.autoEncode && typeof C == "string" ? Ext.util.Format.htmlEncode(C) : C + }, + stopEditing: function(A) { + if (this.activeEditor) { + this.activeEditor[A === true ? "cancelEdit" : "completeEdit"]() + } + this.activeEditor = null + } +}); +Ext.reg("editorgrid", Ext.grid.EditorGridPanel); +Ext.grid.GridEditor = function(B, A) { + Ext.grid.GridEditor.superclass.constructor.call(this, B, A); + B.monitorTab = false +}; +Ext.extend(Ext.grid.GridEditor, Ext.Editor, { + alignment: "tl-tl", + autoSize: "width", + hideEl: false, + cls: "x-small-editor x-grid-editor", + shim: false, + shadow: false +}); +Ext.grid.PropertyRecord = Ext.data.Record.create([{ + name: "name", + type: "string" +}, "value"]); +Ext.grid.PropertyStore = function(A, B) { + this.grid = A; + this.store = new Ext.data.Store({ + recordType: Ext.grid.PropertyRecord + }); + this.store.on("update", this.onUpdate, this); + if (B) { + this.setSource(B) + } + Ext.grid.PropertyStore.superclass.constructor.call(this) +}; +Ext.extend(Ext.grid.PropertyStore, Ext.util.Observable, { + setSource: function(C) { + this.source = C; + this.store.removeAll(); + var B = []; + for (var A in C) { + if (this.isEditableValue(C[A])) { + B.push(new Ext.grid.PropertyRecord({ + name: A, + value: C[A] + }, A)) + } + } + this.store.loadRecords({ + records: B + }, {}, true) + }, + onUpdate: function(E, A, D) { + if (D == Ext.data.Record.EDIT) { + var B = A.data["value"]; + var C = A.modified["value"]; + if (this.grid.fireEvent("beforepropertychange", this.source, A.id, B, C) !== false) { + this.source[A.id] = B; + A.commit(); + this.grid.fireEvent("propertychange", this.source, A.id, B, C) + } else { + A.reject() + } + } + }, + getProperty: function(A) { + return this.store.getAt(A) + }, + isEditableValue: function(A) { + if (Ext.isDate(A)) { + return true + } else { + if (typeof A == "object" || typeof A == "function") { + return false + } + } + return true + }, + setValue: function(B, A) { + this.source[B] = A; + this.store.getById(B).set("value", A) + }, + getSource: function() { + return this.source + } +}); +Ext.grid.PropertyColumnModel = function(C, B) { + this.grid = C; + var D = Ext.grid; + D.PropertyColumnModel.superclass.constructor.call(this, [{ + header: this.nameText, + width: 50, + sortable: true, + dataIndex: "name", + id: "name", + menuDisabled: true + }, { + header: this.valueText, + width: 50, + resizable: false, + dataIndex: "value", + id: "value", + menuDisabled: true + }]); + this.store = B; + this.bselect = Ext.DomHelper.append(document.body, { + tag: "select", + cls: "x-grid-editor x-hide-display", + children: [{ + tag: "option", + value: "true", + html: "true" + }, { + tag: "option", + value: "false", + html: "false" + }] + }); + var E = Ext.form; + var A = new E.Field({ + el: this.bselect, + bselect: this.bselect, + autoShow: true, + getValue: function() { + return this.bselect.value == "true" + } + }); + this.editors = { + "date": new D.GridEditor(new E.DateField({ + selectOnFocus: true + })), + "string": new D.GridEditor(new E.TextField({ + selectOnFocus: true + })), + "number": new D.GridEditor(new E.NumberField({ + selectOnFocus: true, + style: "text-align:left;" + })), + "boolean": new D.GridEditor(A) + }; + this.renderCellDelegate = this.renderCell.createDelegate(this); + this.renderPropDelegate = this.renderProp.createDelegate(this) +}; +Ext.extend(Ext.grid.PropertyColumnModel, Ext.grid.ColumnModel, { + nameText: "Name", + valueText: "Value", + dateFormat: "m/j/Y", + renderDate: function(A) { + return A.dateFormat(this.dateFormat) + }, + renderBool: function(A) { + return A ? "true" : "false" + }, + isCellEditable: function(A, B) { + return A == 1 + }, + getRenderer: function(A) { + return A == 1 ? this.renderCellDelegate : this.renderPropDelegate + }, + renderProp: function(A) { + return this.getPropertyName(A) + }, + renderCell: function(A) { + var B = A; + if (Ext.isDate(A)) { + B = this.renderDate(A) + } else { + if (typeof A == "boolean") { + B = this.renderBool(A) + } + } + return Ext.util.Format.htmlEncode(B) + }, + getPropertyName: function(B) { + var A = this.grid.propertyNames; + return A && A[B] ? A[B] : B + }, + getCellEditor: function(A, E) { + var B = this.store.getProperty(E); + var D = B.data["name"], + C = B.data["value"]; + if (this.grid.customEditors[D]) { + return this.grid.customEditors[D] + } + if (Ext.isDate(C)) { + return this.editors["date"] + } else { + if (typeof C == "number") { + return this.editors["number"] + } else { + if (typeof C == "boolean") { + return this.editors["boolean"] + } else { + return this.editors["string"] + } + } + } + } +}); +Ext.grid.PropertyGrid = Ext.extend(Ext.grid.EditorGridPanel, { + enableColumnMove: false, + stripeRows: false, + trackMouseOver: false, + clicksToEdit: 1, + enableHdMenu: false, + viewConfig: { + forceFit: true + }, + initComponent: function() { + this.customEditors = this.customEditors || {}; + this.lastEditRow = null; + var B = new Ext.grid.PropertyStore(this); + this.propStore = B; + var A = new Ext.grid.PropertyColumnModel(this, B); + B.store.sort("name", "ASC"); + this.addEvents("beforepropertychange", "propertychange"); + this.cm = A; + this.ds = B.store; + Ext.grid.PropertyGrid.superclass.initComponent.call(this); + this.selModel.on("beforecellselect", function(E, D, C) { + if (C === 0) { + this.startEditing.defer(200, this, [D, 1]); + return false + } + }, this) + }, + onRender: function() { + Ext.grid.PropertyGrid.superclass.onRender.apply(this, arguments); + this.getGridEl().addClass("x-props-grid") + }, + afterRender: function() { + Ext.grid.PropertyGrid.superclass.afterRender.apply(this, arguments); + if (this.source) { + this.setSource(this.source) + } + }, + setSource: function(A) { + this.propStore.setSource(A) + }, + getSource: function() { + return this.propStore.getSource() + } +}); +Ext.grid.RowNumberer = function(A) { + Ext.apply(this, A); + if (this.rowspan) { + this.renderer = this.renderer.createDelegate(this) + } +}; +Ext.grid.RowNumberer.prototype = { + header: "", + width: 23, + sortable: false, + fixed: true, + menuDisabled: true, + dataIndex: "", + id: "numberer", + rowspan: undefined, + renderer: function(B, C, A, D) { + if (this.rowspan) { + C.cellAttr = "rowspan=\"" + this.rowspan + "\"" + } + return D + 1 + } +}; +Ext.grid.CheckboxSelectionModel = Ext.extend(Ext.grid.RowSelectionModel, { + header: "
       
      ", + width: 20, + sortable: false, + menuDisabled: true, + fixed: true, + dataIndex: "", + id: "checker", + initEvents: function() { + Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this); + this.grid.on("render", function() { + var A = this.grid.getView(); + A.mainBody.on("mousedown", this.onMouseDown, this); + Ext.fly(A.innerHd).on("mousedown", this.onHdMouseDown, this) + }, this) + }, + onMouseDown: function(C, B) { + if (C.button === 0 && B.className == "x-grid3-row-checker") { + C.stopEvent(); + var D = C.getTarget(".x-grid3-row"); + if (D) { + var A = D.rowIndex; + if (this.isSelected(A)) { + this.deselectRow(A) + } else { + this.selectRow(A, true) + } + } + } + }, + onHdMouseDown: function(C, A) { + if (A.className == "x-grid3-hd-checker") { + C.stopEvent(); + var B = Ext.fly(A.parentNode); + var D = B.hasClass("x-grid3-hd-checker-on"); + if (D) { + B.removeClass("x-grid3-hd-checker-on"); + this.clearSelections() + } else { + B.addClass("x-grid3-hd-checker-on"); + this.selectAll() + } + } + }, + renderer: function(B, C, A) { + return "
       
      " + } +}); +Ext.LoadMask = function(C, B) { + this.el = Ext.get(C); + Ext.apply(this, B); + if (this.store) { + this.store.on("beforeload", this.onBeforeLoad, this); + this.store.on("load", this.onLoad, this); + this.store.on("loadexception", this.onLoad, this); + this.removeMask = Ext.value(this.removeMask, false) + } else { + var A = this.el.getUpdater(); + A.showLoadIndicator = false; + A.on("beforeupdate", this.onBeforeLoad, this); + A.on("update", this.onLoad, this); + A.on("failure", this.onLoad, this); + this.removeMask = Ext.value(this.removeMask, true) + } +}; +Ext.LoadMask.prototype = { + msg: "Loading...", + msgCls: "x-mask-loading", + disabled: false, + disable: function() { + this.disabled = true + }, + enable: function() { + this.disabled = false + }, + onLoad: function() { + this.el.unmask(this.removeMask) + }, + onBeforeLoad: function() { + if (!this.disabled) { + this.el.mask(this.msg, this.msgCls) + } + }, + show: function() { + this.onBeforeLoad() + }, + hide: function() { + this.onLoad() + }, + destroy: function() { + if (this.store) { + this.store.un("beforeload", this.onBeforeLoad, this); + this.store.un("load", this.onLoad, this); + this.store.un("loadexception", this.onLoad, this) + } else { + var A = this.el.getUpdater(); + A.un("beforeupdate", this.onBeforeLoad, this); + A.un("update", this.onLoad, this); + A.un("failure", this.onLoad, this) + } + } +}; +Ext.ProgressBar = Ext.extend(Ext.BoxComponent, { + baseCls: "x-progress", + waitTimer: null, + initComponent: function() { + Ext.ProgressBar.superclass.initComponent.call(this); + this.addEvents("update") + }, + onRender: function(D, A) { + Ext.ProgressBar.superclass.onRender.call(this, D, A); + var C = new Ext.Template("
      ", "
      ", "
      ", "
      ", "
       
      ", "
      ", "
      ", "
      ", "
       
      ", "
      ", "
      ", "
      "); + if (A) { + this.el = C.insertBefore(A, { + cls: this.baseCls + }, true) + } else { + this.el = C.append(D, { + cls: this.baseCls + }, true) + } + if (this.id) { + this.el.dom.id = this.id + } + var B = this.el.dom.firstChild; + this.progressBar = Ext.get(B.firstChild); + if (this.textEl) { + this.textEl = Ext.get(this.textEl); + delete this.textTopEl + } else { + this.textTopEl = Ext.get(this.progressBar.dom.firstChild); + var E = Ext.get(B.childNodes[1]); + this.textTopEl.setStyle("z-index", 99).addClass("x-hidden"); + this.textEl = new Ext.CompositeElement([this.textTopEl.dom.firstChild, E.dom.firstChild]); + this.textEl.setWidth(B.offsetWidth) + } + if (this.value) { + this.updateProgress(this.value, this.text) + } else { + this.updateText(this.text) + } + this.setSize(this.width || "auto", "auto"); + this.progressBar.setHeight(B.offsetHeight) + }, + updateProgress: function(B, C) { + this.value = B || 0; + if (C) { + this.updateText(C) + } + var A = Math.floor(B * this.el.dom.firstChild.offsetWidth); + this.progressBar.setWidth(A); + if (this.textTopEl) { + this.textTopEl.removeClass("x-hidden").setWidth(A) + } + this.fireEvent("update", this, B, C); + return this + }, + wait: function(B) { + if (!this.waitTimer) { + var A = this; + B = B || {}; + this.waitTimer = Ext.TaskMgr.start({ + run: function(C) { + var D = B.increment || 10; + this.updateProgress(((((C + D) % D) + 1) * (100 / D)) * 0.01) + }, + interval: B.interval || 1000, + duration: B.duration, + onStop: function() { + if (B.fn) { + B.fn.apply(B.scope || this) + } + this.reset() + }, + scope: A + }) + } + return this + }, + isWaiting: function() { + return this.waitTimer != null + }, + updateText: function(A) { + this.text = A || " "; + this.textEl.update(this.text); + return this + }, + setSize: function(A, C) { + Ext.ProgressBar.superclass.setSize.call(this, A, C); + if (this.textTopEl) { + var B = this.el.dom.firstChild; + this.textEl.setSize(B.offsetWidth, B.offsetHeight) + } + return this + }, + reset: function(A) { + this.updateProgress(0); + if (this.textTopEl) { + this.textTopEl.addClass("x-hidden") + } + if (this.waitTimer) { + this.waitTimer.onStop = null; + Ext.TaskMgr.stop(this.waitTimer); + this.waitTimer = null + } + if (A === true) { + this.hide() + } + return this + } +}); +Ext.reg("progress", Ext.ProgressBar); \ No newline at end of file